syntax.garden

A3-数值线性代数

A3-数值线性代数

数值线性代数

这讲讲什么:把「解方程、最小二乘、求特征值」从纸上的精确推导,变成机器上真能跑完、并且知道误差有多大的算法。核心工具只有两类:矩阵分解(LU / QR / Cholesky)与迭代法(Jacobi / SOR / 幂法 / 共轭梯度)。
前置:09 讲(矩阵乘法与分块)、10 讲(可逆)、20 讲(特征值与可对角化)、22 讲(内积与范数)、23 讲(Gram–Schmidt)、27 讲(正算子)、29 讲(奇异值与条件数)。A1 篇的高斯消元是本文 LU 一节的前身,读过更顺。
一句话:理论问「解存不存在、唯不唯一」,数值计算问「用有限位浮点数、几步能算到几位有效数字」;后一个问题的答案由两个不同的量决定——矩阵的条件数(问题有多敏感)与算法的稳定性(方法会不会自己放大误差)。


一、为什么需要它

1.1 同一个方程组,两种算法差 10¹⁰ 年

取一个 25×2525\times25 的非奇异方程组 Ax=bAx=b。Cramer 法则写得漂亮:

xi=det⁡Aidet⁡A,i=1,…,nx_i=\frac{\det A_i}{\det A},\qquad i=1,\dots,n

其中 AiA_i 是把 AA 的第 ii 列换成 bb。照定义硬算行列式(完全展开),一共要 (n−1)(n+1)!(n-1)(n+1)! 次乘法。n=25n=25 时这是

24×26!≈9.7×102724\times 26!\approx 9.7\times10^{27}

次乘法。一台每秒 101010^{10} 次浮点运算的机器要跑 3×10103\times10^{10} 年——宇宙年龄的两倍多。而同一个方程组,高斯消去法的乘法数是

∑i=1n(i−1)(i+1)=n(n+1)(2n+1)6−n\sum_{i=1}^{n}(i-1)(i+1)=\frac{n(n+1)(2n+1)}{6}-n

n=25n=25 时等于 55005500 次,不到一秒。

这不是「优化」,是「可行性」

一个算法是 O(n!)O(n!) 还是 O(n3)O(n^3),差别不在快慢,在能不能算。
你以后遇到的矩阵是 10310^3 到 10610^6 阶,任何指数级算法连一行都跑不完。

1.2 机器里没有「精确」

双精度浮点数用 53 位二进制尾数,机器精度

ε=2−53≈1.11×10−16\varepsilon=2^{-53}\approx 1.11\times10^{-16}

每一次四则运算的结果都被悄悄乘上一个 1+δ1+\delta,∣δ∣≤ε|\delta|\le\varepsilon。由此有三件事必须记住:

  1. 1+10−171+10^{-17} 存不下来,它被存成 11。这个「差一点」在后面会要命(见 3.2 节的小主元)。
  2. 相近的数相减会吃掉有效位。1.000000001−1=10−91.000000001-1=10^{-9},两个 10 位数相减,结果只剩 1 位有效数字。
  3. 误差会沿着运算链累积并放大,放大的倍数由矩阵决定,不由你写代码的习惯决定。

1.3 为什么「求逆矩阵」在实践里几乎没人用

理论上 x=A−1bx=A^{-1}b 天经地义,AA 可逆时这就是唯一解。实践里没人这么干,三条原因,每条都能量化:

(一)求解这一步慢一个 nn 倍。 解一个右端项:先花 O(2n3/3)O(2n^3/3) 做一次 LU 分解,再花 O(2n2)O(2n^2) 前代加回代。求 A−1A^{-1}:要么对 e1,…,ene_1,\dots,e_n 解 nn 次,总代价约 2n3/3+2n3≈2.7n32n^3/3+2n^3\approx2.7n^3;要么按伴随矩阵硬算,更贵。关键差距在三角形那一步:一次解是 2n22n^2,求逆是 2n32n^3,正好差 nn 倍。 n=103n=10^3 时前者约 2×1062\times10^{6} 次运算,后者约 2×1092\times10^{9}。

真正要紧的不是这点常数:你通常只需要 A−1bA^{-1}b,不需要 A−1A^{-1}。 付了 nn 倍的代价,换来一个你根本不会去看的矩阵。

(二)稀疏结构被毁掉。 三对角矩阵的逆通常是稠密的。你手上有一个 10610^6 阶、每条对角线都非零的矩阵,存它只要 3×1063\times10^6 个数;存它的逆要 101210^{12} 个数,8 TB。

(三)求逆不能改善条件数。 这一点最容易被误解:κ(A−1)=κ(A)\kappa(A^{-1})=\kappa(A)。病态问题求了逆还是病态,只是多绕一道、多叠一层舍入。

「残差小」不等于「解准」

用双精度解 1212 阶 Hilbert 方程组 Hx=bHx=b(b=H⋅1b=H\cdot\mathbf{1},精确解全是 11),算出来的解满足

∥b−Hx^∥∞∥b∥∞≈1.4×10−16,∥x^−1∥∞∥1∥∞≈0.70\frac{\|b-H\hat x\|_\infty}{\|b\|_\infty}\approx 1.4\times10^{-16},\qquad \frac{\|\hat x-\mathbf{1}\|_\infty}{\|\mathbf 1\|_\infty}\approx 0.70

残差小到机器精度,解错了 70%。 残差衡量的是「x^\hat x 是某个附近方程组的解」,不是「x^\hat x 接近真解」。两者之间隔着一个 κ(A)\kappa(A)。

1.4 两个必须分开的概念:病态与不稳定

这一节最重要的一句话:

概念 属于谁 判据 你能做什么
病态(ill-conditioned) 问题 κ(A)\kappa(A) 很大 换公式、换模型、加正则化;算法救不了
不稳定(unstable) 算法 误差被算法放大 换算法(例如加主元选取)

一个良态的矩阵可以被一个不稳定的算法算得面目全非——第三节的小主元例子就是:κ∞(A)≈16\kappa_\infty(A)\approx16,四位有效数字的算术,算出来的解第一位就错了。反过来,Hilbert 矩阵是病态的,换任何算法都救不回来。

判断该怪谁的方法

拿同一个问题跑两个不同算法(比如不选主元的 LU 与选主元的 LU)。结果差得多 → 至少有一个算法不稳定;两个都给不出可信数字 → 问题本身病态。


二、定义与最小例子

2.1 范数与条件数

向量范数(22 讲)搬到矩阵上,最常用的四个:

∥A∥1=max⁡1≤j≤n∑i=1n∣aij∣,∥A∥∞=max⁡1≤i≤n∑j=1n∣aij∣\|A\|_1=\max_{1\le j\le n}\sum_{i=1}^{n}|a_{ij}|,\qquad \|A\|_\infty=\max_{1\le i\le n}\sum_{j=1}^{n}|a_{ij}|

∥A∥2=λmax⁡(ATA),∥A∥F=(∑i,j∣aij∣2)1/2\|A\|_2=\sqrt{\lambda_{\max}(A^{\mathsf T}A)},\qquad \|A\|_F=\Big(\sum_{i,j}|a_{ij}|^2\Big)^{1/2}

∥A∥1\|A\|_1 是「绝对值最大的列和」,∥A∥∞\|A\|_\infty 是「绝对值最大的行和」,这两个能手算。∥A∥2\|A\|_2 就是 29 讲的最大奇异值 σmax⁡=λmax⁡(ATA)\sigma_{\max}=\sqrt{\lambda_{\max}(A^{\mathsf T}A)}——注意它既不是最大特征值、也不是谱半径,除非 AA 半正定(那时 σk=λk\sigma_k=\lambda_k 且全非负)。对称只能保证 ∣λk∣|\lambda_k| 是奇异值,即 ∥A∥2=max⁡∣λk∣=ρ(A)\|A\|_2=\max|\lambda_k|=\rho(A),仍不等于 λmax⁡\lambda_{\max}——例如 A=diag⁡(1,−3)A=\operatorname{diag}(1,-3):∥A∥2=3\|A\|_2=3,而 λmax⁡=1\lambda_{\max}=1。

条件数定义为

κ(A)=∥A∥⋅∥A−1∥\kappa(A)=\|A\|\cdot\|A^{-1}\|

它满足 κ(A)≥1\kappa(A)\ge 1(因为 1=∥I∥=∥AA−1∥≤∥A∥∥A−1∥1=\|I\|=\|AA^{-1}\|\le\|A\|\|A^{-1}\|)。κ\kappa 小叫良态,大叫病态。注意 κ\kappa 依赖你选哪个范数,κ2\kappa_2 与 κ∞\kappa_\infty 可以差几倍,但「大不大」的结论通常一致。

条件数管什么?两个基本不等式:

∥x−x^∥∥x∥≤κ(A) ∥b−b^∥∥b∥\frac{\|x-\hat x\|}{\|x\|}\le \kappa(A)\,\frac{\|b-\hat b\|}{\|b\|}

右端项的相对扰动被放大最多 κ\kappa 倍。若连 AA 本身有扰动 EE,则

∥x−x^∥∥x∥≤κ(A)1−κ(A)∥E∥/∥A∥(∥E∥∥A∥+∥δb∥∥b∥)\frac{\|x-\hat x\|}{\|x\|}\le \frac{\kappa(A)}{1-\kappa(A)\|E\|/\|A\|}\left(\frac{\|E\|}{\|A\|}+\frac{\|\delta b\|}{\|b\|}\right)

这就是「有效数字会掉几位」的定量版本:κ≈10k\kappa\approx10^k 意味着大约损失 kk 位十进制有效数字。 双精度有 16 位,所以 κ≈1016\kappa\approx10^{16} 的矩阵在双精度下一位都不对(1.3 节的 Hilbert 例子正是如此)。

