共軛梯度法的推導

維基百科,自由的百科全書

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

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