共軛梯度法的推導

數值線性代數中,共軛梯度法是一種求解對稱正定線性方程組

迭代方法。共軛梯度法可以從不同的角度推導而得,包括作為求解最優化問題的共軛方向法的特例,以及作為求解特徵值問題的Arnoldi/Lanczos迭代的變種。

本條目記述這些推導方法中的重要步驟。

從共軛方向法推導

共軛梯度法可以看作是應用於二次函數最小化的共軛方向法的特例

 

共軛方向法

在共軛方向上求最小化:

 

從最初的猜測 開始,以及相應的殘差  , 並通過公式計算迭代和殘差

 

其中,  為一系列相互共軛的方向,例如:

 ,對於任何 

由於共軛方向法沒有給出用於選擇方向的公式,因此該方法具有誤差  

而共軛方向法也有多種方法分支,包括共軛梯度法和高斯消元法

從Arnoldi/Lanczos迭代推導

共軛梯度法可以看作Arnoldi/Lanczos迭代應用於求解線性方程組時的一個變種。

一般Arnoldi方法

Arnoldi迭代從一個向量 開始,通過定義 ,其中

 

逐步建立Krylov子空間

 

的一組標準正交基 

換言之,對於  由將 相對於 進行Gram-Schmidt正交化然後歸一化得到。

寫成矩陣形式,迭代過程可以表示為

 

其中

 

當應用於求解線性方程組時,Arnoldi迭代對應於初始解 的殘量 開始迭代,在每一步迭代之後計算 和新的近似解 .

直接Lanzcos方法

在餘下的討論中,我們假定 是對稱正定矩陣。由於 的對稱性, 上Hessenberg矩陣 變成對陣三對角矩陣。於是它可以被更明確地表示為

 

這使得迭代中的 有一個簡短的三項遞推式。Arnoldi迭代從而簡化為Lanczos迭代。

由於 對稱正定, 同樣也對稱正定。因此, 可以通過不選主元LU分解分解為

 

其中  有簡單的遞推式:

 

改寫 

 

其中

 

此時需要觀察到

 

實際上,  同樣有簡短的遞推式:

 

通過這個形式,我們得到 的一個簡單的遞推式:

 

以上的遞推關係立即導出比共軛梯度法稍微更複雜的直接Lanczos方法。

從正交性和共軛性導出共軛梯度法

如果我們允許縮放 並通過常數因子補償縮放的係數,我們可能可以得到以下形式的更簡單的遞推式:

 

作為簡化的前提,我們現在推導 的正交性和 的共軛性,即對於 ,

 

各個殘量之間滿足正交性的原因是 實際上可由 乘上一個係數而得。這是因為對於  ,對於 

 

要得到 的共軛性,只需證明 是對角矩陣:

 

是對稱的下三角矩陣,因而必然是對角矩陣。

現在我們可以單純由 的正交性和 的共軛性推導相對於縮放後的 的常數因子  

由於 的正交性,必然有 。於是

 

類似地,由於 的共軛性,必然有 。於是

 

推導至此完成。

參考文獻

  1. Hestenes, M. R.; Stiefel, E. Methods of conjugate gradients for solving linear systems (PDF). Journal of Research of the National Bureau of Standards. 1952年12月, 49 (6) [2010-06-20]. (原始內容 (PDF)存檔於2010-05-05). 
  2. Saad, Y. Chapter 6: Krylov Subspace Methods, Part I. Iterative methods for sparse linear systems 2nd. SIAM. 2003. ISBN 978-0898715347.