回 帖 发 新 帖 刷新版面

主题:紧急求助,为啥结果不同呢

请看下面的程序片段:


 integer,parameter :: Max=1000
    type cpx
      complex,dimension(m,m) :: a
      complex,dimension(m,m) :: b
    end type cpx
    type(cpx),dimension(Max) :: t

  integer::m=8
  real::s=0.002,e=1.4
  complex::fi=(0.0,1.0)
  real h0(m,m),h1(m,m),h2(m,m) !三个矩阵已知
  complex energy1(m,m)
  energy1=0.0

 do i=1,m
    energy1(i,i)=e+s*fi
 end do

  t0=energy1-h0  !
  t0=.i.t0
  t(1).a=t0.x.h2 !求t0,初始值,t(1).a=(.i.(energy1-h0)).x.h2
  tt=t(1).a

  t(1).b=t0.x.h1 !求t0_,初始值
  t2=t(1).b

 do i=2,2
  
  t4=-(t(i-1).a).x.(t(i-1).b)+(t(i-1).b).x.(t(i-1).a)
  t4=identity+t4
  t5=identity-(t(i-1).a).x.(t(i-1).b)+(t(i-1).b).x.(t(i-1).a)
     open(1,file='ddd11a.txt')
       write(1,*)  t4
     close(1)

     open(1,file='ddd11b.txt')
       write(1,*)  t5
     close(1)
 
 end do

问1。t(1).a=(.i.(energy1-h0)).x.h2  用下面的算法行不行:

  t0=energy1-h0 
  t0=.i.t0
  t(1).a=t0.x.h2 

问2。t4和t5得到的值应该是一样的吧?但是为什么我将它们输出之后发现两个矩阵不同呢?奇怪啊

回复列表 (共2个回复)

沙发


自己不会调试么?

板凳

其实有什么不同, 你直接输出计算之后的矩阵看看. 理解上应该是相等, 具体为什么不相等你看看结果差别先调试一下.

我来回复

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