從共軛方向法推導
共軛梯度法可以看作是應用於二次函數最小化的共軛方向法的特例
-
共軛方向法
在共軛方向上求最小化:
-
從最初的猜測 開始,以及相應的殘差 , 並通過公式計算迭代和殘差
-
其中, 為一系列相互共軛的方向,例如:
- ,對於任何
由於共軛方向法沒有給出用於選擇方向的公式,因此該方法具有誤差
而共軛方向法也有多種方法分支,包括共軛梯度法和高斯消元法。
從Arnoldi/Lanczos迭代推導
共軛梯度法可以看作Arnoldi/Lanczos迭代應用於求解線性方程組時的一個變種。
一般Arnoldi方法
Arnoldi迭代從一個向量 開始,通過定義 ,其中
-
逐步建立Krylov子空間
-
的一組標準正交基 。
換言之,對於 , 由將 相對於 進行Gram-Schmidt正交化然後歸一化得到。
寫成矩陣形式,迭代過程可以表示為
-
其中
-
當應用於求解線性方程組時,Arnoldi迭代對應於初始解 的殘量 開始迭代,在每一步迭代之後計算 和新的近似解 .
直接Lanzcos方法
在餘下的討論中,我們假定 是對稱正定矩陣。由於 的對稱性, 上Hessenberg矩陣 變成對陣三對角矩陣。於是它可以被更明確地表示為
-
這使得迭代中的 有一個簡短的三項遞推式。Arnoldi迭代從而簡化為Lanczos迭代。
由於 對稱正定, 同樣也對稱正定。因此, 可以通過不選主元的LU分解分解為
-
其中 和 有簡單的遞推式:
-
改寫 為
-
其中
-
此時需要觀察到
-
實際上, 和 同樣有簡短的遞推式:
-
通過這個形式,我們得到 的一個簡單的遞推式:
-
以上的遞推關係立即導出比共軛梯度法稍微更複雜的直接Lanczos方法。
從正交性和共軛性導出共軛梯度法
如果我們允許縮放 並通過常數因子補償縮放的係數,我們可能可以得到以下形式的更簡單的遞推式:
-
作為簡化的前提,我們現在推導 的正交性和 的共軛性,即對於 ,
-
各個殘量之間滿足正交性的原因是 實際上可由 乘上一個係數而得。這是因為對於 , ,對於 ,
-
要得到 的共軛性,只需證明 是對角矩陣:
-
是對稱的下三角矩陣,因而必然是對角矩陣。
現在我們可以單純由 的正交性和 的共軛性推導相對於縮放後的 的常數因子 和 。
由於 的正交性,必然有 。於是
-
類似地,由於 的共軛性,必然有 。於是
-
推導至此完成。
參考文獻