FORTRAN 初心者です
以下の連立一次方程式をSOR法で解く問題です。
初心者なりにガウスザイデル法を応用してプログラムしたつもりですが、やはり難しいです(答えは違います)。
どこをどうすれば良いのか分かりませんので、よろしければヒントや助言をいただきたいです。
PROGRAM SOR
REAL A(10,10),B(10),X(10),X0(10)
INTEGER N,I,J,K,Kmax,w
N=3
A(1,1)=4 ;A(1,2)=1 ;A(1,3)=2
A(2,1)=1 ;A(2,2)=3 ;A(2,3)=1
A(3,1)=1 ;A(3,2)=2 ;A(3,3)=5
B(1)=16
B(2)=10
B(3)=12
X0(1)=1 ;X0(2)=1 ;X0(3)=2
w=1.2
Kmax=50
EPS=1.D-5
DO I=1,N
D=A(I,I)
S=B(I)
B(I)=B(I)/D
END DO
DO K=1,Kmax
DO I=1,N
DO J=1,N
if(J<I) X0(J)=X(J)
S=S-A(I,J)*X0(J)
END DO
X(I)=(1-w)*X(I)+w*S
END DO
DO I=1,N
S=S-(X(I)-X0(I))**2
END DO
IF(S<EPS) GOTO 10
DO I=1,N
X0(I)=X(I)
END DO
END DO
10 WRITE(*,*) K
DO I=1,N
WRITE(*,*) 'SOR法で求めた解は'
WRITE(*,*) 'X(',I,')=',X(I)
END DO
END PROGRAM SOR
!------------------------------------
※wは緩和係数です