Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

2.8 小结与常见陷阱

本节属“补充篇 · 数值线性代数工具箱”:2.x 是补充篇内部编号,不是课堂第 2 章的节号。课堂第 2 章是线性方程组的解法。

本章把第一章的「尺子」升级成了一整套几何工具箱。这一节做三件事:给出工具选型的全景对照表(哪个问题该用哪个工具)、汇总八条高频陷阱(多数是「公式看着对、数值上必错」的类型)、画出本章与第一章、后续章节的连接点。

这一节与各节「常见错误清单」的关系

八个陷阱是各节错误清单的汇总层,不是新内容:每条都补上实测数字与出处链接,供复习时一次扫完,不替代正文。第一次读到某条陷阱,回到对应小节看完整上下文。

本章到底在做什么 · 一句话版

如果把第一章比作「造尺子」(定义范数、条件数、误差),第二章就是「造工具箱」——有了尺子之后,还需要能算的工具:把矩阵拆开(QR、SVD)、把病态问题隔离(截断伪逆)、把误差控制在可接受范围(正交变换不放大误差)。全章的核心立场只有一句话:正交变换是免费的,非正交变换要付条件数的代价。 记住这一条,八个陷阱里至少五条不用背就能推出来。

2.8.1 八个工具的全景对照

工具选型表 · 遇到问题查这里
我要做什么 首选工具 备选 关键公式 数值风险
造一组标准正交基 Householder(稠密) / Givens(稀疏) MGS A=QRA=QR CGS 的 cond2\mathrm{cond}^2 灾难
解超定最小二乘 QR SVD(秩亏) Rx=QTbR\boldsymbol{x}=Q^{\mathrm T}\boldsymbol{b} 正态方程的 cond2\mathrm{cond}^2
秩亏最小二乘 SVD 伪逆 列主元 QR x=A+b\boldsymbol{x}=A^{+}\boldsymbol{b} 截断阈值的选择
判断「解有多准」 cond(A)⋅u\mathrm{cond}(A)\cdot u 迭代精化实测 k≈log⁡10condk\approx\log_{10}\mathrm{cond} 用残差当误差
算四个基本子空间 SVD 列主元 QR ui,vi\boldsymbol{u}_i,\boldsymbol{v}_i 手算行简化丢有效数字
求主特征值 幂法 + Rayleigh 商 eigsh(稀疏大规模) 速度 ∣λ2/λ1∣2\lvert\lambda_2/\lambda_1\rvert^2 不作归一化会溢出
定位全部特征值 Gerschgorin 圆盘(快速围栏) QR 迭代 ∣λ−aii∣≤ri\lvert\lambda-a_{ii}\rvert\le r_i 把包含区间当精确值
低秩逼近 / 降维 截断 SVD 随机化 SVD(超大规模) ∥A−Ak∥2=σk+1\lVert A-A_k\rVert_2=\sigma_{k+1} 不中心化就做 PCA

一句话总纲: 凡是涉及「正交结构」的问题,答案都在 QR 或 SVD 里;凡是涉及「有多准」的问题,答案都在 条件数里;凡是涉及「低维结构」的问题,答案都在 奇异值谱里。

2.8.2 八个陷阱(每个都有实测证据)

陷阱清单 · 自查八条

八条按性质分三组:算法选错(1、2、5——数学上等价,数值上不等价);判据用错(3、6、7——拿残差当误差、按默认阈值定数值秩、拿谱半径当范数);概念误读(4、8——病态与重特征值的敏感性都是问题属性,换算法救不了)。

1. 在生产代码里用经典 Gram–Schmidt(CGS)。 CGS 与 MGS 只差「内积用原始列还是当前列」,数值上却差一个 cond\mathrm{cond}(10810^{8} 倍量级);正确做法是改用 MGS 或 Householder。实测:n=16n=16 时 CGS 的 ∥QTQ−I∥2=6.55\lVert Q^{\mathrm T}Q-I\rVert_2=6.55(完全不正交),MGS 是 4.7×10−44.7\times10^{-4},Householder 是 3.0×10−153.0\times10^{-15}。判据:cond≳u−1/2≈108\mathrm{cond}\gtrsim u^{-1/2}\approx10^{8} 时 CGS 彻底失效(2.3.3、实验一)。

2. 用正态方程解病态最小二乘。 正态方程里的 ATAA^{\mathrm T}A 把条件数平方。实测:cond=6×1010\mathrm{cond}=6\times10^{10} 时,正态方程误差 2828(真值 11,完全崩溃),QR 仍是 2.2×10−62.2\times10^{-6}(2.3.6、实验二)。判据:cond≳108\mathrm{cond}\gtrsim10^{8} 必须换 QR / SVD。

3. 用残差当误差的代理指标。 实测构造:残差 ∥r∥∞/∥b∥∞=2.5×10−12\lVert\boldsymbol{r}\rVert_\infty/\lVert\boldsymbol{b}\rVert_\infty=2.5\times10^{-12},解的相对误差却达 50%50\%(例 2.4.4)。正确判据是 cond(A)⋅∥r∥/∥b∥\mathrm{cond}(A)\cdot\lVert\boldsymbol{r}\rVert/\lVert\boldsymbol{b}\rVert,不是残差本身;求解器返回的残差只说明「算法向后稳定」,不说明结果准。

