我有一个对称的半正定矩阵,即拉普拉斯算子,我想知道当我使用 CG 求解器时会发生什么,这是一种用于正定矩阵的算法。
当矩阵只有半正定时会发生什么?
我可以通过以某种方式减去特征值 0 的特征向量来避免问题吗?
对于拉普拉斯算子,我知道特征值 0 的特征向量,因为它们是域的连通分量的指示向量。
我知道有一些数值技巧,比如在主对角线上添加一个小值,但我想这会在值太大时使解决方案变得更糟,或者当值太小时算法仍然不稳定。
我有一个对称的半正定矩阵,即拉普拉斯算子,我想知道当我使用 CG 求解器时会发生什么,这是一种用于正定矩阵的算法。
当矩阵只有半正定时会发生什么?
我可以通过以某种方式减去特征值 0 的特征向量来避免问题吗?
对于拉普拉斯算子,我知道特征值 0 的特征向量,因为它们是域的连通分量的指示向量。
我知道有一些数值技巧,比如在主对角线上添加一个小值,但我想这会在值太大时使解决方案变得更糟,或者当值太小时算法仍然不稳定。
您首先必须确保您的系统是可解的:如果右侧发生这种情况与内核正交. 如果有一个维度为 1 的内核跨越,你需要有. 如果不是这样,那么回到建模阶段,问问自己你所做的是否有意义。
奇异系统的迭代方法的收敛通常是棘手的,但对于半正定矩阵和 CG 来说都很好:CG 将收敛到你的奇异系统而不需要任何修改。更准确地说,它将收敛到与核正交的唯一解(),这也是最小范数。
如需证明,请参阅https://arxiv.org/abs/1809.00793。直观地,发生的事情是,在适当的基础正交变化之后,您正在求解系统
和肯定的。在这种形式中,看到 CG 产生的所有迭代在它们的第二个块中都有一个零并不复杂:, 对于每个. 此外,迭代与通过将 CG 应用于(非奇异)线性系统得到的迭代一致.
在数值上,您可能需要重新正交化每隔几步确保您的迭代与内核保持正交。