2.2 三种三角分解

LU 分解:把 AA 拆成一个单位下三角 LL 与一个上三角 UU,

A=LUA=LU

于是 Ax=bAx=b 变成两步三角形方程组:Ly=bLy=b(前代,O(n2)O(n^2))与 Ux=yUx=y(回代,O(n2)O(n^2))。

带主元的 LU:一般矩阵不保证 A=LUA=LU 存在(某个顺序主子式为零就卡住)。引进置换矩阵 PP(单位矩阵换行得到的矩阵,满足 P−1=PTP^{-1}=P^{\mathsf T}、det⁡P=±1\det P=\pm1),写成

PA=LUPA=LU

PP 的作用是把「绝对值最大的元素」换到当前主元位置。部分主元(partial pivoting)只在当前列里挑最大;全主元(complete pivoting)在整个右下子块里挑最大,更稳但比较本身就要 O(n3)O(n^3),代价太高,实践中几乎只用部分主元。

Cholesky 分解:AA 对称正定时(27 讲),存在对角元为正的下三角 LL 使

A=LLTA=LL^{\mathsf T}

它不需要选主元:Cholesky 只做「开平方 + 除法」,永远不构造需要互相比较的乘数,所以没有「小主元」这回事;而正定性保证每一步开方的数都为正,计算不会中断。乘法的另一半优势在运算量(见 3.4 节的对比)。

QR 分解:A=QRA=QR,QQ 正交(QTQ=IQ^{\mathsf T}Q=I),RR 上三角。m≥nm\ge n 时写成 A=Q(R0)A=Q\begin{pmatrix}R\\0\end{pmatrix}。它的价值在于正交变换不改变 2 范数:∥Ax−b∥2=∥QRx−b∥2=∥Rx−QTb∥2\|Ax-b\|_2=\|QRx-b\|_2=\|Rx-Q^{\mathsf T}b\|_2,于是最小二乘问题(24 讲)直接化成解一个上三角方程组 Rx=c1Rx=c_1。

2.3 两种造 QQ 的办法

Householder 变换:取单位向量 ww,令

H=I−2wwTH=I-2ww^{\mathsf T}

HH 对称、正交、H2=IH^2=I,几何上是「关于过原点且垂直于 ww 的平面的镜面反射」。给定 x≠0x\ne0,取

v=x+sign⁡(x1)∥x∥2e1,H=I−2vTvvvTv=x+\operatorname{sign}(x_1)\|x\|_2e_1,\qquad H=I-\frac{2}{v^{\mathsf T}v}vv^{\mathsf T}

就有 Hx=−sign⁡(x1)∥x∥2e1Hx=-\operatorname{sign}(x_1)\|x\|_2e_1:一次反射把 xx 的后面所有分量清零。用 nn 次反射就把 AA 打成上三角。

Givens 旋转:只在第 i,ki,k 两个坐标上转一下,

G(i,k,θ)=(1cs⋱−sc1),c2+s2=1G(i,k,\theta)=\begin{pmatrix}1&&&&\\&c&&s&\\&&\ddots&&\\&-s&&c&\\&&&&1\end{pmatrix},\qquad c^2+s^2=1

取 c=xi/xi2+xk2c=x_i/\sqrt{x_i^2+x_k^2}、s=xk/xi2+xk2s=x_k/\sqrt{x_i^2+x_k^2},就只把 xkx_k 一个分量清零。一次只杀一个元素,比 Householder 慢,但对带状、稀疏矩阵可以只转需要的地方,反而省。

2.4 迭代法的统一写法

把 AA 拆成 A=D−L−UA=D-L-U(DD 是对角部分,L,UL,U 分别是严格下、上三角部分的相反数),任何定常迭代都写成

xk+1=Bxk+gx_{k+1}=Bx_k+g

误差满足 x−xk+1=B(x−xk)x-x_{k+1}=B(x-x_k),于是 x−xk=Bk(x−x0)x-x_k=B^k(x-x_0)。收敛 ⟺ Bk→0B^k\to0 ⟺ 谱半径 ρ(B)<1\rho(B)<1。三种经典取法:

方法 迭代矩阵 BB 一句话
Jacobi BJ=D−1(L+U)B_J=D^{-1}(L+U) 全用旧值算新分量
Gauss–Seidel BGS=(D−L)−1UB_{GS}=(D-L)^{-1}U 新算出的分量立刻用上
SOR Lω=(D−ωL)−1((1−ω)D+ωU)L_\omega=(D-\omega L)^{-1}\big((1-\omega)D+\omega U\big) 在旧值与 GS 值之间取加权平均,ω∈(0,2)\omega\in(0,2)

ω=1\omega=1 就是 GS,ω>1\omega>1 叫超松弛(加速),ω<1\omega<1 叫低松弛。ω∉(0,2)\omega\notin(0,2) 时必然发散,因为 det⁡Lω=(1−ω)n\det L_\omega=(1-\omega)^n 给出 ρ(Lω)≥∣1−ω∣≥1\rho(L_\omega)\ge|1-\omega|\ge1。

2.5 一个贯穿全篇的矩阵

后面所有分解、所有迭代,都拿同一个矩阵算,你才能看出不同工具的视角差别。取

A=(2−10−12−10−12)A=\begin{pmatrix}2&-1&0\\-1&2&-1\\0&-1&2\end{pmatrix}

它是一维 Poisson 矩阵:把 u′′=fu''=f 在等距网格上用二阶差分离散,就得到它(乘以 −1/h2-1/h^2)。化学里的扩散方程、材料的稳态热传导,离散后都是它的高维推广。

先确认它是对称正定的,用手算顺序主子式:2>02>0,det⁡(2−1−12)=3>0\det\begin{pmatrix}2&-1\\-1&2\end{pmatrix}=3>0,det⁡A=4>0\det A=4>0。三个全正,由 27 讲的判据,AA 正定。

它的特征值有闭式:

λk=2−2cos⁡kπ4,k=1,2,3⟹λ=2−2, 2, 2+2\lambda_k=2-2\cos\frac{k\pi}{4},\qquad k=1,2,3\quad\Longrightarrow\quad \lambda=2-\sqrt2,\ 2,\ 2+\sqrt2

即约 0.5858, 2, 3.41420.5858,\ 2,\ 3.4142。于是

κ2(A)=2+22−2=3+22≈5.83\kappa_2(A)=\frac{2+\sqrt2}{2-\sqrt2}=3+2\sqrt2\approx5.83

而 ∥A∥∞=4\|A\|_\infty=4,∥A−1∥∞=2\|A^{-1}\|_\infty=2,所以 κ∞(A)=8\kappa_\infty(A)=8。两个都是精确值,后面拿来对账。

它的逆也干净:

A−1=14(321242123)A^{-1}=\frac14\begin{pmatrix}3&2&1\\2&4&2\\1&2&3\end{pmatrix}


三、几个必须自己算一遍的结论

3.1 LU 手算:Doolittle 一遍到底

Doolittle 的规矩是「LL 对角元取 11」。按列推进,第 kk 步用 UU 的第 kk 行去消 AA 下面各行。

第一步,u11=a11=2u_{11}=a_{11}=2,u12=−1u_{12}=-1,u13=0u_{13}=0;乘数 l21=a21/u11=−1/2l_{21}=a_{21}/u_{11}=-1/2,l31=0l_{31}=0。

第二步,把第 11 行乘 −1/2-1/2 加到第 22 行:新 (2,2)(2,2) 元 =2−12=32=2-\frac12= \frac32,新 (2,3)(2,3) 元 =−1−0=−1=-1-0=-1。故 u22=32u_{22}=\frac32,u23=−1u_{23}=-1,l32=a32(1)/u22=(−1)/(32)=−23l_{32}=a^{(1)}_{32}/u_{22}=(-1)/(\frac32)=-\frac23。

第三步,u33=2−(−23)(−1)=2−23=43u_{33}=2-\big(-\frac23\big)(-1)=2-\frac23=\frac43。

于是

L=(100−12100−231),U=(2−10032−10043)L=\begin{pmatrix}1&0&0\\-\tfrac12&1&0\\0&-\tfrac23&1\end{pmatrix},\qquad U=\begin{pmatrix}2&-1&0\\0&\tfrac32&-1\\0&0&\tfrac43\end{pmatrix}

乘回去验一遍:(2,2)(2,2) 元 =(−12)(−1)+32=2=(-\frac12)(-1)+\frac32=2 ✓,(3,3)(3,3) 元 =(−23)(−1)+43=2=(-\frac23)(-1)+\frac43=2 ✓。主元是 2, 32, 432,\ \frac32,\ \frac43,全为正。

解 Ax=bAx=b,取 b=(1,0,1)Tb=(1,0,1)^{\mathsf T}(正好是 A1A\mathbf 1,所以真解是 1\mathbf 1)。前代 Ly=bLy=b:

y1=1,y2=0−(−12)(1)=12,y3=1−(−23)(12)=43y_1=1,\qquad y_2=0-\Big(-\tfrac12\Big)(1)=\tfrac12,\qquad y_3=1-\Big(-\tfrac23\Big)\Big(\tfrac12\Big)=\tfrac43

回代 Ux=yUx=y:x3=4/34/3=1x_3=\frac{4/3}{4/3}=1,x2=12+132=1x_2=\frac{\frac12+1}{\frac32}=1,x1=1+12=1x_1=\frac{1+1}{2}=1。✓

三角分解的本质

