主题:求解线性方程
dengzx
[专家分:0] 发布于 2008-06-30 21:18:00
怎么求解线性方程AX=B?其中A,B均是矩阵!
回复列表 (共1个回复)
沙发
dengzx [专家分:0] 发布于 2008-07-11 21:26:00
自己搞定了,供大家参考!这是子程序,用的是可调数组,主程序自己写一下就行了!
SUBROUTINE EXCHANGE(X,Y)
REAL X,Y
TEMP=X
X=Y
Y=TEMP
END
SUBROUTINE PROCESS(A,B,X,N)
REAL::TEMP
INTEGER::TAG=0
REAL A(N,N),B(N),X(N)
DO K=1,N
TEMP=0
DO I=K,N
IF(TEMP<ABS(A(I,K)))THEN
TEMP=A(I,K)
TAG=I
ENDIF
ENDDO
IF(TEMP==0)THEN
PRINT*,"系数行列式为0,无法继续 !"
ELSE
IF(TAG/=K)THEN !行行交换
DO J=K,N
CALL EXCHANGE(A(K,J),A(TAG,J))
CALL EXCHANGE(B(K),B(TAG))
ENDDO
ENDIF
ENDIF
DO I=K+1,N
A(I,K)=A(I,K)/A(K,K)
DO J=K+1,N
A(I,J)=A(I,J)-A(I,K)*A(K,J)
ENDDO
B(I)=B(I)-A(I,K)*B(K)
A(I,K)=0
ENDDO
ENDDO
!回代
X(N)=B(N)/A(N,N)
DO I=N-1,1,-1
S=0
DO J=I+1,N
S=S+A(I,J)*X(J)
ENDDO
X(I)=(B(I)-S)/A(I,I)
ENDDO
END
我来回复