科学仿真 · 从零学起 第 2 / 8 节

第 IV–VI 讲 · 范数与稳定性:数值的裁判语言

"这个算法稳不稳定""这个问题病不病态"——要下判断就得先有尺子。第 IV-VI 讲造尺子:向量范数、矩阵范数、扰动理论,以及全书最重要的稳定性定义。

范数:长度的公理化

向量范数满足正定性、齐次性、三角不等式。常用的:

$$\|\mathbf{x}\|_2 = \sqrt{\sum x_i^2}, \quad \|\mathbf{x}\|_1 = \sum |x_i|, \quad \|\mathbf{x}\|_\infty = \max|x_i|$$

诱导矩阵范数 $\|A\| = \max_{\mathbf{x}\ne 0}\frac{\|A\mathbf{x}\|}{\|\mathbf{x}\|}$。2-范数诱导的就是谱范数 $\|A\|_2 = \sigma_{\max}(A)$(最大奇异值),Frobenius 范数 $\sqrt{\sum a_{ij}^2}$ 不是诱导范数但与奇异值天然挂钩:$\|A\|_F^2 = \sum\sigma_i^2$。

SVD:提前出场的主角

任何矩阵都有奇异值分解 $A = U\Sigma V^T$。第 IV-V 讲只用它做三件事:定义 $\|A\|_2$、给出条件数 $\kappa(A) = \sigma_1/\sigma_n$、证明正交矩阵把 2-范数保持不变。SVD 的完整算法要到 Lecture 4 与第 XXXI 讲才给,但几何直觉现在就要建立:矩阵 = 把单位球变成椭球的变换,奇异轴就是椭球的轴。

算法稳定性:相对误差的放大链

问题的条件数描述问题本身对扰动的敏感度:

$$\text{相对误差放大} \approx \kappa(A)\cdot\frac{\text{数据的相对误差}}{}$$

算法的向后稳定性描述算法:算得的解是"带小扰动的邻近问题的精确解"。黄金结论:向后稳定算法 + 良态问题 = 可信结果;病态问题($\kappa$ 大)神仙算法也救不了。注意:高斯消元不通向后稳定(增长因子可能失控),而 Householder QR 稳定——这就是第 III 部分重头讲 QR 的原因。

原文要点:Lecture 12 定义向后稳定性为本课程的核心概念:"算法不必算对原问题,只要算对附近的问题,且'附近'以机器精度为量级";Lecture 15 用 $\kappa(A)=\sigma_1/\sigma_n$ 串联条件与误差,并强调 $\kappa$ 是问题属性,与算法无关。

老师的提醒

  • "结果不对"先分类:$\kappa$ 大(换模型/正则化)还是算法不稳(换算法)?两类问题用两类药。
  • 条件数用于矩阵求逆与解方程;特征值、多项式求根各有自己的条件数,不要混用。

自检

  • 向后稳定的严格含义是什么?
  • 为什么说条件数是"问题的属性"?
  • Frobenius 范数与奇异值的关系?

更深一层:向后稳定性的"哲学红利"

向后稳定(backward stability)的定义初读拗口——"算得的是邻近问题的精确解"——但它有个深刻的哲学红利:它把数值误差从算法身上摘下来,挂到数据上。一个向后稳定的算法求解 $\kappa = 10^8$ 的问题给出 8 位有效数字,你不会抱怨算法(它已无可挑剔),只会意识到数据本身只值 8 位。这套归因框架在工程汇报里极其好用:"我们的求解器向后稳定;结果的离散度来自测量噪声与模型条件数,不来自计算。"——把责任切干净,是成熟数值团队的标志。

范数选择也值得玩味:向后误差在 2-范数、F-范数、$\infty$-范数下的常数不同。Householder QR 的界用 2-范数最漂亮(正交不变性);LU 的增长因子分析用 $\infty$-范数方便。选择让界最紧的范数是误差分析的隐藏手艺。

推导细读:条件数 $\kappa_2 = \sigma_1/\sigma_n$ 的两条推导路

路径一(SVD 几何):$A$ 把单位球映成椭球,最长半轴 $\sigma_1$、最短 $\sigma_n$,条件数 = 椭球的"扁度"。输入扰动在短轴方向的分量被放大 $\sigma_1/\sigma_n$ 倍。路径二(算子范数):$\kappa = \|A\|\|A^{-1}\|$,用 $\|A\|_2 = \sigma_1$、$\|A^{-1}\|_2 = 1/\sigma_n$ 直接得出。两路径合流的瞬间("扁度 = 范数积")是 SVD 统一力的展示:秩、范数、距离、角度,全部由奇异值记账。

工程应用点:$\kappa_2$ 可以免费监控——迭代法每步残差、特征值算法的 Ritz 值间隙都附带条件信息;LAPACK 的 $x^{-1}$ 类例程返回 RCOND 估计。看到 RCOND 小于 $10^{-10}$ 就该停下来问"这问题建模对吗",而不是硬着头皮接受结果。