LU 没有「解方程」,它只是把消元的过程存下来:LL 记的是「我做了哪些行变换」,UU 记的是「消完长什么样」。所以 LL 的乘数可以重复用于任意多个右端项——分解一次,解无穷多次。这正是它比求逆划算的地方。

3.2 小主元为什么必须换行(一个四位算术的完整验算)

这是全篇最该亲手算一遍的例子。取

A=(10−5113),b=(27)A=\begin{pmatrix}10^{-5}&1\\1&3\end{pmatrix},\qquad b=\begin{pmatrix}2\\7\end{pmatrix}

先看它有多良态:∥A∥∞=4\|A\|_\infty=4,而

A−1=13⋅10−5−1(3−1−110−5)A^{-1}=\frac{1}{3\cdot10^{-5}-1}\begin{pmatrix}3&-1\\-1&10^{-5}\end{pmatrix}

其行和最大是 40.99997≈4.0001\frac{4}{0.99997}\approx4.0001,故 κ∞(A)≈16.0005\kappa_\infty(A)\approx16.0005。这是相当好的矩阵——κε\kappa\varepsilon 只有 10−1510^{-15} 量级,双精度下能保住十几位有效数字。

精确解是

x1=2⋅3−1⋅710−5⋅3−1=−1−0.99997=1.00003…,x2=2−10−5x1=1.99999…x_1=\frac{2\cdot3-1\cdot7}{10^{-5}\cdot3-1}=\frac{-1}{-0.99997}=1.00003\ldots,\qquad x_2=2-10^{-5}x_1=1.99999\ldots

不换行,用四位十进制浮点:

  • 乘数 m=a21/a11=1/10−5=105m=a_{21}/a_{11}=1/10^{-5}=10^{5}(四位正好存下)
  • u22=3−105⋅1=3−100000=−99997 ⟶ −1.000×105u_{22}=3-10^{5}\cdot1=3-100000=-99997\ \longrightarrow\ -1.000\times10^{5}
  • y2=7−105⋅2=−199993 ⟶ −2.000×105y_2=7-10^{5}\cdot2=-199993\ \longrightarrow\ -2.000\times10^{5}
  • x2=(−2.000×105)/(−1.000×105)=2.000x_2=(-2.000\times10^{5})/(-1.000\times10^{5})=2.000
  • x1=(2−1⋅2.000)/10−5=0x_1=(2-1\cdot2.000)/10^{-5}=0

得到 x≈(0, 2.000)x\approx(0,\ 2.000)。真解 x1=1.00003x_1=1.00003,相对误差 100%。

换行之后(交换两行,bb 也换):

A′=(1310−51),b′=(72)A'=\begin{pmatrix}1&3\\10^{-5}&1\end{pmatrix},\qquad b'=\begin{pmatrix}7\\2\end{pmatrix}

  • m=10−5/1=10−5m=10^{-5}/1=10^{-5}
  • u22=1−10−5⋅3=0.99997 ⟶ 1.000u_{22}=1-10^{-5}\cdot3=0.99997\ \longrightarrow\ 1.000
  • y2=2−10−5⋅7=1.99993 ⟶ 2.000y_2=2-10^{-5}\cdot7=1.99993\ \longrightarrow\ 2.000
  • x2=2.000/1.000=2.000x_2=2.000/1.000=2.000,x1=(7−3⋅2.000)/1=1.000x_1=(7-3\cdot2.000)/1=1.000

得到 (1.000, 2.000)(1.000,\ 2.000),四位全对。

坏在哪一步

不换行时,u22=3−105u_{22}=3-10^5 是两个量级差 10510^5 的数相减:33 的信息被完全吞掉(这正是 1.2 节的「相消」)。
换行后主元从 10−510^{-5} 变成 11,所有乘数都 ≤1\le1(部分主元保证 ∣lij∣≤1|l_{ij}|\le1),误差不再被放大。
注意:矩阵没变、条件数没变、精度没变,只有「先除哪个」变了。 这就是「不稳定」的教科书样子。

一般结论:带部分主元的 LU 对任何非奇异 AA 都能进行到底,得到 PA=LUPA=LU。代价只是选主元时多 O(n2)O(n^2) 次比较。

3.3 QR:Gram–Schmidt 与 Householder 的差别在哪

对 2.5 节的 AA 走一遍古典 Gram–Schmidt(23 讲的算法,作用在列向量上)。

r11=∥a1∥=22+(−1)2=5r_{11}=\|a_1\|=\sqrt{2^2+(-1)^2}=\sqrt5,q1=15(2,−1,0)Tq_1=\frac{1}{\sqrt5}(2,-1,0)^{\mathsf T}。

r12=q1Ta2=15(2⋅(−1)+(−1)⋅2)=−45r_{12}=q_1^{\mathsf T}a_2=\frac{1}{\sqrt5}(2\cdot(-1)+(-1)\cdot2)=-\frac{4}{\sqrt5},

v2=a2−r12q1=(−12−1)+45(2−10)=(3/56/5−1)v_2=a_2-r_{12}q_1=\begin{pmatrix}-1\\2\\-1\end{pmatrix}+\frac45\begin{pmatrix}2\\-1\\0\end{pmatrix}=\begin{pmatrix}3/5\\6/5\\-1\end{pmatrix}

r22=∥v2∥=9+3625+1=705r_{22}=\|v_2\|=\sqrt{\frac{9+36}{25}+1}=\frac{\sqrt{70}}{5},q2=170(3,6,−5)Tq_2=\frac{1}{\sqrt{70}}(3,6,-5)^{\mathsf T}。

r13=q1Ta3=15r_{13}=q_1^{\mathsf T}a_3=\frac{1}{\sqrt5},r23=q2Ta3=−1670r_{23}=q_2^{\mathsf T}a_3=-\frac{16}{\sqrt{70}},于是

v3=a3−r13q1−r23q2=(27,47,67),r33=567v_3=a_3-r_{13}q_1-r_{23}q_2=\Big(\tfrac27,\tfrac47,\tfrac67\Big),\qquad r_{33}=\frac{\sqrt{56}}{7}

结果(检算:RR 对角元之积 =5⋅705⋅567=16=4=det⁡A=\sqrt5\cdot\frac{\sqrt{70}}{5}\cdot\frac{\sqrt{56}}{7}=\sqrt{16}=4=\det A ✓)

R=(5−45150705−167000567),Q=(25370114−156702140−570314)R=\begin{pmatrix}\sqrt5&-\frac{4}{\sqrt5}&\frac{1}{\sqrt5}\\[2pt]0&\frac{\sqrt{70}}{5}&-\frac{16}{\sqrt{70}}\\[2pt]0&0&\frac{\sqrt{56}}{7}\end{pmatrix},\qquad Q=\begin{pmatrix}\frac{2}{\sqrt5}&\frac{3}{\sqrt{70}}&\frac{1}{\sqrt{14}}\\[2pt]-\frac{1}{\sqrt5}&\frac{6}{\sqrt{70}}&\frac{2}{\sqrt{14}}\\[2pt]0&-\frac{5}{\sqrt{70}}&\frac{3}{\sqrt{14}}\end{pmatrix}

检查一下:RR 的对角元平方是 5, 145, 875,\ \frac{14}{5},\ \frac87。这不是巧合——由 ATA=RTQTQR=RTRA^{\mathsf T}A=R^{\mathsf T}Q^{\mathsf T}QR=R^{\mathsf T}R(正交矩阵 QTQ=IQ^{\mathsf T}Q=I),RTR^{\mathsf T} 正是 ATAA^{\mathsf T}A 的 Cholesky 因子(把 RR 的对角元取正号后逐个比对,二者完全相同)。

同一个东西,两种条件数

ATAA^{\mathsf T}A 的条件数是 33.9733.97,而 AA 只有 5.835.83——差了整整 5.835.83 倍,正好是 κ2(A)2\kappa_2(A)^2。
所以「RTR^{\mathsf T} 是 ATAA^{\mathsf T}A 的 Cholesky 因子」这句话在数学上对、在数值上不该照做:直接对 AA 做 QR 得到的 RR 比对 ATAA^{\mathsf T}A 做 Cholesky 稳定得多,虽然两者的 RR 长得一样。差别在于「先乘出 ATAA^{\mathsf T}A」这一步会把 κ\kappa 平方。

为什么 Householder 更稳? 关键不在「公式更复杂」,而在误差的传播方式:

  • Gram–Schmidt 算 qjq_j 时,是把已经算出的 q^1,…,q^j−1\hat q_1,\dots,\hat q_{j-1} 拿来减。这些 q^i\hat q_i 本身已经带误差,而且它们不严格正交。第 jj 步的误差里有一份正比于 κ(A)2\kappa(A)^2 的项——条件数被平方了。
  • Householder 从不显式造 QQ:它对 AA 连续左乘正交矩阵,每步只算 vv 与 β=2/vTv\beta=2/v^{\mathsf T}v。正交矩阵在 2 范数下保距(∥HA∥2=∥A∥2\|HA\|_2=\|A\|_2),误差不会被放大,总误差只正比于 κ(A)\kappa(A)。

用 Läuchli 矩阵 A=(111ϵ000ϵ000ϵ)A=\begin{pmatrix}1&1&1\\ \epsilon&0&0\\0&\epsilon&0\\0&0&\epsilon\end{pmatrix} 实测(ϵ=10−8\epsilon=10^{-8},κ2(A)≈1.7×108\kappa_2(A)\approx1.7\times10^{8}),比较算出的 QQ 有多正交:

算法 ∥QTQ−I∥max⁡\|Q^{\mathsf T}Q-I\|_{\max}
古典 Gram–Schmidt 5.0×10−15.0\times10^{-1}
修正 Gram–Schmidt(逐个减) 7.1×10−97.1\times10^{-9}
Householder 1.1×10−151.1\times10^{-15}

