Fortran 真诚求教 “复系数方程组的全选主元高斯消去法”
Fortran 真诚求教 “复系数方程组的全选主元高斯消去法”
求解的程序有部分没看懂,下面就是此程序,代入自己要计算的内容运行会输出对话框显示“ERR**FAIL”,这是什么原因?
SUBROUTINE ACGAS(AR,AI,N,BR,BI,L,JS)
real*8 AR(N,N),AI(N,N),BR(N),BI(N),JS(N)
L=1
DO 100 K=1,N-1
E=0.0
DO 10 I=K,N
DO 10 J=K,N
P=AR(I,J)*AR(I,J)+AI(I,J)*AI(I,J)
IF (P.GT.E) THEN
E=P
JS(K)=J
IS=I
END IF
10 CONTINUE
W=E
IF (W+1.0.EQ.1.0) THEN
WRITE(*,20)
L=0
RETURN
END IF
20 FORMAT(1X,' ERR**FAIL ')
DO 30 J=K,N
P=AR(K,J)
AR(K,J)=AR(IS,J)
AR(IS,J)=P
P=AI(K,J)
AI(K,J)=AI(IS,J)
AI(IS,J)=P
30 CONTINUE
P=BR(K)
BR(K)=BR(IS)
BR(IS)=P
P=BI(K)
BI(K)=BI(IS)
BI(IS)=P
DO 50 I=1,N
P=AR(I,K)
AR(I,K)=AR(I,JS(K))
AR(I,JS(K))=P
P=AI(I,K)
AI(I,K)=AI(I,JS(K))
AI(I,JS(K))=P
50 CONTINUE
DO 60 J=K+1,N
P=AR(K,J)*AR(K,K)
Q=-AI(K,J)*AI(K,K)
S=(AR(K,K)-AI(K,K))*(AR(K,J)+AI(K,J))
AR(K,J)=(P-Q)/E
AI(K,J)=(S-P-Q)/E
60 CONTINUE
P=BR(K)*AR(K,K)
Q=-BI(K)*AI(K,K)
S=(AR(K,K)-AI(K,K))*(BR(K)+BI(K))
BR(K)=(P-Q)/E
BI(K)=(S-P-Q)/E
DO 90 I=K+1,N
DO 80 J=K+1,N
P=AR(I,K)*AR(K,J)
Q=AI(I,K)*AI(K,J)
S=(AR(I,K)+AI(I,K))*(AR(K,J)+AI(K,J))
AR(I,J)=AR(I,J)-P+Q
AI(I,J)=AI(I,J)-S+P+Q
80 CONTINUE
P=AR(I,K)*BR(K)
Q=AI(I,K)*BI(K)
S=(AR(I,K)+AI(I,K))*(BR(K)+BI(K))
BR(I)=BR(I)-P+Q
BI(I)=BI(I)-S+P+Q
90 CONTINUE
100CONTINUE
E=AR(N,N)*AR(N,N)+AI(N,N)*AI(N,N)
W=E
IF (W+1.0.EQ.1.0) THEN
L=0
WRITE(*,20)
RETURN
END IF
P=AR(N,N)*BR(N)
Q=-AI(N,N)*BI(N)
S=(AR(N,N)-AI(N,N))*(BR(N)+BI(N))
BR(N)=(P-Q)/E
BI(N)=(S-P-Q)/E
DO 200 I=N-1,1,-1
DO 150 J=I+1,N
P=AR(I,J)*BR(J)
Q=AI(I,J)*BI(J)
S=(AR(I,J)+AI(I,J))*(BR(J)+BI(J))
BR(I)=BR(I)-P+Q
BI(I)=BI(I)-S+P+Q
字数限制 只能复制这么多了