回 帖 发 新 帖 刷新版面

主题:求逆矩阵

fortran中怎样求任意一个矩阵的逆矩阵?急!

回复列表 (共1个回复)

沙发

用可调数组写的子程序,主程序自己写,很容易的 !
SUBROUTINE ANI(A,A1,A2,N)
REAL  A(N,N),A1(N,2*N),A2(N,N)
!增广矩阵A
DO I=1,N                
   DO J=1,2*N
      IF(J<=N)THEN
         A1(I,J)=A(I,J)
      ELSEIF(J==N+I)THEN
         A1(I,J)=1.0
      ELSE
         A1(I,J)=0.0
      ENDIF
   ENDDO
ENDDO
!进行行行变换以求逆矩阵
DO I=1,N
  !对第i行进行归一化
  DO J=1,2*N
     DO K=I+1,N                          
        A1(I,J)=A1(I,J)+A1(K,J)
     ENDDO
  ENDDO
 T=A1(I,I)
 DO J=I,2*N
   A1(I,J)=A1(I,J)/T
 ENDDO
  !使第i列只有一个1,其他均为0
 DO K=1,N 
    IF(K/=I)THEN
      T=A1(K,I)
      DO L=I,2*N
        A1(K,L)=A1(K,L)-A1(I,L)*T
      ENDDO
    ENDIF 
 ENDDO
ENDDO
!将A1后半部分存入A2 
DO I=1,N
  DO J=1,N
    A2(I,J)=A1(I,J+N)
  ENDDO
ENDDO
END

我来回复

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