楽遊の部屋Gakuyu

4.3 連立1次方程式の反復解法

 反復法は,未知数に適当な初期値を仮定し,必要な精度に到達するまで同じ手 順を繰り返して,解を求める方法である。
 方程式の元数が非常に多く(数千元以上),係数行列がスパース行列(要素の大部分 が0の行列)の場合は,直接法(ガウスの消去法など)よりは,反復法が有利である。 しかし,反復法の公式の多くは,無条件に収束しない(反復回数の増加とともに近似 解が真の解から離れていく)から,適用に際しては収束条件に注意しなければならな い。

4.3.1 ヤコビ法

[A]ヤコビ法の考え方

   まず,ヤコビ法の考え方を,次の例題によって,説明しよう。解こうと する連立1次方程式は次式とする。

   4x+ y=8                        @
    x+2y=5.5

これを解くには次のようにする。まず,第1式をxについて解き,第2式をy について解くと,次のようになる。

   x=2.0−0.25y                       A
   y=2.75−0.5x

ここで,xとyに適当な値を仮定して,この2つの式の右辺に代入する。適当 な値は何でもよいが,例えば,x=y=0 として右辺に代入すると,次のように なる。

   x=2.0-0.25・0=2.0                     B
   y=2.75-0.5・0=2.75

この値をまた,式Aの右辺に代入すると,次のようになる。

   x=2.0-0.25×2.75=1.3125                  C
   y=2.75-0.5×2.0=1.75

このように,つぎつぎと代入を繰り返していくと,xとyは, 次のように,真 の解に近づいていく。

   表4.1 ヤコビ法による連立1次方程式@の解を求める途中の過程

 0 2.0 1.3125 1.5625 1.4765624 ・・・・  →1.5
 0 2.75 1.75 2.09375 1.96875 ・・・・  →2.0
 
 

この反復法がヤコビ法(Jacob)である。

 以上の手順を,次のn元連立1次方程式の場合について一般化しよう。

  a11+a12+ ・・・・・+a1n=b
  a21+a22+ ・・・・・+a2n=b
   ・・・・・・・・・・・・・・・・・・・・・・
  ai1+ai2+ ・・・・・+ain=b                 
    ・・・・・・・・・・・・・・・・・・・・・・
  an1+an2+ ・・・・・+ann=b
      (4.51)

いま,対角要素a11,a22,・・・,ann  は0でないとして,x,x,・・・,xを求めると,次のようになる。

  x=(b−a12− a13・・・・・−a1n)/a11
   x=(b−a21− a23・・・・・−a2n)/a22
   ・・・・・・・・・・・・・・・・・・・・・・・                           
  x=(b−ai1・・・ −aii−1i−1−ai+1 i+1・・・−ain)/aii
   ・・・・・・・・・・・・・・・・・・・・・・・
  x=(b−an1− an2−・・・・・−ann−1 n−1)/ann
      (4.52)

上式を用いて,まず,1番目の式の未知数x,・・・・,x に近似値を代入してxを求め,2番目の式からx以外の未知数に近似値を代入してxを求める。このように, 右辺の未知数に近似値を代入し,それによって左辺の未知数のより良い近似解を計 算する。これを何回も繰り返してやれば,解の精度が高くなってくる。
 いま,k回繰り返して,x,x,・・・,xの「第k近似解」を,xの右肩に(k)をつけて,

    x(k),x(k) ,・・・・,x(k)

のように表すとする。これをもとに第(k+1)近似解求める反復公式は次の ようになる。

  x(k+1)=(b−a12 (k)−a13 (k)・・・・・−a1n(k) )/a11
  x(k+1)=(b−a21 (k)−a23 (k)・・・・・−a2n(k) )/a22
   ・・・・・・・・・・・・・・・・・・・・・・・                                         
  x(k+1)=(b−ai1 (k)・・・−aii−1 i−1(k)−ai+1i+1 (k)・・・−ain(k) )/aii
   ・・・・・・・・・・・・・・・・・・・・・・・
  x(k+1)=(b−an1 (k)−an2 (k)−・・・・・−ann−1n−1 (k))/ann
    (4.53)