古典 GS 的 QQ 已经完全不正交(误差 0.50.5),Householder 稳在机器精度。这就是「κ\kappa 被平方」的具体样子。

正规方程是陷阱

解最小二乘时最诱人的写法是 ATAx=ATbA^{\mathsf T}Ax=A^{\mathsf T}b。但 κ2(ATA)=κ2(A)2\kappa_2(A^{\mathsf T}A)=\kappa_2(A)^2(这就是 29 讲提过的那件事)。
更进一步:若 A=(111ϵ000ϵ000ϵ)A=\begin{pmatrix}1&1&1\\ \epsilon&0&0\\0&\epsilon&0\\0&0&\epsilon\end{pmatrix}、ϵ=10−3\epsilon=10^{-3},在六位十进制下 1+ϵ2=1+10−61+\epsilon^2=1+10^{-6} 被舍入成 11,ATAA^{\mathsf T}A 变成全 11 矩阵,秩从 3 掉到 1,正规方程直接无解。
用 QR 就没有这一步:RR 的对角元是 ∥vj∥\|v_j\|,不涉及平方。

Givens 什么时候赢? 对 2.5 节的 AA,要清掉 a21=−1a_{21}=-1:取 c=2/5c=2/\sqrt5、s=−1/5s=-1/\sqrt5,旋转后第一行变成 (5, −4/5, 1/5)(\sqrt5,\ -4/\sqrt5,\ 1/\sqrt5)——和上面 RR 的第一行一模一样。但 Givens 每次只动两行,做完整三角化要 ∼n2/2\sim n^2/2 次旋转;Householder 只要 nn 次反射。所以稠密矩阵用 Householder,带状或只需要局部清零(比如把某个元素单独打掉)时才用 Givens。

3.4 Cholesky:为什么它比 LU 便宜一半,而且不用选主元

对 2.5 节的 AA 逐元比较 A=LLTA=LL^{\mathsf T}。记 L=(lij)L=(l_{ij}) 下三角。

(1,1)(1,1):l112=2⇒l11=2l_{11}^2=2\Rightarrow l_{11}=\sqrt2。
(2,1)(2,1):l21l11=−1⇒l21=−1/2l_{21}l_{11}=-1\Rightarrow l_{21}=-1/\sqrt2。
(2,2)(2,2):l212+l222=2⇒l22=2−12=3/2l_{21}^2+l_{22}^2=2\Rightarrow l_{22}=\sqrt{2-\frac12}=\sqrt{3/2}。
(3,2)(3,2):l31l21+l32l22=−1l_{31}l_{21}+l_{32}l_{22}=-1,而 l31=0l_{31}=0,故 l32=−1/3/2=−2/3l_{32}=-1/\sqrt{3/2}=-\sqrt{2/3}。
(3,3)(3,3):l322+l332=2⇒l33=2−23=23l_{32}^2+l_{33}^2=2\Rightarrow l_{33}=\sqrt{2-\frac23}=\frac{2}{\sqrt3}。

L=(200−123200−2323)L=\begin{pmatrix}\sqrt2&0&0\\-\frac{1}{\sqrt2}&\sqrt{\frac32}&0\\0&-\sqrt{\frac23}&\frac{2}{\sqrt3}\end{pmatrix}

把它的对角元平方,和 3.1 节的 LU 主元逐个对照:

2, 32, 43⏟LU 主元⟺2, 32, 43⏟l112, l222, l332\underbrace{2,\ \tfrac32,\ \tfrac43}_{\text{LU 主元}}\qquad\Longleftrightarrow\qquad\underbrace{2,\ \tfrac32,\ \tfrac43}_{l_{11}^2,\ l_{22}^2,\ l_{33}^2}

完全一致。 这不是巧合:Cholesky 就是「LDLTLDL^{\mathsf T} 分解里把对角元开方塞进 LL」,而 LDLTLDL^{\mathsf T} 的 DD 正是 LU 的主元。AA 正定时每个主元恒正,开方永远合法——所以不需要选主元。

代价对比:LU 约 23n3\frac23n^3 次乘法,Cholesky 约 13n3\frac13n^3,省一半,还省一半存储(只存一个三角)。

反过来用:Cholesky 是正定性的判据

若某步出现 lkk2≤0l_{kk}^2\le0,说明 AA 不正定,计算立刻停下。这比算全部特征值快得多。
例:A=(1221)A=\begin{pmatrix}1&2\\2&1\end{pmatrix} 对称但特征值是 −1,3-1,3,不正定;做 Cholesky 时 l11=1l_{11}=1、l21=2l_{21}=2,到 l222=1−4=−3l_{22}^2=1-4=-3 就崩了。

3.5 条件数:两个具体矩阵,一个良态一个病态

良态的那一个。 2.5 节的 AA 有 κ2=3+22≈5.83\kappa_2=3+2\sqrt2\approx5.83。这个数很实在:右端项相对扰动 10−310^{-3},解的相对误差不超过 5.83×10−35.83\times10^{-3}——大约掉半位有效数字。

病态的那一个:Hilbert 矩阵。 Hn=(1i+j−1)H_n=\big(\frac{1}{i+j-1}\big),经典病态样本:

nn 3 6 9 12
κ2(Hn)\kappa_2(H_n) 5.2×1025.2\times10^{2} 1.5×1071.5\times10^{7} 4.9×10114.9\times10^{11} 1.8×10161.8\times10^{16}

n=12n=12 时 κ⋅ε≈1.8×1016×1.1×10−16≈2>1\kappa\cdot\varepsilon\approx1.8\times10^{16}\times1.1\times10^{-16}\approx2>1。双精度下一位有效数字都不剩——这就是 1.3 节那个「残差 10−1610^{-16}、误差 0.700.70」的来源。

拿 3×33\times3 做一次能手算的放大实验。H3=(11213121314131415)H_3=\begin{pmatrix}1&\frac12&\frac13\\ \frac12&\frac13&\frac14\\ \frac13&\frac14&\frac15\end{pmatrix},κ2(H3)≈524\kappa_2(H_3)\approx524,κ∞(H3)=748\kappa_\infty(H_3)=748。取 x=1x=\mathbf 1,b=H31=(116,1312,4760)b=H_3\mathbf 1=\big(\frac{11}{6},\frac{13}{12},\frac{47}{60}\big)。把 b1b_1 改动 1%1\%:

∥δb∥∞∥b∥∞=0.01⟹∥δx∥∞∥x∥∞=0.66\frac{\|\delta b\|_\infty}{\|b\|_\infty}=0.01\qquad\Longrightarrow\qquad \frac{\|\delta x\|_\infty}{\|x\|_\infty}=0.66

输入动 1%1\%,输出动 66%66\%,放大约 6666 倍。 这个 66 落在 κ\kappa 的界内(κ∞=748\kappa_\infty=748 是上界,不是等号),方向完全正确。手算可以验:x^=(1.165, 0.34, 1.55)\hat x=(1.165,\ 0.34,\ 1.55)。

条件数的几何含义

由 29 讲,κ2(A)=σmax⁡/σmin⁡\kappa_2(A)=\sigma_{\max}/\sigma_{\min},即单位球被 AA 映成的椭圆的轴比。
条件数大 = 这个椭圆很扁 = 有些方向被压得几乎为零 = 反过来求逆时那个方向被放到极大,任何一点扰动都被放大。
所以「病态」与「接近奇异」是同一件事的两种说法。

3.6 迭代法:三种方法的谱半径,一次算清

对 2.5 节的 A=D−L−UA=D-L-U,D=2ID=2I,

BJ=D−1(L+U)=(0120120120120)B_J=D^{-1}(L+U)=\begin{pmatrix}0&\frac12&0\\ \frac12&0&\frac12\\ 0&\frac12&0\end{pmatrix}

它的特征多项式由三对角行列式直接展开:BJB_J 的第一、三行只有第 2 个位置非零,故

det⁡(λI−BJ)=λ⋅λ⋅λ−λ(12⋅12+12⋅12)=λ3−12λ=λ(λ2−12)\det(\lambda I-B_J)=\lambda\cdot\lambda\cdot\lambda-\lambda\Big(\tfrac12\cdot\tfrac12+\tfrac12\cdot\tfrac12\Big)=\lambda^3-\tfrac12\lambda=\lambda\Big(\lambda^2-\tfrac12\Big)

(消去法是:第一行与第三行的非零元只通过中间行耦合,两项 14+14\frac14+\frac14 就是走「上行—中行—下行」这两条路径的贡献。)于是

ρ(BJ)=12=22≈0.7071\rho(B_J)=\frac{1}{\sqrt2}=\frac{\sqrt2}{2}\approx0.7071

Gauss–Seidel 的迭代矩阵是

BGS=(D−L)−1U=(120014120181412)(010001000)=(01200141201814)B_{GS}=(D-L)^{-1}U=\begin{pmatrix}\frac12&0&0\\[2pt]\frac14&\frac12&0\\[2pt]\frac18&\frac14&\frac12\end{pmatrix}\begin{pmatrix}0&1&0\\0&0&1\\0&0&0\end{pmatrix}=\begin{pmatrix}0&\frac12&0\\[2pt]0&\frac14&\frac12\\[2pt]0&\frac18&\frac14\end{pmatrix}

