新しく発言する  EXIT  インデックスへ

ガウスの消去法連立1次方程式の解Ax=b


  ガウスの消去法 連立1次方程式の解 Ax=b 山中和義 2007/11/25 10:21:25 
  !ガウス・ジョルダン(Gauss-Jordan)法N元... 山中和義 2007/11/25 10:22:50 
  │└FullBASICなら逆行列による計算がお手軽です... 山中和義 2007/11/25 10:28:23 
  ヤコビ反復法(Jacobi) 山中和義 2008/09/29 10:28:16 
  │└ガウス・ザイデル反復法(Gauss-Seidel) 山中和義 2008/09/29 10:32:12 
Re: ヤコビ反復法(Jacobi)  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/09/29 10:32:12
ガウス・ザイデル反復法(Gauss-Seidel)


!ガウス・ザイデル反復法(Gauss-Seidel)によるN元連立1次方程式の解 Ax=b

!OPTION ARITHMETIC RATIONAL !有理数(分数)

LET cEps=1e-14 !誤差


!連立方程式を記述する
LET N=4 !変数(元)の数

DIM A(N,N) !左辺
DATA 10,-1, 2, 0 !係数のみ配列で記録する
DATA -1,11,-1, 3
DATA 2,-1,10,-1
DATA 0, 3,-1, 8
MAT READ A

DIM b(N) !右辺
DATA 6,25,-11,15
MAT READ b


DIM x(N),x0(N)
MAT x0=ZER

LET cMax=100 !反復回数
FOR k=1 TO cMax

FOR i=1 TO N
LET s=0
FOR j=1 TO i-1 !Σ[j=1,i-1]Aij*Xj
LET s=s+A(i,j)*x(j)
NEXT j
FOR j=i+1 TO N !Σ[j=i+1,N]Aij*X0j
LET s=s+A(i,j)*x0(j)
NEXT j
LET x(i)=(b(i)-s)/A(i,i) !近似解 Xi=(bi-Σ[j=1,i-1]Aij*Xj-Σ[j=i+1,N]Aij*X0j)/Aii
NEXT i

LET s=0 !収束を確認する
FOR i=1 TO N
LET s=s+ABS(x(i)-x0(i)) !|x-x0|の和
NEXT i
IF s<cEps THEN EXIT FOR

MAT x0=x !次へ

NEXT k
IF k>cMax THEN
PRINT "収束しません。"
STOP
END IF

PRINT k;
MAT PRINT x; !結果を表示する



!検算
MAT x0=A*x
MAT PRINT x0; !b


END
  !共役勾配法(conjugategradientmethod)N元... 山中和義 2008/10/06 20:58:41 

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。