上式をまとめて書くと,次のようになる。



               (i=1,2,・・・,n)

    (4.54)
 

これがヤコビ法の公式である。

 

[B]ヤコビ法の手順とフローチャート

  ヤコビ法の公式(4.54)を用いて,次の手順で連立1次方程式の解を求める。

(0)k=0として,ヤコビの公式(4.54)の右辺のx (0),x(0),・・・,x (0)に任意の値を与え、公式(4.54)より,
           x(1),x (1),・・・,x(1)
   を求める。

(1)次に,k=1として,いま求めたx(1) ,x(1),・・・,x(1) を式(4.54)の右辺に代入し,
           x(2),x (2),・・・,x(2)
  を求める。

(2)次に,k=2として,いま求めたx(2) ,x(2),・・・,x(2) を式(4.54)の右辺に代入し,
           x(3),x (3),・・・,x(3)
  を求める。

        ・・・・・・・・・・・・・・

(k)この反復を繰り返して,あるkに対して求めた解,
           x(k+1),x(k+1),・・・,x(k+1)
   が,その前の解  x(k) ,x (k) ,・・・,x(k) に必要な精度 まで一致したら,
   そのときの    x(k+1),x(k+1),・・・,x(k+1)
           x,x,・・・,x
  の解とする。

 以上の手順をフローチャートに示した結果を図4.37に示す。

 図中に用いた収束判定条件は次式を用いた。

      dx/|xnew|<ε                 (4.55)
   ここで,dx=|xnew−xo(i)|
       xnew :いま,求めた近似解
       xo(i) :前回に求めた近似解
       ε   :許容相対誤差

収束判定条件がすべてのxに対して成り立っていることが,反復 終了のためには必要である。反復は,式(4.55)が成り立つまで続けられる。

4.3.2 ガウス・ザイデル法

[A]ガウス・ザイデル法の考え方

  ヤコビ法の公式(4.54)の右辺を見ると,総和が2つある。第1の総和は, j=1からi−1であり,第2の総和は,j=i+1からnまでである。 第1の 総和のx(k)をすでに計算されたx (k+1)で置き換えると,最新のxの値を使っている ことになり,収束が早くなることが予想される。すなわち,次のガウス・ザイデル 法(Gauss-Seidel)の公式が得られる。





 

ガウス・ザイデル法の公式


 


  (4.56)

 


例題4.3.1 次の連立1次方程式をガウス・ザイデル法で解け。
     4x+y=8
     x+2y=5.5
 

[解]第1式をxについて,第2式をyについて,解くと次のようになる。
      x=2.0−0.25y  @
      y=2.75−0.5x  A
@式に初期値y=0を代入すると,   x(1)=2.0−0.25・0=2.0
A式に上で得たx=2.0を代入すると, y(1)=2.75−0.5×2.0=1.75
@式に上で得たy=1.75を代入すると, x(2)=2.0−0.25×1.75=2.0−0.4375=1.5625
A式に上で得たx=1.5625を代入すると, y(2)=2.75−0.5×1.5625=1.96875
@式に上で得たy=1.96875を代入すると, x(3)=2.0−0.25×1.96875=1.5078125
A式に上で得たy=1.5078125を代入すると, y(3)=2.75−0.5×1.5078125
                       =1.99609375
これを繰り返せば, x=1.5,y=2.0 が得られる。
[例題4.3.1終わり]

 

[B]ガウス・ザイデル法のフロー・チャート

   ガウス・ザイデル法の公式(4.56)にしたがって,ガウス・ザイデル法の フロー・チャートを図4.38に示した。このガウス・ザイデル法は,つねに最新の xを使うので,古いx(k)と新しい x(k+1)の両方を記憶しておく必要がない。した がって,ヤコビ法(図4.37)のように,xo(j)が必要ないし,x(j)をxo(j)に 入れ換える操作も不要になり,フロー・チャートは簡単になる。


これらの手法はどの場合でも収束するわけではなく、収束するための十分条件 は次の条件を満足することである。すなわち、
 係数マトリックスの各行とも、対角要素の絶対値|aii|が非対 角要素の絶対値の和より大きいことである。

       (4.57)