4. 线性方程组迭代解法与选型

直接法(如高斯消元、LU 分解)通过有限步运算得到精确解(在无舍入误差意义下),而迭代法从一个初始猜测出发,构造一串近似解,使其逐步逼近真解。对于工程中常见的大规模稀疏方程组——例如有限元离散后的刚度方程、热传导网格上的差分方程——系数矩阵动辄上万阶且绝大多数元素为零,直接法会因填充(fill-in)导致存储和计算量急剧膨胀,迭代法只需矩阵-向量乘,天然适合稀疏结构,因此成为工程求解的主力。

本节围绕四条主线展开:雅可比迭代、高斯-赛德尔迭代、SOR 方法、共轭梯度法,并给出收敛性判断与工程选型准则。

一、从分裂思想理解三种定常迭代

设方程组为 Ax = b。把系数矩阵分裂为 A = D − L − U,其中 D 为对角部分,−L 为严格下三角部分,−U 为严格上三角部分。三种经典迭代的区别,本质上就是"用哪部分旧信息、哪部分新信息"来构造下一步。

雅可比(Jacobi)迭代:只用上一轮的全体分量计算新值,

x_i^(k+1) = ( b_i − Σ_{j≠i} a_ij · x_j^(k) ) / a_ii

它的优点是各分量彼此独立,天然可并行;缺点是收敛通常最慢,且要求对角占优等条件较严。

高斯-赛德尔(Gauss-Seidel)迭代:计算第 i 个分量时,前面已更新的 x_1^(k+1) … x_{i−1}^(k+1) 立即投入使用,

x_i^(k+1) = ( b_i − Σ_{j<i} a_ij·x_j^(k+1) − Σ_{j>i} a_ij·x_j^(k) ) / a_ii

由于"边算边用",在同样条件下它通常比雅可比快约一倍,但失去了分量级并行性,且更新顺序会影响结果。

SOR(逐次超松弛):在高斯-赛德尔新值与旧值之间做外推,引入松弛因子 ω,

x_i^(k+1) = (1−ω)·x_i^(k) + ω·(高斯-赛德尔新值)

ω = 1 退化为高斯-赛德尔;1 < ω < 2 为超松弛,可显著加速;0 < ω < 1 为低松弛,用于抑制振荡。ω 的选取是 SOR 的关键,对典型模型问题存在最优值 ω_opt = 2 / (1 + √(1 − ρ_J²)),其中 ρ_J 为雅可比迭代矩阵的谱半径。工程中常先用小规模试算扫描 ω,再用于大规模问题。

二、共轭梯度法:Krylov 子空间路线

共轭梯度法(CG)不属于定常迭代,它专用于对称正定矩阵。其思想是在 Krylov 子空间 span{r₀, Ar₀, A²r₀, …} 中寻找使能量范数误差最小的解,每步沿一组 A-共轭方向前进,理论上 n 步内精确收敛,实际因舍入误差需按残差阈值停止。CG 每步只需一次矩阵-向量乘和少量向量内积,存储需求极低,是大型对称正定稀疏系统的首选。若矩阵非对称,则需改用 GMRES、BiCGSTAB 等 Krylov 方法。

三、收敛性判断

迭代 x^(k+1) = B x^(k) + f 收敛的充要条件是迭代矩阵谱半径 ρ(B) < 1。谱半径计算代价高,工程中常用充分条件快速判断:

  • 严格对角占优:若 |a_ii| > Σ_{j≠i}|a_ij| 对所有 i 成立,则雅可比与高斯-赛德尔均收敛。
  • 对称正定:A 对称正定时,高斯-赛德尔收敛;此时 CG 也适用。
  • 不可约弱对角占优:配合至少一行严格占优,同样保证收敛。

实际运行时还应设置三重停止准则:残差范数 ‖r^(k)‖ ≤ tol·‖b‖、相邻迭代增量足够小、以及最大迭代次数上限,防止病态问题下无限循环。

四、预处理技术简介

收敛速度取决于矩阵的条件数与特征值分布。预处理即用 M⁻¹A 替代 A 求解,其中 M 近似 A 且 M⁻¹v 易于计算。常见选择:对角预处理(Jacobi 预处理,最简单)、不完全 LU 分解(ILU)、对称超松弛预处理(SSOR)、以及多重网格预处理。好的预处理能把迭代次数从数千降到几十,是工程求解器的核心竞争力之一。

五、工程场景下的选型准则

选型不是背结论,而是按"矩阵性质—规模—精度—并行需求"逐层判断。下面这张决策图把关键判断路径与对应方法组织在一起,可作为实际选型的速查依据。

线性方程组迭代法选型决策路径 待解 Ax = b(稀疏大规模) A 对称正定? (有限元刚度阵常见) 是 共轭梯度法 CG + 对角/SSOR 预处理 否 严格对角占优? (差分格式常见) 是 定常迭代 雅可比 / 高斯-赛德尔 SOR(调 ω 加速) 否 预处理 Krylov 方法 GMRES / BiCGSTAB + ILU 统一停止准则与工程校验 残差 ‖r⁽ᵏ⁾‖ ≤ tol·‖b‖ | 相邻增量足够小 | 最大迭代次数上限 并行优先:雅可比、CG;串行小规模:高斯-赛德尔、SOR 谱半径 ρ(B) < 1 是收敛充要条件,对角占优/对称正定是常用充分条件

结合上图,工程选型可归纳为几条经验:

  • 对称正定且规模大:首选 CG 加对角或 SSOR 预处理;若条件数极差,升级到 ILU 预处理或代数多重网格。
  • 非对称或不定:用 GMRES(需重启控制内存)或 BiCGSTAB,配合 ILU 预处理。
  • 结构简单、对角占优的差分网格:高斯-赛德尔或 SOR 实现成本低、代码短,适合快速原型;SOR 的 ω 需试算确定。
  • 需要 GPU 并行:雅可比与 CG 的分量级/向量级并行更友好,高斯-赛德尔需红黑排序才能并行。
教学示例:对二维泊松方程五点差分格式(网格 100×100,约 10⁴ 未知量),雅可比迭代常需上万次,高斯-赛德尔约减半,SOR 在最优 ω 下可再降一个量级,而 CG 通常数百次内达到 10⁻⁶ 相对残差。以上为典型量级示意,具体次数随网格与容差变化,实际应以试算为准。
常见误区:把"迭代法一定比直接法快"当作定论。对中小规模稠密矩阵,直接法(LU/Cholesky)反而更稳更快;迭代法的优势建立在大规模稀疏、预处理有效、容差合理的前提上。此外,未检查收敛条件就盲目迭代,可能得到发散或停滞的"假解",务必监控残差曲线。

落地时建议形成固定流程:先判断矩阵对称性与对角占优性,选定候选方法;用小规模子问题试算,记录迭代次数与残差下降曲线;确定容差与最大迭代数;再投入全规模求解,并保留残差日志用于复盘。这样选型才有依据,而不是凭经验拍板。