回 帖 发 新 帖 刷新版面

主题:求助  哪位高人来帮我看看这个子程序是干什么的吧

子程序如下   
   不懂写的是什么::

SUBROUTINE DINV_MATRIX(A,B,C,ME,MF,N,EP)
        COMPLEX*16 Y,W
        DIMENSION ME(800),MF(800)
        COMPLEX*16 A(800,800),B(800),C(800)
        DO K=1,N
          Y=(0.0,0.0)
            DO I=K,N
              DO J=K,N
                IF (ABS(A(I,J)).GT.ABS(Y)) THEN
                Y=A(I,J)
                I2=I
                J2=J
                END IF 
              END DO
            END DO

            EEE=ABS(Y)
C          WRITE(*,*) "EE=",EEE,"EP=",EP
          IF (EEE.LT.EP) GOTO 32
          IF (I2.EQ.K) GOTO 33
          DO J=1,N
            W=A(I2,J)
            A(I2,J)=A(K,J)
            A(K,J)=W
          END DO
33        IF (J2.EQ.K) GOTO 44
          DO I=1,N
            W=A(I,J2)
            A(I,J2)=A(I,K)
            A(I,K)=W
          END DO
44        ME(K)=I2
          MF(K)=J2
          DO J=1,N
            IF (J-K) 2,3,2
3           B(J)=(1.0,0.0)/Y
            C(J)=(1.0,0.0)
            GOTO 4
2           B(J)=-A(K,J)/Y
            C(J)=A(J,K)
4           A(K,J)=(0.0,0.0)
            A(J,K)=(0.0,0.0)
          END DO
          DO I=1,N
            DO J=1,N
              A(I,J)=A(I,J)+C(I)*B(J)
            END DO
          END DO
        END DO
        DO L=1,N
          K=N-L+1
          K1=ME(K)
          K2=MF(K)
          IF (K1.EQ.K) GOTO 70
          DO I=1,N
            W=A(I,K1)
            A(I,K1)=A(I,K)
            A(I,K)=W
          END DO
70        IF(K2.NE.K) THEN
            DO J=1,N
              W=A(K2,J)
              A(K2,J)=A(K,J)
              A(K,J)=W
            END DO
          END IF
        END DO 
32      EP=-EP


RETURN
        END

回复列表 (共3个回复)

沙发

建议自己看明白最好,一行注释没有的让别人看,也太不人道了吧。

板凳


关键是就这一样程序,其他的都没有

3 楼

看子函数名称猜它是求双精度逆矩阵的功能.
这样写程序要么是作者另外做了什么文档说明了. 要么没打算给以后的人看.

我来回复

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