其特征多项式是 λ2(λ−12)\lambda^2\big(\lambda-\frac12\big)(直接展开可得,也可由 BGSB_{GS} 秩为 22 预判至少有一个零特征值),于是 ρ(BGS)=12\rho(B_{GS})=\frac12。这个结果不用硬算也能预判:AA 是三对角的,具有「性质 A」(存在置换把它化成分块二循环形式 PAPT=(D11M12M21D22)PAP^{\mathsf T}=\begin{pmatrix}D_{11}&M_{12}\\M_{21}&D_{22}\end{pmatrix},其中 D11,D22D_{11},D_{22} 是对角块、M12,M21M_{12},M_{21} 一般非零——注意这不是分块对角),而相容次序保证

ρ(BGS)=ρ(BJ)2=(12)2=12\rho(B_{GS})=\rho(B_J)^2=\Big(\frac{1}{\sqrt2}\Big)^2=\frac12

GS 的收敛因子正好是 Jacobi 的平方——每步 GS 相当于走了两步 Jacobi,因为新算出的分量立刻被下游用了。

SOR 的最优松弛因子(同样由相容次序理论给出,μ=ρ(BJ)\mu=\rho(B_J))

ωopt=21+1−μ2=21+12≈1.1716,ρ(Lωopt)=ωopt−1≈0.1716\omega_{\text{opt}}=\frac{2}{1+\sqrt{1-\mu^2}}=\frac{2}{1+\frac{1}{\sqrt2}}\approx1.1716,\qquad \rho(L_{\omega_{\text{opt}}})=\omega_{\text{opt}}-1\approx0.1716

三个数放在一起看:0.7071→0.5→0.17160.7071\to0.5\to0.1716。要把误差压到 10−610^{-6},大致需要 ln⁡(10−6)/ln⁡ρ\ln(10^{-6})/\ln\rho 步:

方法 ρ\rho 约需步数(误差 10−610^{-6})
Jacobi 0.70710.7071 4040
Gauss–Seidel 0.50.5 2020
SOR(ω=1.1716\omega=1.1716) 0.17160.1716 88

SOR 用对了 ω\omega,比 Jacobi 快 5 倍。

收敛的充分条件(不用算谱半径就能用的判据):

  • 严格对角占优(∣aii∣>∑j≠i∣aij∣|a_{ii}|>\sum_{j\ne i}|a_{ij}| 对每行成立)⟹ Jacobi 与 GS 都收敛,因为 ∥BJ∥∞<1\|B_J\|_\infty<1。
  • 不可约 + 弱对角占优(允许等号,但至少一处严格)⟹ 也收敛。注意:此时不能推出 ρ(BGS)<ρ(BJ)\rho(B_{GS})<\rho(B_J);要得到这条比较,还需要 aij≤0 (i≠j)a_{ij}\le0\ (i\ne j)(即 AA 是 M-矩阵,Stein–Rosenberg 定理)。缺这个前提有反例:A=(83−3263−2−36)A=\begin{pmatrix}8&3&-3\\2&6&3\\-2&-3&6\end{pmatrix} 三行都严格对角占优,BJB_J 幂零故 ρ(BJ)=0\rho(B_J)=0,而 ρ(BGS)≈0.283>ρ(BJ)\rho(B_{GS})\approx0.283>\rho(B_J)。所以「GS 比 Jacobi 快」不是普遍结论。
  • AA 对称正定 ⟹ GS 一定收敛;SOR 对一切 ω∈(0,2)\omega\in(0,2) 收敛。

注意 2.5 节的 AA 只是弱对角占优(中间行 2=1+12=1+1),严格判据用不上,但它不可约,所以仍然收敛——这解释了为什么它是个好例子而不是反例。

Jacobi 与 Gauss–Seidel 没有一般的优劣

取 A1=(12−2111221)A_1=\begin{pmatrix}1&2&-2\\1&1&1\\2&2&1\end{pmatrix}。它的 Jacobi 迭代矩阵 BJ=D−1(L+U)B_J=D^{-1}(L+U) 满足 BJ3=0B_J^3=0(幂零),于是 ρ(BJ)=0\rho(B_J)=0,Jacobi 三步就得到精确解。
而 BGS=(D−L)−1U=(0−2202−3002)B_{GS}=(D-L)^{-1}U=\begin{pmatrix}0&-2&2\\0&2&-3\\0&0&2\end{pmatrix},特征多项式 λ(λ−2)2\lambda(\lambda-2)^2(特征值 0,2,20,2,2),故 ρ(BGS)=2>1\rho(B_{GS})=2>1,Gauss–Seidel 发散。
这说明「GS 总是比 Jacobi 好」是错的;两者之间只有「在特定条件下」的比较定理。

3.7 幂法与反幂法:收敛速度是可以算出来的

幂法的迭代格式是:取 ∥u0∥∞=1\|u_0\|_\infty=1,反复做

yk=Auk−1,μk=yk 中绝对值最大的分量,uk=yk/μky_k=Au_{k-1},\qquad \mu_k=\text{$y_k$ 中绝对值最大的分量},\qquad u_k=y_k/\mu_k

理由很直白:若 AA 可对角化、∣λ1∣>∣λ2∣≥⋯|\lambda_1|>|\lambda_2|\ge\cdots,把 u0=∑αjxju_0=\sum\alpha_jx_j 展开,

Aku0=λ1k(α1x1+∑j≥2αj(λjλ1)kxj)A^ku_0=\lambda_1^k\Big(\alpha_1x_1+\sum_{j\ge2}\alpha_j\Big(\frac{\lambda_j}{\lambda_1}\Big)^kx_j\Big)

括号里第二项按 ∣λ2/λ1∣k|\lambda_2/\lambda_1|^k 衰减,所以方向收敛到 x1x_1,μk→λ1\mu_k\to\lambda_1。收敛速度就是 ∣λ2/λ1∣|\lambda_2/\lambda_1|。

对 2.5 节的 AA,λ1=2+2\lambda_1=2+\sqrt2、λ2=2\lambda_2=2,故理论上

∣λ2λ1∣=22+2=2−2≈0.5858\Big|\frac{\lambda_2}{\lambda_1}\Big|=\frac{2}{2+\sqrt2}=2-\sqrt2\approx0.5858

取 u0=(1,1,1)Tu_0=(1,1,1)^{\mathsf T},手算前几步(μk\mu_k 是 yky_k 绝对值最大的分量,会带符号):

kk 1 2 3 4 5 6 7
μk\mu_k 11 22 −4-4 3.53.5 3.42863.4286 3.41673.4167 3.41463.4146

趋向 3.41423.4142。要误差到 10−610^{-6},按理论比值需 ln⁡(10−6)/ln⁡(0.5858)≈26\ln(10^{-6})/\ln(0.5858)\approx26 步。

实测比理论快,不是算错了

上表从第 4 步起,相邻误差之比稳定在 0.17160.1716,比理论的 0.58580.5858 小得多。原因是这个初值恰好把 λ2\lambda_2 的成分消掉了:AA 的 λ2=2\lambda_2=2 对应特征向量 (1,0,−1)T(1,0,-1)^{\mathsf T},而 u0=1u_0=\mathbf 1 与它正交(1T(1,0,−1)=0\mathbf 1^{\mathsf T}(1,0,-1)=0),所以展开式里 α2=0\alpha_2=0,衰减由下一个比值

λ3λ1=2−22+2=(2−1)2≈0.1716\frac{\lambda_3}{\lambda_1}=\frac{2-\sqrt2}{2+\sqrt2}=(\sqrt2-1)^2\approx0.1716

接管。(λ3=2−2\lambda_3=2-\sqrt2 对应的是两端同号的「慢变」模态,λ1\lambda_1 对应正负交替的「快变」模态。)

这是特例,不是普遍规律。把同一个谱换一个朝向(例如取 A=QΛQTA=Q\Lambda Q^{\mathsf T}、QQ 是一个随机的正交矩阵),α2≠0\alpha_2\ne0,实测比值立刻回到 0.58580.5858。所以:
理论界 ∣λ2/λ1∣|\lambda_2/\lambda_1| 是「最坏情况」,实际速度取决于初值在各特征方向上的投影。 幂法的收敛速度不能只看矩阵,还要看初值。
若把比值真的做成 0.990.99(两个特征值几乎一样大),则需要约 ln⁡(10−6)/ln⁡(0.99)≈1375\ln(10^{-6})/\ln(0.99)\approx1375 步——这才是幂法「慢」的定量含义。

反幂法:对 A−1A^{-1} 用幂法,收敛到 ∣λ∣|\lambda| 最小的特征值,速度由 ∣λn/λn−1∣|\lambda_n/\lambda_{n-1}| 决定。每步要解 Ay=zAy=z,但 LU 只分解一次,之后每步两个三角形方程组,O(n2)O(n^2)。

带位移的反幂法:对 A−μIA-\mu I 用反幂法。若 μ\mu 接近某个特征值 λi\lambda_i,则

∣λi−μ∣∣λj−μ∣ 极小⟹一两步就收敛\frac{|\lambda_i-\mu|}{|\lambda_j-\mu|}\ \text{极小}\quad\Longrightarrow\quad\text{一两步就收敛}

代价是 A−μIA-\mu I 接近奇异,每步解的是病态方程组——但病态不影响特征向量的收敛,这是反幂法最反直觉、也最有用的一条性质。

3.8 Krylov 子空间:为什么大规模稀疏问题必须用迭代法

直接法在大矩阵上会撞两堵墙。

第一堵是运算量。LU 是 O(n3)O(n^3)。n=106n=10^6 时 2n3/3≈6.7×10172n^3/3\approx6.7\times10^{17} 次乘法,按每秒 101010^{10} 次算要两年多。

第二堵更致命:稀疏性会在消元中丢失(fill-in)。用二维 Laplacian(N×NN\times N 网格,n=N2n=N^2)实测非零元个数:

网格 NN n=N2n=N^2 AA 的非零元 LU 因子的非零元 倍数
4 16 64 118 1.8×
8 64 288 974 3.4×
12 144 672 3334 5.0×

