2. 迭代求解器基础回顾

在进入收敛性分析与参数调优之前,有必要把迭代求解器的“家族谱系”重新梳理一遍。迭代法的共同思想是:不直接对矩阵做分解求精确解,而是从一个初值出发,构造一个能逐步逼近真解的序列。不同方法的差别,集中在如何构造修正量、每一步利用多少已有信息,以及在什么条件下保证收敛。理解这些差别,才能在后续章节中判断“为什么这个算例不收敛”“该换方法还是该调参数”。

线性迭代法:从分裂到 Krylov 子空间

求解线性方程组 Ax = b 时,经典定常迭代法基于矩阵分裂 A = M − N,把方程改写为 Mx^(k+1) = Nx^(k) + b,即 x^(k+1) = Gx^(k) + f,其中 G = M⁻¹N 为迭代矩阵。收敛的充要条件是谱半径 ρ(G) < 1,谱半径越小收敛越快。

  • Jacobi 法:取 M = D(对角部分),每个分量用上一轮的全部旧值更新,天然可并行。对严格对角占优矩阵收敛,但对强耦合问题往往很慢。
  • Gauss-Seidel 法:取 M = D + L(下三角部分),新算出的分量立即参与后续计算,通常比 Jacobi 快约一倍,但串行依赖强。对对称正定矩阵保证收敛。
  • SOR 法:在 Gauss-Seidel 基础上引入松弛因子 ω,更新式为 x_i^(k+1) = (1−ω)x_i^(k) + ω·x_i^GS。当 0 < ω < 2 时对对称正定矩阵收敛;ω = 1 退化为 Gauss-Seidel,ω > 1 为超松弛。最优 ω 与 Jacobi 迭代矩阵谱半径 ρ_J 相关,典型模型问题中 ω_opt = 2 / (1 + √(1 − ρ_J²))。

定常迭代法实现简单、内存占用低,但收敛速度对问题规模敏感——网格加密时谱半径趋近于 1,迭代次数急剧上升。这正是 Krylov 子空间方法登场的原因。

CG(共轭梯度法)适用于对称正定矩阵,在 Krylov 子空间 K_m(A, r₀) = span{r₀, Ar₀, …, A^(m−1)r₀} 中寻找使能量范数误差最小的解,理论上至多 n 步精确收敛。实际中收敛速度由条件数 κ(A) 控制,误差上界约为 2((√κ−1)/(√κ+1))^m。因此预处理(如不完全 Cholesky、Jacobi 缩放)几乎是必选项。

GMRES(广义最小残差法)面向非对称问题,在 Krylov 子空间中最小化残差 2-范数。它需要存储全部基向量,内存随迭代步数线性增长,通常配合重启策略 GMRES(m) 使用。重启会损失部分收敛性,m 太小可能停滞,太大则内存吃紧,这是工程中常见的权衡点。

非线性迭代:Newton 法与 Krylov 的结合

非线性方程组 F(x) = 0 的核心方法是 Newton 法:在当前点线性化,J(x_k)·Δx = −F(x_k),再更新 x_(k+1) = x_k + Δx,其中 J 为 Jacobian 矩阵。Newton 法在真解邻域内具有二次收敛性,但对初值敏感,且每步都要组装并求解一个线性系统。

当问题规模很大时,精确求解 Jacobian 线性系统代价过高,于是产生 Newton-Krylov 方法:外层用 Newton 迭代处理非线性,内层用 Krylov 方法(GMRES 等)非精确地求解线性子问题。关键控制量是“强迫项” η_k,它规定内层线性残差与非线性残差的比值上限:‖J·Δx + F‖ ≤ η_k‖F‖。远离解时取较大的 η_k(如 0.5 或 0.9)以节省内层迭代,接近解时收紧到 η_k ∝ ‖F‖,从而恢复二次收敛。此外,Jacobian 常以有限差分或无矩阵(matrix-free)方式作用在向量上,避免显式组装。

迭代求解器谱系:方法选择与收敛条件 线性迭代法 Ax = b 非线性迭代法 F(x) = 0 定常迭代:矩阵分裂 A = M − N Krylov 子空间:K_m(A, r₀) Jacobi M = D Gauss-Seidel M = D + L SOR 松弛因子 ω CG 对称正定 A GMRES(m) 非对称 A,重启 Newton 法:J(x_k)·Δx = −F(x_k) 内层 Krylov 非精确求解线性子问题 Newton-Krylov 强迫项 η_k 控制内层精度 收敛条件 ‖J·Δx + F‖ ≤ η_k‖F‖,η_k 随 ‖F‖ 收紧 定常法判据:ρ(G) < 1 | CG 判据:A 对称正定,κ(A) 决定速度 | GMRES:残差单调下降,重启可能停滞

收敛条件的对照与工程含义

把上述方法放在一起看,收敛条件可以归纳为三个层次。第一层是矩阵性质:Jacobi 需要严格对角占优或谱半径小于 1;Gauss-Seidel 与 SOR 对对称正定矩阵有保证;CG 严格要求对称正定;GMRES 对非奇异矩阵理论上可收敛,但实际速度取决于特征值分布。第二层是参数选择:SOR 的 ω、GMRES 的重启长度 m、Newton-Krylov 的强迫项 η_k,都直接改变收敛路径。第三层是数值实现:预处理质量、有限差分步长、残差计算方式,都会让“理论收敛”变成“实际停滞”。

一个实用的判断顺序:先确认矩阵是否对称正定(决定能否用 CG),再看条件数量级(决定是否需要强预处理),最后看非线性残差下降曲线是否出现“先快后平”——若出现,多半是内层线性求解精度不足或 Jacobian 近似太粗糙。

一个可操作的示例:同一问题的三种解法

考虑二维 Poisson 方程在 64×64 网格上的五点差分离散,得到对称正定矩阵,条件数约 O(h⁻²) ≈ 4000 量级。若用 Jacobi 迭代,谱半径接近 1 − O(h²),达到 1e−6 残差可能需要数万次迭代;改用 SOR 并取 ω ≈ 1.8,迭代次数可降到千次量级;若用带 Jacobi 预处理的 CG,通常在数百次内收敛。这组对比说明:方法选择带来的差距,往往比参数微调大一个数量级以上。因此调参前先问“方法是否匹配问题结构”,比盲目调 ω 或重启长度更有效。