pp 发表于 2004-9-5 14:44:35

【求助】复系数方程组求解

大侠能不能给个例子或思路,复数编程没用过啊

bzzz 发表于 2004-9-5 21:44:21

回复: 【求助】复系数方程组求解

如果是线性方程组的话,维数小且非奇异的情况下可以直接解或者求逆
维数大的话则是先分块再用迭代算法

这是一个fortran的求逆的例子(from smth)
1。功能:采用全选主元Gauss-Jordan法求复数矩阵的逆矩阵
2。形参说明:
AR,AI---均为双精度实数二纬数组,体积为(N,N),输入兼输出参数
调用时分别存放原复矩阵的实部与虚部;返回逆矩阵的实波与虚部
N :整形变量,输入参数。矩阵阶数
L:整形变量,输出参数。如L=0,说明矩阵奇异,求逆失败;如L不等于0
说明正常返回。
IS,JS:都为整形一纬数组,长度为N。
SUBROUTINE BCINV(AR,AI,N,L,IS,JS)
DIMENSION AR(N,N),AI(N,N),IS(N),JS(N)
DOUBLE PRECISION AR,AI,D,P,T,Q,S,B
L=1
DO 100 K=1,N
  D=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.D) THEN
D=P
IS(K)=I
JS(K)=J
ENDIF
10   CONTINUE
       IF (D+1.0.EQ.1.0) THEN
L=0
WRITE(*,20)
RETURN
END IF
20    FORMAT(1X,'ERR**NOT INV')
       DO 30 J=1,N
       T=AR(K,J)
AR(K,J)=AR(IS(K),J)
AR(IS(K),J)=T
T=AI(K,J)
AI(K,J)=AI(IS(K),J)
AI(IS(K),J)=T
30    CONTINUE
       DO 40 I=1,N
T=AR(I,K)
AR(I,K)=AR(I,JS(K))
AR(I,JS(K))=T
T=AI(I,K)
AI(I,K)=AI(I,JS(K))
AI(I,JS(K))=T
40    CONTINUE
      AR(K,K)=AR(K,K)/D
AI(K,K)=-AI(K,K)/D
DO 50 J=1,N
IF (J.NE.K) THEN
P=AR(K,J)*AR(K,K)
Q=AI(K,J)*AI(K,K)
S=(AR(K,J)+AI(K,J))*(AR(K,K)+AI(K,K))
AR(K,J)=P-Q
AI(K,J)=S-P-Q
ENDIF
50    CONTINUE
      DO 70 I=1,N
IF (I.NE.K) THEN
DO 60 J=1,N
IF (J.NE.K) THEN
P=AR(K,J)*AR(I,K)
Q=AI(K,J)*AI(I,K)
S=(AR(K,J)+AI(K,J))*(AR(I,K)+AI(I,K))
T=P-Q
B=S-P-Q
AR(I,J)=AR(I,J)-T
AI(I,J)=AI(I,J)-B
ENDIF
60    CONTINUE
       ENDIF
70    CONTINUE

DO 80 I=1,N
IF (I.NE.K) THEN
P=AR(I,K)*AR(K,K)
Q=AI(I,K)*AI(K,K)
S=(AR(I,K)+AI(I,K))*(AR(K,K)+AI(K,K))
AR(I,K)=Q-P
AI(I,K)=P+Q-S
ENDIF
80    CONTINUE
100   CONTINUE
      DO 130 K=N,1,-1
DO 110 J=1,N
T=AR(K,J)
AR(K,J)=AR(JS(K),J)
AR(JS(K),J)=T
T=AI(K,J)
AI(K,J)=AI(JS(K),J)
AI(JS(K),J)=T
110   CONTINUE

  DO 120 I=1,N
T=AR(I,K)
AR(I,K)=AR(I,IS(K))
AR(I,IS(K))=T
T=AI(I,K)
AI(I,K)=AI(I,IS(K))
AI(I,IS(K))=T
120   CONTINUE
130   CONTINUE
      RETURN
END

pp 发表于 2004-9-6 15:36:59

回复: 【求助】复系数方程组求解

谢谢bzzz的热心帮助,还想请教你一个问题:带有复指数的表达式求积分可否用fortran77 算法手册(何光渝主编)里面的高斯积分来求解。

bzzz 发表于 2004-9-6 17:16:15

回复: 【求助】复系数方程组求解

sorry
没有用过,帮不了你 ^_^
页: [1]
查看完整版本: 【求助】复系数方程组求解