LSE求解精度的预处理及其影响

计算科学 线性代数 条件数
2021-12-24 11:30:39

在我的数值分析课程中,我了解到预处理线性方程组的主要动机是提高 LSE 迭代求解器的收敛速度。

但是,对计算解决方案的精度有影响吗?

我记得关于高斯消元计算解的精度的结果,可以在Golub 和 Van Loan 的《矩阵计算》中找到(第 122 页)。条件数(相对于某些特定范数)确实会影响该算法计算的数值解的精度。

人们可能会期望类似的情况也适用于通过共轭梯度获得的解决方案。我认为我在计算实验中观察到了这一点。当我在未预处理的系统上运行共轭梯度方法(长时间)直到满足某个停止标准时,计算的解决方案仍然显示出高残差。所以我想知道较低的条件数是否不仅会导致较低的运行时间,还会导致计算解决方案中的残差(或错误)较低。请注意,这必然是一个数值稳定性问题,这要求我们使用不精确的算术。

(我在 math.SE 上问过同样的问题,但我认为这个网站可能更合适。)

1个回答

高斯消元的准确性不受条件数的限制。Trefethen 和 Bau(可能还有其他地方)有一个条件良好的矩阵示例,其中高斯消元法相对于矩阵大小呈指数不稳定。

现在对于迭代方法:CG 在预处理算子的能量范数中找到子空间上的最佳近似值。如果前置条件有效,那么您通常可以更准确地评估此规范。这不能保证:预处理器也是病态的,一般来说,我们只能评估ABx与精度成正比κ(A)κ(B), 不是κ(AB).

无论如何,预处理做了两件事:

  1. 它使解决方案在迭代早期出现的少量向量中得到很好的表示。
  2. 它使我们在子空间上评估最优性的范数更接近于误差范数,而不是残差范数。

您是希望误差小还是残差小取决于您。