我有一个稀疏矩阵我可以很容易地计算出和我想解决。我知道答案是与最小奇异值相关联的正确奇异向量,因此我可以使用 Lanczos(或现代花里胡哨版本之一)之类的东西来找到最小奇异值。但是,我看到很多人警告我 Lanczos 在数值上不稳定,尤其是对于秩不足的矩阵(我知道A通常应该比满秩少 1 ——也就是说,在无噪声的情况下,Ax=0应该有一个不平凡的解决方案)。我应该使用更聪明的东西吗?
在零空间中查找单个向量
计算科学
svd
零空间
2021-12-26 11:10:19
1个回答
如果您的稀疏矩阵不是太大并且您可以将其存储在内存中,您可以使用稀疏(秩显示)QR(或 LU,或 SVD)分解来确定矩阵的内核。
或者,如果您对算子的频谱有所了解,则可以对其进行转换——求解与 A' = A + λ I 的 λ 特征值相关的特征向量——逆)Lanczos 迭代。收敛速度取决于您正在求解的特征值(移位矩阵的最大/最小特征值)与频谱其余部分的分离。分离度越大,收敛速度越大。选择接近零可能会起作用;通常,对于移位和反转策略,移位参数被选择为接近所需的特征值,但不是精确的特征值。您可能必须小心条件问题,因为您必须反转移位矩阵;如果您只对使用 Krylov 子空间方法感兴趣,希望您有一个好的预处理器。
其它你可能感兴趣的问题