非零元随 NN 稳定增长,倍数一路往上。N=1000N=1000(n=106n=10^6)时,即使用带宽优化,分解也要约 2×10122\times10^{12} 次运算、存 10910^9 个双精度数——8 GB 只为了存因子。

迭代法只做一件事:矩阵乘向量。 每步 O(nnz(A))O(\text{nnz}(A)),稀疏时是 O(n)O(n)。它从不修改 AA,所以稀疏性永远不会丢。

共轭梯度(CG) 用在对称正定情形。它不是「沿负梯度走」(那是最速下降,很慢),而是让每一步的搜索方向关于 AA 共轭(piTApj=0p_i^{\mathsf T}Ap_j=0,i≠ji\ne j),从而每一步都在一个新的维度上取到最优。迭代格式:

αk=rkTrkpkTApk,xk+1=xk+αkpk,rk+1=rk−αkApk,βk=rk+1Trk+1rkTrk,pk+1=rk+1+βkpk\alpha_k=\frac{r_k^{\mathsf T}r_k}{p_k^{\mathsf T}Ap_k},\quad x_{k+1}=x_k+\alpha_kp_k,\quad r_{k+1}=r_k-\alpha_kAp_k,\quad \beta_k=\frac{r_{k+1}^{\mathsf T}r_{k+1}}{r_k^{\mathsf T}r_k},\quad p_{k+1}=r_{k+1}+\beta_kp_k

三个性质必须记住:

  1. 理论上 nn 步必到精确解(Krylov 子空间维数不超过 nn)。所以 CG 严格说是直接法。
  2. 实际上把它当迭代法用,残差小于阈值就停,通常远早于 nn 步。
  3. 误差界是

∥xk−x∗∥A≤2(κ−1κ+1)k∥x0−x∗∥A\|x_k-x^*\|_A\le 2\left(\frac{\sqrt{\kappa}-1}{\sqrt{\kappa}+1}\right)^k\|x_0-x^*\|_A

其中 ∥v∥A=vTAv\|v\|_A=\sqrt{v^{\mathsf T}Av}。收敛速度只由 κ\sqrt\kappa 决定——这是 CG 相对别的迭代法最大的优势:条件数被开了一次方。

对 2.5 节的 AA,κ=3+22\kappa=3+2\sqrt2,κ=1+2\sqrt\kappa=1+\sqrt2,于是

κ−1κ+1=22+2=2−1≈0.4142\frac{\sqrt\kappa-1}{\sqrt\kappa+1}=\frac{\sqrt2}{2+\sqrt2}=\sqrt2-1\approx0.4142

界说每步误差缩到 0.41420.4142 倍。实测更快:取 b=A1=(1,0,1)Tb=A\mathbf 1=(1,0,1)^{\mathsf T},CG 两步就到精确解(残差历史 1.41→1.00→01.41\to1.00\to0)。界是悲观的,这很正常——它只用了 κ\kappa 一个数,丢掉了谱分布的全部信息。

条件数为什么决定 CG 的步数

离散 Laplacian 的条件数按 κ≈4π2(n+1)2\kappa\approx\frac{4}{\pi^2}(n+1)^2 增长(一维三对角,n=300n=300 时实测 3.67×1043.67\times10^4,公式给 3.67×1043.67\times10^4)。
于是 CG 步数 ∼κ∼n\sim\sqrt\kappa\sim n。网格加密一倍,步数翻倍——这就是为什么解 PDE 要用预处理:把 κ\kappa 压回 O(1)O(1),步数就与网格无关了。

GMRES 处理非对称情形。它不做「误差在 AA 范数下最小」,而做残差最小:

xk=arg⁡min⁡x∈x0+Kk(A,r0)∥b−Ax∥2,Kk=span⁡{r0,Ar0,…,Ak−1r0}x_k=\arg\min_{x\in x_0+\mathcal K_k(A,r_0)}\|b-Ax\|_2,\qquad \mathcal K_k=\operatorname{span}\{r_0,Ar_0,\dots,A^{k-1}r_0\}

同样 nn 步必到精确解(用 Cayley–Hamilton:特征多项式给出一个零化多项式)。实践中靠 Arnoldi 过程逐步构造正交基,每步存一个向量,存储随步数线性增长,所以要「重启」(每 mm 步清空重来)。

代价对比一句话:CG 每步一个矩阵乘向量 + 常数存储;GMRES 每步一个矩阵乘向量 + 一步正交化 + 线性增长的存储。 能用 CG 就别用 GMRES。


四、几何直观 / 记忆钩子

四种分解,四个动作

分解 几何动作 一句话记忆
A=LUA=LU 把「消元的账本」留下来 L 记账,U 是结果
PA=LUPA=LU 消元前先「挑个大的站台」 先换行,再开算
A=QRA=QR 把列向量一支一支掰成互相垂直 正交化 = 换一组直角坐标
A=LLTA=LL^{\mathsf T} 对称正定时,掰一次就够(另一半自动对称) 开方版的 LU,省一半

三个镜像式的对照

  • Householder = 照镜子:一次反射把整列后面全打成零。Givens = 拧螺丝:一次只转掉一个元素。前者大刀阔斧,后者精雕细刻。
  • 条件数 = 椭圆的轴比(29 讲):球被压成扁椭圆,κ=σmax⁡/σmin⁡\kappa=\sigma_{\max}/\sigma_{\min} 就是长轴比短轴。椭圆越扁,反解时短轴方向被放大得越狠。
  • 谱半径 = 每步误差的缩小比例:ρ=0.9\rho=0.9 意味着每步只掉一成,要掉到 10−610^{-6} 得 130130 步;ρ=0.17\rho=0.17 只要 88 步。迭代法的全部性能都在这个数里。

一句口诀

分解看结构(对称正定用 Cholesky,一般方阵用 LU,最小二乘用 QR),
求解看规模(小稠密直接法,大稀疏迭代法),
信不信看条件数(κε\kappa\varepsilon 就是你能信几位)。

幂法为什么「自然会」收敛

把 AA 想成一台「按方向拉伸」的机器,拉伸倍数就是特征值。反复作用,倍数最大的那个方向每次都赢一点点,比值 ∣λ2/λ1∣|\lambda_2/\lambda_1| 就是「赢的速率」。所以幂法的速度不是技巧问题,是谱的分布问题:想让幂法快,就得让 λ1\lambda_1 与 λ2\lambda_2 拉开距离——这正是「位移」技巧的出发点(把谱整体平移,人为造出差距)。


五、常见误区

误区 1:残差小,所以解是对的

错,而且错得很危险。残差 ∥b−Ax^∥\|b-A\hat x\| 小只说明 x^\hat x 是某个邻近问题的精确解,不是原问题的。
定量关系是 ∥x^−x∥∥x∥≤κ(A)∥b−Ax^∥∥b∥\dfrac{\|\hat x-x\|}{\|x\|}\le\kappa(A)\dfrac{\|b-A\hat x\|}{\|b\|}。κ=1016\kappa=10^{16} 时,残差 10−1610^{-16} 对应误差 O(1)O(1)。
12 阶 Hilbert 的实测就是:残差 1.4×10−161.4\times10^{-16},相对误差 0.700.70。
正确做法:用残差判断「迭代能不能停」(此时它很好用),绝不用它判断「解准不准」。

误区 2:结果不对,一定是矩阵病态

不一定,先分清是问题病态还是算法不稳定(1.4 节)。
反例就在 3.2 节:A=(10−5113)A=\begin{pmatrix}10^{-5}&1\\1&3\end{pmatrix} 的 κ∞≈16\kappa_\infty\approx16,条件数好得很,可不选主元的 LU 在四位算术下把 x1=1.00003x_1=1.00003 算成 00,相对误差 100%。换行之后四位全对。
判据:换一个算法再算一遍。两个算法结果差很多 → 算法问题;两个都差 → 问题本身病态。

误区 3:对称矩阵就能用 Cholesky

Cholesky 要求对称正定,不是「对称」。A=(1221)A=\begin{pmatrix}1&2\\2&1\end{pmatrix} 对称,特征值 −1,3-1,3,做到 l222=1−4=−3l_{22}^2=1-4=-3 就崩。
实操判据有三条,任选:所有顺序主子式为正(手算友好);所有特征值为正;xTAx>0x^{\mathsf T}Ax>0 对一切 x≠0x\ne0(定义本身)。
另一个常见混淆:对称正定(xTAx>0x^{\mathsf T}Ax>0)与对角占优是两件独立的事。对角占优 + 对角元为正 + 对称 ⟹ 正定,但反过来不成立。

误区 4:正交化用 Gram–Schmidt 就行

「数学上等价」不等于「数值上等价」。3.3 节的实测:κ≈1.7×108\kappa\approx1.7\times10^8 时,古典 GS 算出的 QQ 满足 ∥QTQ−I∥=0.5\|Q^{\mathsf T}Q-I\|=0.5,根本不是正交矩阵。
原因是古典 GS 用的是「已经带误差的 q^i\hat q_i」,误差项正比于 κ2\kappa^2。
三条出路:改用修正 GS(逐个减,误差 ∼κ\sim\kappa,实测 7×10−97\times10^{-9});用 Householder(∼\sim 机器精度);或者干脆别自己写,调库。

误区 5:迭代法一定比直接法快

