又稱共軛斜量法,是解線性代數方程組和非線性方程組的一種數值方法,例如對線性代數方程組

Axf, (1)

式中 An階矩陣, xfn維列向量,當 A對稱正定時,可以證明求(1)的解 x *和求二次泛函

(2)

的極小值問題是等價的。此處( x,у)表示向量 x和у的內積。由此,給定瞭初始向量 x ,按某一方向去求(2)取極小值的點 x ,就得到下一個迭代值 x ,再由 x 出發,求 x 等等,這樣來逼近 x *。若取求極小值的方向為 Fx ( k=1,2,…)處的負梯度方向就是所謂最速下降法,然而理論和實際計算表明這個方法的收斂速度較慢,共軛梯度法則是在 x 處的梯度方向 r 和這一步的修正方向 p 所構成的二維平面內,尋找使 F減小最快的方向作為下一步的修正方向,即求極小值的方向 p (其第一步仍取負梯度方向)。計算公式為

再逐次計算

\ n

\ n

\ n

\ n

   (k=1,2,…)。可以證明當ij時,

從而 p p 形成一共軛向量組; r r ,…形成一正交向量組。後者說明若沒有舍入誤差的話,至多 n次迭代就可得到(1)的精確解。然而在實際計算中,一般都有舍入誤差,所以 r r ,…並不真正互相正交,而 x x ,…等也隻是逐步逼近(1)的真解,故一般將共軛梯度法作為 迭代法來使用。

  近來在解方程組(1)時,常將共軛梯度法同其他一些迭代法結合作用。特別是對病態方程組這種方法往往能收到比較顯著的效果。其方法是選取一對稱正定矩陣B並進行三角分解,得B=LLT。將方程組(1)化為

    hу=b, (3)

此處 yl T xbl -1 fhl -1 A l -T,而 。再對(3)用共軛梯度法,計算公式為

\n

\n

\n

\n

\n

   (k=0,1,2,…)適當選取B,當B很接近A時,h的條件數較之A大大減小,從而可使共軛梯度法的收斂速度大為加快,由一些迭代法的矩陣分裂A=M-N,可選取M為這裡的B,例如對稱超松弛迭代(SSOR),強隱式迭代(SIP)等,這類方法常稱為廣義共軛梯度法或預條件共軛梯度法,它也可用於解代數特征值問題。

  

參考書目

 馮康等編:《數值計算方法》,國防工業出版社,北京,1978。