构建正交规范的 Krylov 基
原始的 Krylov 向量 r_0, A r_0, A^2 r_0, ... 是数值上的灾难:它们全都朝主特征向量倾斜,因此很快变得近乎平行并丧失线性无关性。在做任何有用之事之前,你必须把它们正交规范化。Arnoldi 迭代正是做这件事——在基生成的同时施加Gram-Schmidt过程——产生 Krylov 子空间的一组正交规范基,并附带产生一个表示 A 在该基上的小型 Hessenberg 矩阵。
共轭梯度:对称性是一份礼物
当 A 是对称正定时,共轭梯度(CG)是首选方法。它把 A x = b 重新表述为最小化能量 f(x) = (1/2) x^T A x - b^T x,其最小值点恰好是解。CG 沿着与所有先前方向 A-正交(共轭)的方向下降,这正是每一步都能依赖两项 Lanczos 递推的原因——无论你迭代多少次,它都只存储寥寥几个向量。
Conjugate Gradient for symmetric positive-definite A x = b:
x = x0; r = b - A*x; p = r; rs = <r,r>
repeat:
Ap = A * p # the one matvec per step
alpha = rs / <p, Ap> # exact line minimum
x = x + alpha * p
r = r - alpha * Ap
rs_new = <r, r>
if sqrt(rs_new) < tol: stop
beta = rs_new / rs # keeps directions A-conjugate
p = r + beta * p
rs = rs_new
Memory: x, r, p, Ap -> just 4 vectors, independent of step count.
Error bound: ||e_k||_A / ||e_0||_A <= 2 ((sqrt(K)-1)/(sqrt(K)+1))^k,
where K = condition number. Small K => fast.GMRES:当对称性不复存在时
大多数真实矩阵并不对称——对流项、非对称耦合、一般算子。这时 CG 的短递推崩溃,你需要 GMRES(广义最小残差法)。在第 m 步它在 x_0 + K_m 中挑出在整个 Krylov 子空间上最小化残差范数 ||b - A x|| 的 x,方法是在来自 Arnoldi 的 Hessenberg 矩阵上求解一个微型最小二乘问题。它的残差单调不增——永不会变差。
两种方法共享一个致命弱点,在 CG 的误差界中清晰可见:收敛速度受条件数支配。良态矩阵几步即收敛;病态矩阵则可能爬行数千步。正是这一事实,使下一篇——预处理——不是可选的修饰,而是“能完成的求解器”与“永不完成的求解器”之间的分界。