本文由手写笔记《高级数值分析》扫描件的 LaTeX 转录稿改写而来,忠实保留原稿的文字与公式。
定理与定义的编号是本站为方便指代所加,原稿只有名称、没有编号。
5.1 引言
考虑线性方程组
Ax=b.
将 A 作分裂 A=M−N,可得定常迭代格式
x(k+1)=M−1Nx(k)+M−1b.
常见的分裂及其迭代格式如下(记 A=D−L−U):
Jacobi:x(k+1)Gauss–Seidel:x(k+1)SOR:x(k+1)=D−1(L+U)x(k)+D−1b,=(D−L)−1Ux(k)+(D−L)−1b,=(D−ωL)−1[(1−ω)D+ωU]x(k)+ω(D−ωL)−1b.
矩阵迭代也可写成不动点形式
x(k+1)=Hx(k)+g=φ(x(k)).
一般迭代格式记为
x(0)=φ0(A,b),x(k)=φk(x(0),…,x(k−1);A,b).
误差与残量分别为
e(k)=x(k)−x∗,r(k)=b−Ax(k)=−Ae(k).
于是 Jacobi、Gauss–Seidel 与 SOR 的残量形式为
x(k+1)x(k+1)x(k+1)=x(k)+D−1r(k),=x(k)+(D−L)−1r(k),=x(k)+ω(D−ωL)−1r(k).
若采用 Jacobi 型预条件,则
r(k+1)=r(k)−AP−1r(k)≡Br(k).
5.2 最速下降法
定义能量函数
E(x)=21(Ax,x)−(b,x),
其中 A=AT≻0。则 Ax=b 的解 x∗ 等价于 E(x) 的唯一极小点,且
∇E(x)=Ax−b,−∇E(x(k))=r(k).
取下降方向 d(k),令
x(k+1)=x(k)+αkd(k),αk>0,
使 E(x(k+1))<E(x(k))。最速下降方向为 d(k)=r(k)。沿该方向作精确线搜索:
αk=argαminE(x(k)+αr(k))=(Ar(k),r(k))(r(k),r(k)).
因此最速下降法为
r(k)αkx(k+1)r(k+1)=b−Ax(k),=(Ar(k),r(k))(r(k),r(k)),=x(k)+αkr(k),=r(k)−αkAr(k).
终止条件可取 r(k)2≤ε;相邻两步残量满足
(r(k+1),r(k))=0。
定理 5.1(最速下降法收敛性)
设 A∈Rn×n 对称正定,特征值满足
λ1≥⋯≥λn>0。则
x(k)−x∗2≤λnλ1(λ1+λnλ1−λn)kx(0)−x∗2.
初值 x(0) 可任意选取,并且 E(x(0))>E(x(1))>⋯。
5.3 共轭梯度法
在 Krylov 子空间
Kk(A,r(0))=span{r(0),Ar(0),…,Ak−1r(0)}
中寻找近似解。对 A=AT≻0,定义 A-内积
(u,v)A=(Au,v),∥u∥A2=(Au,u).
若 (pi,pj)A=0 (i=j),则称 {pi} 为 A-共轭方向组。若
x∗=∑i=0n−1αipi,则与 pk 作内积得到
αk=(Apk,pk)(b,pk).
x(k+1)=x(k)+αkpk.
共轭梯度法的三项递推为
x(k+1)r(k+1)p(k+1)=x(k)+αkp(k),=r(k)−αkAp(k),=r(k+1)+βkp(k),
其中
αk=(p(k),Ap(k))(r(k),r(k)),βk=(r(k),r(k))(r(k+1),r(k+1)).
初始取 r(0)=b−Ax(0)、p(0)=r(0)。
定理 5.2(共轭梯度法的最优性)
对任意 x∈x(0)+Kk(A,r(0)),共轭梯度迭代点使
x(k)−x∗A=x∈x(0)+Kk(A,r(0))min∥x−x∗∥A,
并且 r(k)⊥Kk(A,r(0)),搜索方向两两 A-共轭。
若 κ(A)=λmax/λmin,则有经典估计
x(k)−x∗A≤2(κ(A)+1κ(A)−1)kx(0)−x∗A.
条件数越大,收敛越慢;若特征值聚集,则收敛较快。
5.4 MINRES
对对称(可不定)矩阵 A,在 Krylov 子空间中取
x(k)∈x(0)+Kk(A,r(0)),r(k)2=min∥b−Ax∥2,
所得方法称为 MINRES。由 Lanczos 分解,令
Qk=[q1,…,qk],q1=r(0)2r(0),
则
AQk=Qk+1Tk,
其中 Tk 为上 Hessenberg(对称情形为三对角)矩阵。设
β=r(0)2,x=x(0)+Qky,则
∥b−Ax∥2=βe1−Tky2.
因此每一步只需解小规模最小二乘问题
yk=argyminβe1−Tky2,x(k)=x(0)+Qkyk,
可用 Givens 变换进行 QR 分解。
5.5 GMRES
对一般(非对称)矩阵 A,GMRES 在
x(0)+Kk(A,r(0)) 中最小化残量二范数。取
q1=r(0)2r(0),
通过 Arnoldi 过程得到
AQk=Qk+1Hk,
其中 Qk+1 列正交、Hk 为上 Hessenberg 矩阵。令
β=r(0)2,则
x(k)=x(0)+Qkyk,yk=argyminβe1−Hky2.
利用 Givens 旋转逐步更新 Hk 的 QR 分解,即可高效求得 yk 和
x(k);当 r(k)2≤ε 时停止。