矩阵条件数会影响迭代线性求解器的精度吗?

计算科学 线性代数 数值分析 线性求解器
2021-11-24 09:17:32

关于条件编号,我有一个相当具体的问题。我运行的 FEM 模拟具有多个长度尺度,这导致矩阵中最大条目和最小条目之间存在巨大差异。在某些情况下,条件数可以高达 10^15。

在数值分析中,我经常看到条件数的误差范围,因为它适用于使用直接方法计算的解决方案中的误差。我的好奇心是这种逻辑是否适用于迭代型求解器(如 CG 或 GMRES)中的错误。我知道收敛速度受矩阵特征值的影响,并且在运行此类问题时我确实注意到巨大的速度损失。但是,我不确定准确性。任何帮助,将不胜感激。

2个回答

病态条件是方程组的一个特征,而不是用于求解方程组的算法的一个特征。如果您的系统状况不佳(1015),那么您可以期望系统的解决方案对问题数据的任何扰动都极为敏感,即使解决方案是使用直接因式分解以极高的精度(例如 500 位)算术完成的。

您的迭代方法不太可能在任何合理的时间内收敛到一个解决方案。即使您愿意等待几个世纪,您得到的解决方案仍然对问题数据中的任何扰动极为敏感。

我们应该在这里更精确。你能给出的最简单的估计是

||xx||=||A1A(xx)||||A1||||bAx||
因此,如果您使用残差终止迭代,您可能会偏离||A1||, 对于相对残差
κ(A)=||A||||A1||
所以你可以简单估计你丢失了多少位数
logκ.