2. 线性方程组求解基础回顾

在进入数值病态诊断之前,有必要把线性方程组求解的“地基”重新夯实一遍。许多后续出现的病态现象、迭代不收敛、残差与误差背离等问题,根源往往不在算法本身,而在于对问题表示、解的存在唯一性条件以及直接法与迭代法适用边界的理解不够清晰。本节围绕四个核心问题展开:方程组如何用矩阵统一表示、解在什么条件下存在且唯一、直接法与迭代法的本质区别,以及残差与误差这两个极易混淆却决定诊断方向的概念。

一、矩阵表示:把方程组压缩成一个对象

一个含 n 个未知量、m 个方程的线性方程组,可以写成 Ax = b 的形式。其中 A 是 m×n 的系数矩阵,x 是 n 维未知向量,b 是 m 维右端向量。这种表示的价值不只是书写简洁,更在于它把“逐个方程”的视角切换为“矩阵与向量的作用”视角:求解就是寻找一个向量 x,使 A 对它的线性变换结果恰好等于 b。

以三元方程组为例:

2x₁ +  x₂ -  x₃ =  3
 x₁ + 3x₂ + 2x₃ = 10
4x₁ -  x₂ + 5x₃ =  7

其矩阵表示为 A = [[2,1,-1],[1,3,2],[4,-1,5]],b = [3,10,7]T。在数值计算中,我们通常还会构造增广矩阵 [A|b],因为高斯消元等直接法正是在增广矩阵上做行变换。需要强调的是,矩阵表示同时隐含了“行视角”(每个方程是一个约束)和“列视角”(b 是 A 各列向量的线性组合,组合系数就是 x)。列视角对理解解的存在性尤其关键。

二、解的存在唯一性:三个层次的条件

判断方程组是否有解、解是否唯一,可以按以下逻辑推进。首先看 b 是否落在 A 的列空间内:若 b 不能由 A 的列向量线性组合得到,则方程组无解(矛盾方程组)。其次,若 b 在列空间内,解的唯一性取决于 A 的零空间:零空间只含零向量时解唯一,否则有无穷多解。

对工程中最常见的方阵情形(m = n),上述条件可归结为 A 非奇异,即 det(A) ≠ 0,等价于 A 满秩、列向量线性无关。此时对任意 b 都存在唯一解 x = A-1b。但必须提醒:理论上非奇异 与 数值上可可靠求解 是两回事。一个矩阵可能 det(A) 极小但非零,此时它“有唯一解”,却可能因舍入误差被放大到面目全非——这正是后续病态诊断要处理的问题。因此存在唯一性是定性判断,条件数才是定量刻画。

记忆要点:无解看 b 是否在列空间;多解看零空间是否非平凡;方阵唯一解看是否满秩。三者是层层递进的判断链,而不是互相独立的三个结论。

三、直接法与迭代法:两条求解路线

直接法的思路是“有限步内得到(在精确算术下)精确解”。典型代表是高斯消元及其变体 LU 分解:把 A 分解为下三角 L 与上三角 U 的乘积,先解 Ly = b(前代),再解 Ux = y(回代)。对 n 阶稠密矩阵,计算量约为 O(n³)。直接法的优点是稳健、对良态问题结果可靠;缺点是存储与计算随规模增长快,且对病态矩阵同样会暴露精度问题。

迭代法的思路是“从一个初值出发,逐步逼近”。雅可比、高斯-赛德尔、共轭梯度等都属于此类。它不直接分解矩阵,而是利用矩阵的稀疏结构反复做矩阵-向量乘,单步代价低,适合大规模稀疏问题。但迭代法有收敛性门槛:例如雅可比法要求系数矩阵严格对角占优或谱半径条件满足,否则可能发散。选择哪条路线,取决于矩阵规模、稀疏性、是否良态以及对精度的要求,而不是简单地认为“迭代法更高级”。

线性方程组求解的两条路线与残差/误差关系 Ax = b 矩阵表示 · 判断存在唯一性 直接法(LU 分解) 有限步 · O(n³) · 稠密稳健 Ly = b 前代 → Ux = y 回代 得到计算解 x̂ 迭代法(Jacobi/CG) 逐步逼近 · 稀疏友好 · 需收敛条件 x⁽ᵏ⁺¹⁾ = G·x⁽ᵏ⁾ + c 收敛判据:‖x⁽ᵏ⁺¹⁾−x⁽ᵏ⁾‖ 或残差 计算解 x̂(近似解) 与真解 x* 存在差距 残差 r = b − A·x̂(可计算) 误差 e = x* − x̂(通常未知)

四、残差与误差:诊断病态的两把尺子

设真解为 x*,数值方法得到的计算解为 x̂。定义误差 e = x* − x̂,衡量计算解离真解有多远;定义残差 r = b − Ax̂,衡量计算解代入方程后“差多少才平衡”。两者关系为 r = Ae,即残差是误差经矩阵 A 变换后的结果。

关键区别在于可获取性:r 可以直接算出来,因为 A、b、x̂ 都已知;而 e 依赖未知的真解 x*,实际中无法直接得到。于是人们常用残差来间接判断精度,但这一步在病态问题上会失效。举例说明:设 A = [[1,1],[1,1.0001]],b = [2,2.0001]T,真解为 x* = [1,1]T。若计算解为 x̂ = [2,0]T,则残差 r = b − Ax̂ = [0, 0.0001]T,其范数仅约 1×10⁻⁴,看起来“残差很小”;但误差 e = [−1,1]T,范数约 1.41,相对误差高达 141%。残差小到万分之一,误差却超过 100%,这就是病态矩阵的典型表现:A 接近奇异,把微小的残差放大成了巨大的误差。

诊断原则:残差小不等于解准确。当条件数很大时,必须结合条件数估计或对残差做后向误差分析,而不能仅凭 ‖r‖ 小就判定求解成功。反之,残差大通常说明解确实有问题,这一方向的判断是可靠的。

五、把基础概念串成诊断思路

回顾以上内容,可以得到一条清晰的实践脉络:先用矩阵表示统一问题,再通过秩与行列式判断解的存在唯一性,据此选择直接法或迭代法;求解得到 x̂ 后,计算残差 r 作为第一道检查,同时估计矩阵条件数作为第二道检查。若残差小且条件数适中,可认为结果可信;若残差小但条件数极大,则必须警惕“残差小、误差大”的陷阱,这正是后续病态诊断章节要深入处理的核心矛盾。基础概念的价值,正在于它们为这条诊断链提供了每一个判断节点的依据。