Gauss-Seidel反復法(連立方程式の解法)

問題 Gauss-Seidel反復法により、次の連立方程式を解きなさい。
10 ' Program GSEID
20 ' GAUSS-SEIDEL法による連立方程式の解法
25 TH=.000001 ' 収束判定のためのしきい値
30 N=2
40 DATA 3,1, 1,1
50 DATA 5, 3
60 DIM A(30,30),X(30),Y(30),XP(30)
70 FOR I=1 TO N
80 FOR J=1 TO N
90 READ A(I,J)
100 NEXT J
105 NEXT I
110 FOR I=1 TO N
120 READ Y(I)
130 X(I)=5 ' 初期推定値
135 XP(I)=-9999 ' 前のステップの解
140 NEXT I
150 IT=1
160 PRINT"反復回数 ",IT
170 FOR I=1 TO N
180 P=Y(I)
190 FOR J=1 TO N
200 IF I<>J THEN P=P-A(I,J)*X(J)
220 NEXT J
230 X(I)=P/A(I,I)
240 PRINT "解";I, X(I)
250 NEXT I
255 DONE=1
260 FOR I=1 TO N
270 IF ABS(X(I)-XP(I)) > TH THEN DONE=0
280 XP(I)=X(I)
290 NEXT I
300 IF DONE=0 THEN IT=IT+1 : GOTO 160
310 END

gseid-n.bas


問題 Gauss-Seidel反復法により、次の方程式を解くことを試みよ。。
解答   y = 2, X = 1 
方程式の順序を逆にして

連立方程式の解法のひとつである代入法は、一つの変数を他の変数の関数として明示的に表し、
それが方程式の組から消去されるように残りの方程式に代入する方法である。

Gauss-Seidel反復法は、代入法の変形で
ある。

実際の解法は、まずxについて解を推測し、最初の方程式にこの推測値を代入しx2ついて解く。
この解はもちろん正しくないが、xに対する解を求めるために2番目の方程式式に代入する。
この解も誤っているが、ある条件のもとでは元の推測値よりは悪くない。このような操作を、新しく
得られた近似値と前の近似値との差がほとんどなくなるまで繰り返す。(必ずしも収束が保証されて
いるわけではない。)
再度試してみなさい。

(それぞれの列の非対角項の和がその列の対角要素より小さければ収束は保証される。
2002 Copyright 木原 寛