在真实世界里:条件数问题的三大病灶与处方

病态矩阵的三类典型来源与对症处理:

  • 量纲混杂(一列是米、一列是毫米):列缩放/平衡——病态是假的,缩掉即可;
  • 物理冗余(两列近似线性相关:重复测量、共线特征):删列、PCA 降维或岭正则化——信息本来就不独立,伪逆给最小范数解;
  • 模型本质病态(第一类积分方程、微分方程反演):正则化(Tikhonov、TSVD)+ 正则参数选择(L 曲线、GCV)——这是数学性的病,只能"用偏差换稳定"。

先分类再开药,是处理病态问题的第一纪律。

常见误区与辨析

  • "残差小 = 解好":$\|b - A\hat x\|$ 小只保证 $\hat x$ 是近似解,前向误差还要乘 $\kappa$;病态问题残差漂亮而解全错的例子俯拾皆是。
  • "双精度比单精度一定好":$\kappa = 10^{16}$ 时双精度也归零;先解决条件数,再谈精度。
  • "正交变换太贵":与初等变换差 2 倍 flop,换来无条件稳定——绝大多数场景这是最便宜的保险。

专题深入:向后稳定性的"哲学红利"完整展开

向后稳定性的定义值得从工程汇报角度再读一遍:"算得的是邻近问题的精确解"。它的哲学红利是把数值误差从算法身上摘下来挂到数据上——一个向后稳定的算法求解 $\kappa = 10^8$ 的问题给出 8 位有效数字,你不会抱怨算法(它已无可挑剔),只会意识到数据本身只值 8 位。这套归因框架在工程汇报里极其好用:"我们的求解器向后稳定;结果的离散度来自测量噪声与模型条件数,不来自计算。"——把责任切干净,是成熟数值团队的标志。

条件数 vs 稳定性的分工表:$\kappa$ 大(问题病态)→ 换模型/正则化;算法不稳(向后误差大)→ 换算法。两类问题用两类药——这个分工表是数值诊断的第一反应。

数学细节展开:增长因子的"理论反例 vs 实践安全"

高斯消元的增长因子 $\rho = \max|u_{ij}|/\max|a_{ij}|$ 理论上可达 $2^{n-1}$(Wilkinson 的构造反例),实践中极罕见——这是数值线性代数里"理论反例与实践安全"的经典错位。部分主元在实践中几乎总稳的原因:反例需要精心构造的"病态巧合",随机矩阵与物理矩阵几乎永不撞上。稳健主义者的保险:随机扰一下输入或做增长监控——用 O(n²) 的比较换 O(2^n) 的理论风险是工程上的划算买卖。

工程案例细节:条件数监控的"免费红利"

条件数的工程红利:LAPACK 的 RCOND 估计(廉价条件数估计)应该成为每个解方程流程的标配——看到 RCOND < 10⁻¹⁰ 就该停下来问"这问题建模对吗"。病态的三类来源(量纲混杂 → 列缩放/平衡;物理冗余 → 删列/PCA/岭回归;本质病态 → Tikhonov/截断 SVD)各有对症药——先分类再开药是处理病态问题的第一纪律。

常见误区与辨析(补充)

  • "结果不对 = 算法错":先量 $\kappa$——病态问题神仙算法也救不了。
  • "残差小 = 解好":$\|b - A\hat x\|$ 小只保证近似解,前向误差还要乘 $\kappa$。

例题

$A = \begin{pmatrix} 3 & 0\\ 0 & 0.5\end{pmatrix}$。求 $\kappa_2(A)$;用 $b = (1, 1)^T$ 的解对 $b$ 的扰动 $\delta b = (0, 10^{-4})^T$ 的放大倍数验证。

解答

条件数:$\sigma_1 = 3$,$\sigma_2 = 0.5$,

$$\kappa_2(A) = \frac{3}{0.5} = 6$$

验证:$A\mathbf{x} = \mathbf{b} \Rightarrow \mathbf{x} = (1/3,\ 2)^T$。扰动后 $\delta\mathbf{x} = A^{-1}\delta b = (0,\ 2\times10^{-4})^T$。

$$\frac{\|\delta x\|}{\|x\|} = \frac{2\times10^{-4}}{\sqrt{1/9+4}} \approx 9.7\times10^{-5}, \qquad \frac{\|\delta b\|}{\|b\|} = \frac{10^{-4}}{\sqrt2} \approx 7.1\times10^{-5}$$

放大倍数 $\approx 1.37 \le \kappa = 6$ ✓(界是上界,实际取决于方向——扰动恰好撞上小奇异方向时才会达到 $\kappa$ 量级)。

本页是《数值线性代数》第 2 节的学习笔记:为便于初学,讲解、例题与要点概括均为本站原创整理,公式与章节定位供对照原书使用。

📑 本书目录 经典研读