在零空间中查找单个向量

计算科学 svd 零空间
2021-12-26 11:10:19

我有一个稀疏矩阵A我可以很容易地计算出AxAx我想解决我知道答案是与最小奇异值相关联的正确奇异向量,因此我可以使用 Lanczos(或现代花里胡哨版本之一)之类的东西来找到最小奇异值。但是,我看到很多人警告我 Lanczos 在数值上不稳定,尤其是对于秩不足的矩阵(我知道A通常应该比满秩少 1 ——也就是说,在无噪声的情况下,Ax=0应该有一个不平凡的解决方案)。我应该使用更聪明的东西吗?min(||Ax||) s.t. ||x||=1AAx=0

1个回答

如果您的稀疏矩阵不是太大并且您可以将其存储在内存中,您可以使用稀疏(秩显示)QR(或 LU,或 SVD)分解来确定矩阵A的内核。

或者,如果您对算子的频谱有所了解,则可以对其进行转换——求解与 A' = A + λ I 的 λ 特征值相关的特征向量——逆)Lanczos 迭代。收敛速度取决于您正在求解的特征值(移位矩阵的最大/最小特征值)与频谱其余部分的分离。分离度越大,收敛速度越大。选择λA=A+λIλ接近零可能会起作用;通常,对于移位和反转策略,移位参数被选择为接近所需的特征值,但不是精确的特征值。您可能必须小心条件问题,因为您必须反转移位矩阵;如果您只对使用 Krylov 子空间方法感兴趣,希望您有一个好的预处理器。