3. 矩阵与范数基础

在显式与隐式差分格式的稳定性分析中,我们反复遇到同一个问题:把误差向量 en 从第 n 层推进到第 n+1 层时,它会被放大还是被压制?写成矩阵形式就是 en+1 = G en,其中 G 称为放大矩阵(或迭代矩阵)。要回答"是否放大",就必须给向量和矩阵赋予"大小"的度量,这正是范数与谱半径的用武之地。本节把后续稳定性判据所需的工具集中梳理一遍,重点落在范数的相容性、诱导范数的计算,以及谱半径与范数之间的关系上。

向量范数:误差大小的度量

向量范数 ‖·‖ 是从 ℂm 到非负实数的映射,需满足正定性、齐次性与三角不等式。数值分析中最常用三种:

  • 1-范数:‖x‖1 = Σ|xi|,即分量绝对值之和,对应"总误差量"。
  • 2-范数:‖x‖2 = (Σ|xi|2)1/2,即欧氏长度,与能量、最小二乘直接相关。
  • ∞-范数:‖x‖∞ = maxi|xi|,即最大分量,对应"最坏单点误差"。

三者满足等价关系 ‖x‖∞ ≤ ‖x‖2 ≤ ‖x‖1 ≤ m‖x‖∞(m 为维数)。这个不等式在稳定性分析中很实用:若在某个范数下误差不增长,则在等价范数下误差至多增长一个与维数有关的常数因子,因此"稳定性"这一结论不因范数选择而本质改变,但放大常数的估计会不同。

矩阵范数与相容性

矩阵范数除了满足向量范数的三条公理外,还需满足次乘性(相容性):‖AB‖ ≤ ‖A‖‖B‖。这条性质是稳定性估计的命脉——只有它成立,才能把 ‖Gn‖ ≤ ‖G‖n 一步步推出来,从而得到 ‖en‖ ≤ ‖G‖n‖e0‖。若 ‖G‖ ≤ 1,误差被一致压制;若 ‖G‖ > 1,该估计只能给出指数上界,未必真实发散,但足以作为保守判据。

矩阵范数还须与向量范数相容:‖Ax‖ ≤ ‖A‖‖x‖。最自然的一类就是由向量范数诱导出来的算子范数:

‖A‖_p = max_{x≠0} ‖Ax‖_p / ‖x‖_p

它自动满足相容性,且是使 ‖Ax‖ ≤ ‖A‖‖x‖ 成立的最小矩阵范数。三种常用诱导范数有可直接计算的显式公式:

诱导范数计算公式几何含义
‖A‖1各列绝对值之和的最大值最大列和
‖A‖∞各行绝对值之和的最大值最大行和
‖A‖2σmax(A) = √λmax(A*A)最大奇异值

注意 ‖A‖2 不是最大特征值的模,而是最大奇异值;只有当 A 正规(如对称、正交)时二者才一致。这是初学者最易混淆之处。

谱半径与特征值分解

谱半径定义为特征值模的最大值:ρ(A) = maxi|λi(A)|。它刻画的是矩阵在"特征方向"上的长期放大率。核心结论是:

ρ(A) ≤ ‖A‖ 对任意相容矩阵范数成立;且 ρ(A) = inf‖·‖ ‖A‖,即谱半径是所有相容范数下范数的下确界。因此 ρ(A) < 1 是 An → 0 的充要条件,而 ‖A‖ < 1 只是充分条件。

若 A 可对角化,A = VΛV-1,则 An = VΛnV-1,于是 ‖An‖ ≤ κ(V)ρ(A)n,其中 κ(V) = ‖V‖‖V-1‖ 是特征向量矩阵的条件数。这解释了"瞬态增长"现象:即使 ρ(A) < 1,若 κ(V) 很大,前若干步误差仍可能先上升再衰减。对非正规矩阵,这一效应尤其显著,仅看谱半径会低估短期风险。

一个可手算的示例

设放大矩阵 G = [[0.8, 2.0], [0, 0.8]](上三角,特征值均为 0.8)。计算可得:ρ(G) = 0.8 < 1,长期收敛;但 ‖G‖∞ = max(2.8, 0.8) = 2.8 > 1,‖G‖1 = max(0.8, 2.8) = 2.8,‖G‖2 = σmax ≈ 2.04。若用范数判据会误判为"可能不稳定",而谱半径判据给出正确结论。反过来,若 G = [[0.6, 0.5],[0.5, 0.6]],对称,ρ = 1.1 > 1,‖G‖2 = 1.1,两种判据一致。这说明:范数判据保守但易算,谱半径判据精确但需特征值信息,实际分析中常先用范数快速筛查,再用谱半径或特征值分解确认。

放大矩阵 G 的三种度量与稳定性判据关系 向量范数 ‖x‖ 1-范数:Σ|xᵢ| 2-范数:√Σ|xᵢ|² ∞-范数:max|xᵢ| 度量误差向量大小 诱导矩阵范数 ‖G‖ ‖G‖₁ = 最大列和 ‖G‖∞ = 最大行和 ‖G‖₂ = σ_max(G) 满足 ‖Gx‖ ≤ ‖G‖‖x‖ 谱半径 ρ(G) ρ(G) = max|λᵢ(G)| ρ(G) ≤ ‖G‖ ρ(G) = inf‖G‖ 刻画长期放大率 诱导 下确界 稳定性判据的两种路径 充分条件:‖G‖ ≤ 1 → 误差不增长(保守、易算) 充要条件:ρ(G) < 1 → 误差趋于零(精确、需特征值) 示例:G = [[0.8, 2.0], [0, 0.8]] ρ(G) = 0.8 < 1(收敛) ‖G‖∞ = 2.8 > 1(范数判据保守误判)

实际计算中的操作要点

在编写稳定性分析代码时,建议按以下顺序处理。第一,明确放大矩阵的构造方式:对显式格式,G = I + Δt·L(L 为空间离散算子);对隐式格式,G = (I - Δt·L)-1。第二,优先计算 ‖G‖∞ 或 ‖G‖1,因为它们只需行和或列和,复杂度 O(m2),适合快速筛查。第三,若范数判据给出 ‖G‖ > 1 但接近 1,不要急于下"不稳定"结论,转而计算特征值:用 numpy.linalg.eigvals 得到谱半径,或用 numpy.linalg.svd 得到 ‖G‖2。第四,对非正规矩阵,额外估计 κ(V),判断是否存在瞬态增长风险。

实用提示:当 ρ(G) < 1 而 ‖G‖ > 1 时,说明矩阵非正规。此时可构造 Gε = G + εI 或使用相似变换 D-1GD 寻找使范数接近谱半径的等价范数,从而得到更紧的误差上界。这一技巧在分析对流占优问题的差分格式时尤为常用。