(Fortran编程)数值分析计算之JACOBI迭代法

MODULE JACOBI
!JACOBI迭代法模块
IMPLICIT REAL*8(A-Z)
INTEGER::IMAX=200 !IMAX最大允许迭代次数
REAL*8::TOL=1D-7 !TOL误差容限
CONTAINS
SUBROUTINE SOLVE(A,B,X,X0,N)
!JACOBI迭代计算AXb
IMPLICIT REAL*8(A-Z)
INTEGER::N
INTEGER::I,J,K
REAL*8::A(N,N),B(N),X(N),X0(N)
REAL*8::X1(N),X2(N)
X1=X0
DO K=1,IMAX
DO I=1,N
S=0
DO J=1,N
IF (J==I) CYCLE
S=S+A(I,J)*X1(J)
END DO
X2(I)=(B(I)-S)/A(I,I)
END DO
!判断精度
DX2=0
DO I=1,N
DX2=DX2+(X1(I)-X2(I))**2
END DO
DX2=DSQRT(DX2)
IF (DX2X1=X2
WRITE(102,33)K,X1 ! 记录迭代的中间值
33 FORMAT(I3,3F12.8)
END DO
X=X2
END SUBROUTINE SOLVE
END MODULE JACOBI

相关文档
最新文档