建構正交規範的 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 的誤差界中清晰可見:收斂速度受條件數支配。良態矩陣幾步即收斂;病態矩陣則可能爬行數千步。正是這一事實,使下一篇——預處理——不是可選的修飾,而是「能完成的求解器」與「永不完成的求解器」之間的分界。