ガウス=ザイデル法

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

テンプレート:出典の明記 数値線形代数におけるガウス=ザイデル法(ガウス=ザイデルほう、テンプレート:Lang-en-short)とはn元の連立一次方程式Ax=b反復法で解く手法の1つである。

解説

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

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

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

(L+D)x(k+1)=bUx(k)

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

x(k+1)=D1(bLx(k+1)Ux(k))

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

x(*)=D1(bLx(*)Ux(*))

となり、変形していくと元の連立方程式の形に戻る。 したがって、ガウス=ザイデル法で解が収束した場合、その解は連立方程式の解となる。

ガウス=ザイデル法の式はベクトルxの各成分ごとに次のような式で書くことができ、数値解析ではこの式が用いられる。

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

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

収束性

ガウス=ザイデル法は、係数行列が正定値対称ならば収束する。

また、係数行列の各行で非対角要素の絶対値の和が対角要素の絶対値よりも小さい場合:

|aii|>ij|aij|.

すなわち対角優位な行列ならば収束する(これはヤコビ法も同様である)。

係数行列が正定値対称ならばガウス=ザイデル法が収束することを利用して、Ax=bを解く代わりに、同値であるATAx=ATbを解く方法が考えられる。 この方法はxの第i行要素xiを更新するごとに確実に残差が減少する反面、条件数がもとの行列Aの条件数の二乗になるため収束は遅くなる傾向となる。

上記のようにAx=bの代わりにATAx=ATbを解く方法は非対称、非正定値行列を共役勾配法で解く際のテクニックにも利用される。 しかしながらCG法においても条件数が増加することにより収束性は悪化する。

具体例

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

(a11a12a13a21a22a23a31a32a33)(x1x2x3)=(b1b2b3)

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

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

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

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

という反復を繰り返していく。 ここで、2番目の式でx1(k+1)が使われていることに注意する。 次々に新しいxi(k+1)を求めては、次の式で使われる。 このために、ガウス=ザイデル法は、このままでは並列計算できないので、 上記の反復式の右辺のxi(k+1)の代わりにxi(k)を使う、 すなわち、新しいx(k+1)を別の場所に記憶しておいて、 一斉にxを更新するヤコビ法を使用する。

ヤコビ法は、直列計算ではガウス=ザイデル法よりも遅いが、容易に並列計算できる。

関連項目

テンプレート:Linear algebra