在实践中,如何确定大型线性系统的迭代方法是收敛的?


11

在计算科学中,我们经常遇到大型线性系统,我们需要通过某些(有效的)手段(例如,直接方法或迭代方法)对其进行求解。如果我们专注于后者,那么在实践中如何确定求解大型线性系统的迭代方法是收敛的?

显然,我们可以进行反复试验分析(请参阅为什么我的迭代线性求解器不收敛?),并依靠可以通过证明保证收敛或具有良好经验基础的迭代方法(例如CG和GMRES等Krylov子空间方法)分别用于对称和非对称系统)。

但是,在实践中如何建立融合?怎么办?


1
好问题!当您说“建立融合”时,您是说“确定解决方案正在融合”还是“确定将要发生融合”?我知道,例如,PETSc KSP对象具有一些用于测试收敛性的默认技术(错误准则正在减少,最大迭代次数)。这是您要找的答案吗?
阿隆·艾玛迪亚

@aron:我认为看到解决两个问题的答案会很有趣。
艾伦·恩格西格·卡鲁普

Answers:


6

对于自然界中出现的许多偏微分方程,特别是具有强非线性或各向异性的偏微分方程,选择合适的预处理器会对迭代方法收敛迅速,收敛缓慢或根本不收敛产生重大影响。已知具有快速有效的预处理器的问题示例包括强椭圆偏微分方程,其中多重网格方法经常实现快速收敛。有很多测试可以用来评估收敛性。在这里,我将以PETSc中的功能为例,因为它可以说是最古老,最成熟的库,用于迭代求解线性(和非线性方程)的稀疏系统。

PETSc使用一个称为KSPMonitor的对象来监视迭代求解器的进度,并确定该求解器是否收敛或发散。监控器使用四个不同的标准来决定是否暂停。有关此处讨论的更多详细信息,请参见KSPGetConvergedReason()的手册页。

X

一种X=b

X^[R^
  1. P-1个一种X-b

    [R^=P-1个一种X^-b
  2. 一种P-1个PX=b

    [R^=一种X^-b

收敛准则

  1. 一种ŤØ
    [R^一种ŤØ
  2. [RŤØ
    [R^[RŤØb
  3. 其他条件 -由于检测到较小的步长或负曲率,迭代求解也可以收敛。

发散标准

  1. 最大迭代次数-求解器可以进行的迭代次数以最大迭代次数为上限。如果达到最大迭代次数时未满足其他任何条件,则监视器将返回分歧。

  2. 残差NaN-如果残差在任何时候都等于NaN,则求解器将返回偏差。

  3. dŤØ

    [R^dŤØb
  4. 求解器分解如果Krylov方法检测到奇异矩阵或前置条件,则它本身可以发出发散信号。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.