回 帖 发 新 帖 刷新版面

主题:求解线性方程

怎么求解线性方程AX=B?其中A,B均是矩阵!

回复列表 (共1个回复)

沙发

自己搞定了,供大家参考!这是子程序,用的是可调数组,主程序自己写一下就行了!
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




我来回复

您尚未登录,请登录后再回复。点此登录或注册