4. 以为病态可以用换算法解决。 同一病态矩阵,Cholesky、QR、SVD 的误差量级相同(都是 cond⋅u\mathrm{cond}\cdot u):实测 Hilbert 12 阶无论用哪种解法,误差都是 0.220.22(实验二)。病态是问题的属性(1.2.6):换算法救不了,只能重述问题或提高精度。

5. 对 ATAA^{\mathrm T}A 做特征值分解来「算 SVD」。 数学上等价,数值上是灾难:cond(ATA)=cond(A)2\mathrm{cond}(A^{\mathrm T}A)=\mathrm{cond}(A)^2,直接丢掉一半有效数字。永远用 np.linalg.svd(A)(Golub–Kahan 直接作用在 AA 上),不要 eigh(A.T @ A)。

6. 不截断伪逆、不按噪声水平定数值秩。 实测:给矩阵加 10−910^{-9} 的噪声后,matrix_rank 默认阈值判出 2020,按噪声阈值只有 33——判错 6 倍多(例 2.6.5 后的思考、实验三)。正确做法是按噪声水平定数值秩、截断伪逆:未截断的伪逆会放大 1/σmin⁡1/\sigma_{\min},与直接求逆同样危险。

7. 用 ρ(A)\rho(A) 当 ∥A∥\lVert A\rVert,或以为 ρ<1\rho\lt1 就每步收缩。 ρ(A)≤∥A∥\rho(A)\le\lVert A\rVert 是不等式,不是等式:N=(1100001)N=\begin{pmatrix}1&amp;1000\\0&amp;1\end{pmatrix} 的 ρ=1\rho=1、∥N∥2≈1000\lVert N\rVert_2\approx1000(差 3 个数量级)。非正规矩阵还会出现「瞬态增长」——谱半径 ρ<1\rho\lt1 只保证最终衰减,有限步可能先涨(例 2.5.6)。稳妥判据是 ∥A∥<1\lVert A\rVert\lt1(1.3.5 定理 1.3.6)。

8. 以为重特征值也能算准。 非正规矩阵的 kk 重特征值对 O(ε)O(\varepsilon) 扰动移动 O(ε1/k)O(\varepsilon^{1/k}):实测 t=10−12t=10^{-12} 时移动 10−610^{-6}(t\sqrt t),对称矩阵在同量扰动下只移动 t2=10−24t^2=10^{-24}——差 101810^{18} 倍(2.5.5、实验四)。重特征值的这种敏感性是固有病态,任何算法都救不了。

2.8.3 与前后章节的连接

本章的前身与四个去向

从第一、二章接过来的三件工具:

  • 范数与条件数(1.3、2.4)→ 本章用得最多的一把「尺子」;
  • 单位舍入误差 uu 与浮点公理(1.2.5)→ 所有误差分析的常数;
  • conditioning ≠ stability(1.2.6)→ 本章 2.4.4、2.5.5 两次重演。

四个去向(章号均链到全书路线图,表中「具体用途」一列是本章工具在这些章里的落点):

本章内容 去向 具体用途
QR 分解、正交变换 第 3 章 线性方程组直接法 LU 与 QR 的稳定性对比、主元策略
最小二乘、QR、条件数 第 4 章 最小二乘与 QR Householder / Givens 的工程实现、Tikhonov 正则化
投影、∥H∥<1\lVert H\rVert\lt1、谱半径 第 5 章 迭代法 Jacobi / Gauss–Seidel / SOR 的收敛判据、Krylov 子空间
特征值、Rayleigh 商、SVD 第 6 章 特征值与奇异值计算 幂法、反幂法、QR 方法、Arnoldi / Lanczos
低秩逼近、PCA、数值秩 第 12 章 最优化与随机方法 矩阵补全、随机化算法、降维

2.8.4 自查清单

本章的公式与结论已汇总到公式与结论卡,术语与定义位置见术语索引,「三句话带走」见全章总结。这里只留一份自测清单,用来检验你是否真会用,而不只是记住了。

本节自查清单 · 六条

学完补充篇后,你应该能不看笔记回答以下六个问题;答不出,就回对应小节重读:

  1. ☐ 为什么 Householder 比 CGS 好?在什么条件数下 CGS 彻底失效?(答不出 → 回 2.3.3)
  2. ☐ 正态方程的条件数为什么是原问题的平方?什么时候必须换 QR?(答不出 → 回 2.3.6)
  3. ☐ 为什么残差小不代表解准?正确的误差界是什么?(答不出 → 回 2.4.4)
  4. ☐ SVD 的几何意义是什么?奇异值代表什么?(答不出 → 回 2.6)
  5. ☐ 为什么不能对 ATAA^TA 做特征值分解来算 SVD?(答不出 → 回陷阱 5)
  6. ☐ ρ(A)<1\rho(A)&lt;1 为什么不保证每步都收缩?非正规矩阵的「瞬态增长」是什么?(答不出 → 回 2.5.6)