ヤコビ法

提供: testwiki
ナビゲーションに移動 検索に移動

テンプレート:出典の明記 テンプレート:Distinguish ヤコビ法(ヤコビほう)とはn元の連立一次方程式Ax=b反復法で解く手法の1つである。ドイツ数学者カール・グスタフ・ヤコブ・ヤコビの名前にちなむ。

n正方行列Aは、上三角行列U、下三角行列L対角行列Dとすると、A=L+D+Uと書ける。このようにすると、まず以下のような変形ができる。

(L+D+U)x=bDx=b(L+U)x

この式を満たす xを求める。初期値x(0)に対して、  k回目の反復で得られたx1の値をx1(k)と書くと、 以下のような反復法の漸化式ができる。

Dx(k+1)=b(L+U)x(k)

この式は以下のように変形できる。

x(k+1)=D1{b(L+U)x(k)}

もし、解が収束した場合、その場合はx1(k+1)x1(k)は共通の値x1(*)を持つことになる。このとき、

x(*)=D1{b(L+U)x(*)}

となり、変形していくと元の連立方程式の形に戻る。 したがって、ヤコビ法で解が収束した場合、その解は連立方程式の解となる。 また、その収束の十分条件は、係数行列の対角要素の絶対値が非対角要素の絶対値よりも相対的に大きい場合、すなわち対角優位な行列である場合に収束する。これはガウス=ザイデル法も同様である。

ヤコビ法の式はベクトルxの各成分ごとに次のような式で書くことができ、数値解析ではこの式が用いられる。

xi(k+1)=1aii(bij=1i1aijxj(k)j=i+1naijxj(k))=1aii(bijinaijxj(k))

ガウス=ザイデル法とヤコビ法を加速する方法としてはSOR法が知られている。

具体例

3元の連立一次方程式、すなわち、

(a11a12a13a21a22a23a31a32a33)(x1x2x3)=(b1b2b3)

を解くことを考える。k回目の反復で得られたx1の値をx1(k)と書く。 初期値x(0)は、適当な値、例えばゼロベクトルでもかまわない。

x1(k+1)=(b1a12x2(k)a13x3(k))/a11

x2(k+1)=(b2a21x1(k)a23x3(k))/a22

x3(k+1)=(b3a31x1(k)a32x2(k))/a33

という反復を繰り返していく。 ヤコビ法は、直列計算ではガウス=ザイデル法よりも遅いが、ガウス=ザイデル法と異なり各式が他の式に依存せず並列性があるため並列計算でも用いられる。

固有値問題

実対称行列の固有値および固有ベクトルを求める繰り返し計算手法においてもヤコビ法と呼ばれる解法がある(紛らわしさを避けるためにはヤコビ対角化法という)。  n次の実対称行列 Aについて次のように  G(p,q,θ) による相似変換、すなわちギブンス回転を実行することにより、非対角要素  aij(ij) の最大値  apq が0となるようにする。

 B=GTAG

これによって行列  B の各要素は次のようになる。但し、  i,jp,q である。

{bpp=appcos2θ+aqqsin2θ2apqsinθcosθ,bqq=appsin2θ+aqqcos2θ+2apqsinθcosθ,bpq=bqp=12(appaqq)sin2θ+apqcos2θ,bij=aij,bpj=apjcosθaqjsinθ,bqj=apjsinθ+aqjcosθ,bip=aipcosθaiqsinθ,biq=aipsinθ+aiqcosθ

ここで、 apq0 のとき  bpq=0 となる  θ は上式より

tan2θ=2apq(appaqq)

から求められることがわかる。 ギブンス回転をすべての非対角要素がほぼ0になるまで繰り返せば、実対称行列 A が対角化された形となるから、その対角要素が A の固有値となる。また、 A がk回変換された行列を Ak 、k回目のギブンス回転を表す直交行列を Gk と表せば、

Ak=GkTAk1Gk=UkTAUk
ここに、 Uk=G1G2G3Gk1Gk

となる。 Ak のすべての非対角要素がほぼ0となったとき、 Uk は固有ベクトルを並べた行列となっている。 なお、ギブンス回転の繰り返し過程において、一度は0になった要素がその後の変換により0でなくなることもあるが、変換の繰り返しによって非対角項は0に近づいてゆく。

なお上記のように、ヤコビの対角化法は実対称(あるいは複素エルミート)の場合が最も良く知られておりその場合だけしか適用できないものと考えられるかもしれない。しかし非対称な行列に対するヤコビ法もあって研究もされプログラムも公開されていたがQR法が登場した後では行列が非対称な場合にはほとんどQR法だけが使われているため今日では非対称な場合についてはほとんど認知されていないようである(複素エルミートの場合についてもその具体的な実装に言及している文献は稀であり,もっぱら実対称行列の場合だけがよく知られている)。

関連項目

テンプレート:Linear algebra