不一定,取决于三件事:规模、稀疏性、条件数。

  • 小矩阵(n<100n<100)稠密:直接法几乎总赢,迭代法的启动开销盖不过它。
  • 大规模稀疏:迭代法赢,因为直接法有 fill-in(3.8 节的 5×5\times 增长)与 O(n3)O(n^3)。
  • 病态:迭代法可能不收敛或慢到不可用,这时要预处理,或者回到直接法。
    另外别忘了经典迭代法的固有毛病:可能发散(3.6 节的反例里 ρ(BGS)=2>1\rho(B_{GS})=2>1,GS 发散),而且需要停止准则——这个准则本身就是个技术活。
误区 6:SOR 的 ω\omega 随便取个 1.2 就行

ω\omega 是有最优值的,而且最优值依赖谱。对相容次序矩阵,ωopt=2/(1+1−μ2)\omega_{\text{opt}}=2/(1+\sqrt{1-\mu^2}),μ=ρ(BJ)\mu=\rho(B_J)。
本例 μ=0.7071\mu=0.7071 时 ωopt=1.1716\omega_{\text{opt}}=1.1716;若 μ=0.9\mu=0.9,则 ωopt=1.3929\omega_{\text{opt}}=1.3929,ρ\rho 从 0.810.81 降到 0.39290.3929——步数从 66 降到 15。
而 ω\omega 取到 1.91.9 时 ρ=0.9\rho=0.9,比 GS(ρ=0.5\rho=0.5)还慢。ω\omega 超过最优值后 ρ=ω−1\rho=\omega-1 线性上升,取到 22 就发散。


六、拓展(可选,可跳过)

6.1 预处理:把条件数压下去

迭代法的步数由 κ\kappa 决定,那就想办法把 κ\kappa 变小。做法是解等价的

M−1Ax=M−1bM^{-1}Ax=M^{-1}b

其中 MM 是 AA 的一个「好求逆的近似」。理想情形 κ(M−1A)≪κ(A)\kappa(M^{-1}A)\ll\kappa(A)。常见选择:对角预处理(M=diag⁡AM=\operatorname{diag}A,几乎免费)、不完全 Cholesky(A≈L~L~TA\approx\tilde L\tilde L^{\mathsf T},故意把 fill-in 丢掉)、以及针对具体结构的块预处理。3.8 节末尾那句「网格加密一倍步数翻倍」,正是靠预处理才被消掉的。

6.2 稀疏直接法不是不存在

「大规模必须用迭代」是粗略说法。带带宽优化的直接法(只在对角带内消元)对带状矩阵非常有效:n=106n=10^6、带宽 b=103b=10^3 时约 2nb2=2×10122nb^2=2\times10^{12} 次运算,虽然大但可做,而且结果精确、不依赖收敛。真正的分界线是「fill-in 会不会把存储吃光」,不是「nn 大不大」。

6.3 化学与材料里的三个落点

  • 分子轨道:Roothaan–Hall 方程 HC=εSCHC=\varepsilon SC 是广义特征值问题,SS 是重叠矩阵(对称正定)。标准做法是先做 S=LLTS=LL^{\mathsf T} 的 Cholesky,化成 L−1HL−Ty=εyL^{-1}HL^{-\mathsf T}y=\varepsilon y 的标准对称特征值问题——正是 3.4 节的分解。
  • 力场与几何优化:Hessian 必须正定才说明处在极小点,判据就是 Cholesky 能不能做完(3.4 节的注)。做不了就加位移或换优化器。
  • 反应–扩散与传热:离散后就是 2.5 节那个矩阵的高维版本,κ∼O(n2/d)\kappa\sim O(n^{2/d}),这就是为什么三维问题比一维难那么多。

6.4 与奇异值分解的关系

κ2(A)=σmax⁡/σmin⁡\kappa_2(A)=\sigma_{\max}/\sigma_{\min}(29 讲)。伪逆 A†=VΣ†UTA^\dagger=V\Sigma^\dagger U^{\mathsf T} 把所有「小奇异值」的倒数写得明明白白:σmin⁡\sigma_{\min} 小,1/σmin⁡1/\sigma_{\min} 大,误差就在这个方向炸开。截断 SVD(把小于阈值的 σ\sigma 直接置零)本质上是用「改问题」换「稳定」,与 Tikhonov 正则化是同一件事的两种说法。


七、自测(先做,再看答案)

1. 对 A=(4223)A=\begin{pmatrix}4&2\\2&3\end{pmatrix} 分别做 LU 与 Cholesky,验证「Cholesky 对角元的平方 = LU 的主元」这条关系。

2. 对三对角矩阵 A=(2−10−12−10−12)A=\begin{pmatrix}2&-1&0\\-1&2&-1\\0&-1&2\end{pmatrix},算 ρ(BJ)\rho(B_J) 与 ρ(BGS)\rho(B_{GS}),并说明为什么这里「ρ(BGS)=ρ(BJ)2\rho(B_{GS})=\rho(B_J)^2」成立。

3. 用四位十进制算术,对 A=(10−5113)A=\begin{pmatrix}10^{-5}&1\\1&3\end{pmatrix}、b=(2,7)Tb=(2,7)^{\mathsf T},分别用「不换行」与「换行」的 LU 求 xx,并解释误差来源。

4. H3H_3 的 κ∞=748\kappa_\infty=748。若右端项有 0.1%0.1\% 的相对扰动,解的相对误差最坏可能是多少?实测大约是多少?

5. 设 AA 的特征值是 10, 9.9, −9.910,\ 9.9,\ -9.9,用幂法求主特征值。误差要降到 10−610^{-6} 需要多少步?如果改用带位移 μ=9.9\mu=9.9 的反幂法呢?

答案(点开)

1. LU:u11=4u_{11}=4,l21=12l_{21}=\frac12,u22=3−12⋅2=2u_{22}=3-\frac12\cdot2=2。故主元是 4, 24,\ 2。
Cholesky:l11=4=2l_{11}=\sqrt4=2,l21=2/2=1l_{21}=2/2=1,l22=3−1=2l_{22}=\sqrt{3-1}=\sqrt2。对角元平方是 4, 24,\ 2。完全一致 ✓
原因:Cholesky 就是 LDLTLDL^{\mathsf T} 里把 D\sqrt{D} 塞进 LL,而 DD 正是 LU 的主元。

2. D=2ID=2I,BJ=12(010101010)B_J=\frac12\begin{pmatrix}0&1&0\\1&0&1\\0&1&0\end{pmatrix},特征多项式 λ3−12λ=0\lambda^3-\frac12\lambda=0,故 ρ(BJ)=1/2≈0.7071\rho(B_J)=1/\sqrt2\approx0.7071。
三对角矩阵具有性质 A(相容次序),由定理 ρ(BGS)=ρ(BJ)2=12\rho(B_{GS})=\rho(B_J)^2=\frac12;数值验算 BGSB_{GS} 的特征值是 0,0,120,0,\frac12,一致 ✓
物理意义:GS 每步用的信息比 Jacobi 多一倍(新值立刻用),等价于「两步 Jacobi 的效果」。

3. 不换行:m=105m=10^5,u22=3−105→−1.000×105u_{22}=3-10^5\to-1.000\times10^5,y2=7−2×105→−2.000×105y_2=7-2\times10^5\to-2.000\times10^5,x2=2.000x_2=2.000,x1=(2−2.000)/10−5=0x_1=(2-2.000)/10^{-5}=0。得 (0, 2.000)(0,\ 2.000),真解 (1.00003, 1.99999)(1.00003,\ 1.99999),第一位就错。
换行后 m=10−5m=10^{-5},u22=0.99997→1.000u_{22}=0.99997\to1.000,y2=1.99993→2.000y_2=1.99993\to2.000,x=(1.000, 2.000)x=(1.000,\ 2.000),四位全对。
误差来源不是矩阵病态(κ∞≈16\kappa_\infty\approx16),而是 u22=3−105u_{22}=3-10^5 这一步的相消:小数减大数,33 的有效位被吞掉。

4. 最坏 κ∞×0.1%=748×10−3≈0.75\kappa_\infty\times0.1\%=748\times10^{-3}\approx0.75,即误差可能达到 75%——界允许解完全失真。
实测:把 b1b_1 改动 0.1%0.1\%,解变化 6.6%6.6\%(放大约 6666 倍,与改动 1%1\% 时的放大倍数相同——线性放大,倍数与扰动大小无关)。
所以界给 75%75\%、实测 6.6%6.6\%:界远大于实测,但方向与量级都对。工程上宁可按界估,因为界不依赖具体扰动长什么样(扰动落在「坏方向」上就会接近界)。

5. ∣λ2/λ1∣=9.9/10=0.99|\lambda_2/\lambda_1|=9.9/10=0.99。步数 ≈ln⁡(10−6)/ln⁡(0.99)≈1375\approx\ln(10^{-6})/\ln(0.99)\approx1375 步。慢得没法用。
带位移 μ=9.9\mu=9.9 的反幂法:A−μIA-\mu I 的特征值是 0.1, 0, −19.80.1,\ 0,\ -19.8,最小的两个是 00 与 0.10.1,比值趋于 00,一两步就收敛到 λ=9.9\lambda=9.9 对应的特征向量。
注意:实际算时 μ\mu 只有近似值,比值变成 ∣λi−μ∣/∣λj−μ∣|\lambda_i-\mu|/|\lambda_j-\mu|,仍然远小于 0.990.99,仍然是几步的事。


八、复习卡

