共役勾配法を理解する(2)

/ Math Numerical

n×nの正定値対象行列AxRnbRnについて関数

(1)f(x)=12xTAxbTx

を反復法によって最小化するとき、互いにA共役な方向について探索を行えば高々n回の反復で最小値に収束する。このときのxが線形方程式Ax=bの解であることは前のページで説明した。

A共役の定義を説明する前に簡単な式変形によってA共役の定義の理由を説明する。

まず行列Aが正定値対象行列であることから行列AはあるQを用いてA=QTQと分解できる。行列の性質として当たり前だと感じるかもしれないが念のため少しわかりやすく説明しておく。対称行列はPTP=Iであるような直行行列Pを用いてPTAP=Dと対角化できることは知っているだろう。このときDAの固有値λ1,λ2,,λnが並ぶ次のような対角行列である。

D=(λ1λ2λn)

別な言い方をすると行列AA=PDPTと固有値分解できるともいえる。ここまでは行列Aが対称行列であることしか使っていないので正定値でなければ変形はここまで。いま行列Aは正定値だから正定値性の定義のひとつよりAの全ての固有値は正なので、固有値を並べた対角行列DD=DDTのように分解できる。ここでDとは次のような行列である。

D=(λ1λ2λn)

全ての固有値が正なのでDの成分が虚数となることはない。これを使うとAは次のように書ける。

A=PDPT=PDDTPT=(DTPT)TDTPT=QTQ

最後にQ=DTPTとおいた。これで正定値対象行列AA=QTQと分解できることが分かった。

次に、前のページのように関数f(x)Ay=bを満たすようなy(線形方程式の解)で平行移動して変形する。

f(x)=12xTAx+C

ここで最小化に無関係な部分は定数としてCとおいた。前述の通りこの関数f(x)が最小となるのは原点x=0である。ここに行列Aの分解A=QTQを代入すると

f(x)=12xTQTQx+C=12(Qx)TQx+C

となる。ここでx^=Qxと線形変換すると

f(x)=12x^Tx^+C

これは成分x^=(x^1,x^2,,x^n)Tで書くことができて次のようになる。

f(x)=12i=1nx^i2+C

いろいろと変形してf(x)の原型がなくなってしまったので一度整理すると、まず関数f(x)の最小値を与えるyを原点にするように平行移動し、行列AA=QTQと分解するQによってx^=Qxという線形変換を施すと上のような形になるといえる。

ここで、変換後の最急降下法を使うと高々n回の反復で解に収束する。これを