我试图找到与大矩阵的第二小的特征值相对应的特征向量。是图拉普拉斯算子,具有以下结构:,其中D是对角矩阵,S和B是大型稀疏矩阵。S的维度为4,000,000 \times 10,000,000,但只有大约40,000,000个非零条目。B具有相似的规模和稀疏性。所以我可以快速执行矩阵向量乘法:Lv = Dv - S(B(S^\intercal v))。
目前我正在使用 Scipy(它调用在 ARPACK 中实现的 Arnoldi 算法)来查找的最小特征值和相应的特征向量。我不是直接找到L的最小特征对,而是找到M^{-1}的最大特征对,其中M = L + cI。(添加cI和反转不会改变特征向量。)为了计算M^{-1}v,其中v是任意向量,我使用共轭梯度算法。
但是这种方法很慢:Arnoldi 算法通常需要数百次迭代才能收敛,而每次 Arnoldi 迭代需要数百次共轭梯度 (CG) 迭代。由于我正在使用相同的设计矩阵解决数百个 CG 问题,因此我认为预处理可以提高效率。但是什么预处理器适合这个问题呢?我已经读到存在可证明的良好的拉普拉斯算子稀疏近似(“超解析器”),但是可以在不破坏其稀疏性的情况下对它们进行移位和反转,以形成的良好近似吗?或者是否有利用结构的预处理技术?
非常感谢。