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

计算科学 线性代数 迭代法 收敛 克雷洛夫法
2021-12-21 04:26:37

在计算科学中,我们经常遇到大型线性系统,我们需要通过一些(有效的)方法来求解,例如通过直接或迭代方法。如果我们关注后者,我们如何确定求解大型线性系统的迭代方法在实践中是收敛的?

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

但是,如何在实践中建立收敛?做了什么?

1个回答

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

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

我们假设用户正在为以下方程组求解x

Ax=b

我们称当前猜测x^,并定义残差r^基于预处理的风格:

  1. 左预处理(P1(Axb))

    r^=P1(Ax^b)

  2. 无/正确的预处理(AP1Px=b)

    r^=Ax^b

收敛标准

  1. Absolute Tolerance - 当残差的范数小于预定义常数时,满足绝对公差标准atol
    r^atol
  2. 相对容差 - 当残差的范数小于右侧范数一个预定义常数的因子时,满足相对容差标准:rtol
    r^rtolb
  3. 其他标准- 由于检测到小步长或负曲率,迭代求解也可以收敛。

分歧标准

  1. 最大迭代次数 - 求解器可以进行的迭代次数受最大迭代次数的限制。如果在达到最大迭代次数时没有满足其他条件,则监视器返回发散。

  2. 残差 NaN - 如果在任何时候残差评估为 NaN,则求解器返回发散。

  3. 残差范数的发散 如果在任何点残差范数大于右侧范数一个预定义常数的因子,则监视器返回发散: dtol

    r^dtolb

  4. Solver Breakdown Krylov 方法本身可以在检测到奇异矩阵或预条件子时发出分歧信号。