共軛梯度法的推導

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

迭代方法。共軛梯度法可以從不同的角度推導而得,包括作為求解最優化問題的共軛方向法的特例,以及作為求解特徵值問題的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.