项 内容
机器精度 双精度 ε=2−53≈1.11×10−16\varepsilon=2^{-53}\approx1.11\times10^{-16};每次运算带 (1+δ)(1+\delta),∣δ∣≤ε|\delta|\le\varepsilon
有效位数 约 16−log⁡10κ16-\log_{10}\kappa 位;κε≳1\kappa\varepsilon\gtrsim1 时一位不剩
Cramer 代价 (n−1)(n+1)!(n-1)(n+1)! 次乘法,n=25n=25 要 3×10103\times10^{10} 年
高斯消去代价 ≈n3/3\approx n^3/3;LU 分解 ≈2n3/3\approx2n^3/3;Cholesky ≈n3/3\approx n^3/3
为什么不用求逆 运算量差 nn 倍;毁稀疏;κ(A−1)=κ(A)\kappa(A^{-1})=\kappa(A) 救不了病态
LU A=LUA=LU,LL 单位下三角;Ly=bLy=b 前代、Ux=yUx=y 回代,各 O(n2)O(n^2)
置换矩阵 P−1=PTP^{-1}=P^{\mathsf T},det⁡P=±1\det P=\pm1;PXPX 换行、XPXP 换列
部分主元 每步在当前列取 max⁡\max,保证 ∣lij∣≤1|l_{ij}|\le1;得 PA=LUPA=LU;比较代价 O(n2)O(n^2)
全主元 在整个右下子块取 max⁡\max,更稳但比较本身 O(n3)O(n^3)
小主元反例 (10−5113)\begin{pmatrix}10^{-5}&1\\1&3\end{pmatrix},κ∞≈16\kappa_\infty\approx16,四位算术下 x1x_1 全错;换行后全对
Householder H=I−2wwTH=I-2ww^{\mathsf T},对称正交,H2=IH^2=I,镜面反射;v=x+sign⁡(x1)∥x∥2e1v=x+\operatorname{sign}(x_1)\|x\|_2e_1
Givens 只转 (i,k)(i,k) 两行,c=xi/rc=x_i/r、s=xk/rs=x_k/r;带状/局部清零时用
QR A=QRA=QR,QQ 正交、RR 上三角;正交变换保 2 范数,最小二乘化归 Rx=c1Rx=c_1
κ\kappa 被平方 κ2(ATA)=κ2(A)2\kappa_2(A^{\mathsf T}A)=\kappa_2(A)^2;正规方程的致命伤
CGS vs MGS vs HH κ≈1.7×108\kappa\approx1.7\times10^8 时正交性误差:0.50.5 / 7×10−97\times10^{-9} / 10−1510^{-15}
Cholesky A=LLTA=LL^{\mathsf T},要求对称正定;不用选主元;ljj2l_{jj}^2 = LU 第 jj 个主元
条件数 κ(A)=∥A∥∥A−1∥≥1\kappa(A)=\|A\|\|A^{-1}\|\ge1;κ2=σmax⁡/σmin⁡\kappa_2=\sigma_{\max}/\sigma_{\min}
误差放大 ∥δx∥∥x∥≤κ∥δb∥∥b∥\dfrac{\|\delta x\|}{\|x\|}\le\kappa\dfrac{\|\delta b\|}{\|b\|};κ\kappa 是上界不是等号
Hilbert κ2\kappa_2:n=3n=3 为 524524,n=6n=6 为 1.5×1071.5\times10^{7},n=12n=12 为 1.8×10161.8\times10^{16}
残差 ≠ 误差 残差小只说明是邻近问题的解;两者差一个 κ\kappa
迭代收敛判据 xk+1=Bxk+gx_{k+1}=Bx_k+g 对任意初值收敛   ⟺  ρ(B)<1\iff\rho(B)<1
三种迭代矩阵 BJ=D−1(L+U)B_J=D^{-1}(L+U);BGS=(D−L)−1UB_{GS}=(D-L)^{-1}U;Lω=(D−ωL)−1((1−ω)D+ωU)L_\omega=(D-\omega L)^{-1}((1-\omega)D+\omega U)
充分条件 严格对角占优 ⟹ 两者都收敛;对称正定 ⟹ GS 收敛、SOR 对 ω∈(0,2)\omega\in(0,2) 收敛
相容次序 ρ(BGS)=ρ(BJ)2\rho(B_{GS})=\rho(B_J)^2;ωopt=21+1−μ2\omega_{\text{opt}}=\frac{2}{1+\sqrt{1-\mu^2}},ρ=ωopt−1\rho=\omega_{\text{opt}}-1
SOR 的 ω\omega ω∉(0,2)\omega\notin(0,2) 必发散(det⁡Lω=(1−ω)n\det L_\omega=(1-\omega)^n);超过 ωopt\omega_{\text{opt}} 后 ρ=ω−1\rho=\omega-1 上升
幂法 uk=Auk−1/μku_k=Au_{k-1}/\mu_k;μk→λ1\mu_k\to\lambda_1;速度 =∣λ2/λ1∣=|\lambda_2/\lambda_1|;ρ→1\rho\to1 时极慢(0.990.99 需 ∼1375\sim1375 步)
反幂法 对 A−1A^{-1} 用幂法得 ∣λ∣|\lambda| 最小者;带位移 μ\mu 可求任意特征值,一两步收敛
CG 对称正定;piTApj=0p_i^{\mathsf T}Ap_j=0;理论 nn 步精确;界 2(κ−1κ+1)k2\big(\frac{\sqrt\kappa-1}{\sqrt\kappa+1}\big)^k
GMRES 一般方阵;在 x0+Kkx_0+\mathcal K_k 上最小化 ∥b−Ax∥2\|b-Ax\|_2;存储线性增长,需重启
为什么用迭代 直接法 O(n3)O(n^3) + fill-in(二维 Laplacian 实测 5×5\times)+ 存储爆;迭代只做矩阵乘向量
Laplacian 条件数 一维 κ≈4π2(n+1)2\kappa\approx\frac{4}{\pi^2}(n+1)^2;故 CG 步数 ∼n\sim n,需预处理

九、出处与延伸(可选,不影响阅读)

  • 主源:《数值线性代数及其应用》(金小庆、魏益民、赵志 著,科学出版社,2015,第 2 版中译本)。各节对应关系如下,页码为该书的印刷页码:
    • 第 1 章「绪论」p1–5:数值线性代数的三大问题(方程组、最小二乘、特征值)、Cramer 法则的运算量对比、病态(问题属性)与不稳定(算法属性)的区分、直接法与迭代法、线性/超线性收敛。
    • 第 2 章「高斯消去法」p7–16:三角方程组的前代与回代、高斯变换矩阵、LU 分解的存在唯一性(顺序主子式全非奇异)、置换矩阵的四条性质、部分主元与全主元、Cholesky 分解与算法。
    • 第 3 章「扰动与误差分析」p19–28:向量 pp 范数与矩阵范数、诱导范数、∥A∥1\|A\|_1 与 ∥A∥∞\|A\|_\infty 的显式公式、∥A∥2=λmax⁡(ATA)\|A\|_2=\sqrt{\lambda_{\max}(A^{\mathsf T}A)}、Frobenius 范数、谱半径、条件数的定义与两个扰动定理、2.00012.0001 型病态例子(2000020000 倍放大)。
    • 第 4 章「最小二乘问题」p37–46:最小二乘的定义与正规方程、ATAA^{\mathsf T}A 丢失信息的例子、Householder 变换与 house 算法、Givens 旋转、QR 分解的存在唯一性、用 QR 解最小二乘。
    • 第 5 章「经典迭代法」p49–61:A=D−L−UA=D-L-U 的拆法、Jacobi 与 Gauss–Seidel、收敛定理(ρ(B)<1\rho(B)<1)、严格/弱对角占优、对称正定情形的收敛性、收敛速度的定义 Rk(M)=−ln⁡∥Mk∥1/kR_k(M)=-\ln\|M^k\|^{1/k}、SOR 的迭代形式与 0<ω<20<\omega<2 的必要性、性质 A 与相容次序、最优 ω\omega。
    • 第 6 章「Krylov 子空间方法」p63–73:最速下降法、CG 的推导与四条正交性质、实用 CG 算法、CG 的收敛界(含 Chebyshev 多项式)、特征值聚簇时的加速、GMRES 的定义与终止性。
    • 第 7 章「非对称特征值问题」p85–93:Schur 分解、幂法及其收敛定理(速度由 ∣λ2/λ1∣|\lambda_2/\lambda_1| 决定)、反幂法与带位移反幂法、QR 方法、上 Hessenberg 化。
  • 范数与内积的抽象背景:《高等线性代数》(GTM 135 中译本)讲范数等价性与算子范数的部分,可对照 22 讲。
  • 数值表与公式核对:Bronstein《数学手册》俄文第 10 版与英文第 6 版均收录常用矩阵范数、条件数与 Hilbert 矩阵逆的显式公式(Hn−1H_n^{-1} 的元素是整数,H3−1=(9−3630−36192−18030−180180)H_3^{-1}=\begin{pmatrix}9&-36&30\\-36&192&-180\\30&-180&180\end{pmatrix},可直接用来验算 3.5 节)。
  • 术语别名:部分主元选取 = partial pivoting = 列主元消去;全主元 = complete pivoting;置换矩阵 = permutation matrix;条件数 = condition number,记法 κ\kappa、cond⁡\operatorname{cond};谱半径 = spectral radius,ρ\rho;Gauss–Seidel 也译「塞德尔迭代」;SOR = 逐次超松弛 = successive overrelaxation;CG = 共轭梯度 = conjugate gradient;GMRES = 广义极小残量 = generalized minimum residual。
  • 一个提醒:不同教材对 ∥A∥2\|A\|_2 的定义统一(最大奇异值),但对「条件数」默认用哪个范数并不统一——数值分析书多用 κ2\kappa_2,偏微分方程书常报 κ∞\kappa_\infty(因为行和好算)。看到「条件数」三个字,先确认是哪个范数,本例中 κ2=5.83\kappa_2=5.83 而 κ∞=8\kappa_\infty=8,差 37%,不影响结论但会影响你估的有效位数。