对于大小为300,000 * 300,000的对称稀疏方阵,在任何语言或包中在一个小时左右内找到10个最小特征值及其对应的特征向量的最佳方法是什么。
Lanczos算法在Hermitian矩阵上运算,是找到最低和最大特征值和相应特征向量的一种好方法。注意,真正的对称矩阵是Hermitian的定义。 Lanczos需要O(N)
存储以及大致O(N)
时间来评估极端特征值/特征向量。这与强力对角化形成对比,后者需要O(N^2)
存储和O(N^3)
运行时间。出于这个原因,Lanczos算法为许多以前在计算上不可行的问题提供了可能的近似解。
Here is a useful link到加州大学戴维斯分校的网站,该网站列出了许多语言/包中的Lanczos实现,包括FORTRAN,C / C ++和MATLAB。