回 帖 发 新 帖 刷新版面

主题:重复,迭代,循环?

变量定义:
integer:: m=4,n=3
complex t0(2*m,2*m),t1(2*m,2*m),tt(2*m,2*m),t2(2*m,2*m),tt_(2*m,2*m),t3(2*m,2*m),t4(2*m,2*m) ,t(2*m,2*m),t5(2*m,2*m)
complex energy1(2*m,2*m),identity(2*m,2*m)       !w用energy1表示
complex h0(2*m,2*m),h2(2*m,2*m),h1(2*m,2*m) !都是已知矩阵,且h0表示H00,h1表示(H01+),h2表示H01,tt表示ti,tt_表示ti_。



这样循环看下好不好:
  t0=energy1-h0
  t0=.i.t0
  t0=t0.x.h2 !求t0,初始值
  tt=t0 !第一个t0值

  t1=energy1-h0 
  t1=.i.t1
  t1=t1.x.h1 !求t0_,初始值
  t2=t1 !将第一个t1赋给t2保存
 

 do i=2,u !循环,计算第i个t0值
  
  t4=-t1.x.t0
  t5=-t0.x.t1
  t4=identity+t4+t5
  t4=.i.t4
  t0=t4.x.(t0**2) !ti
  t2=t2.x.t0

     tt=tt+t2

  t1=t4.x.(t1**2) !t1_
!  if(all(t1<eps*fi) .and. all(t0<eps*fi)) exit
  t2=t2.x.t1

 end do


  t0=energy1-h0
  t0=.i.t0
  t0=t0.x.h2 !求t0,初始值
  t2=t0

  t1=energy1-h0 
  t1=.i.t1
  t1=t1.x.h1 !求t0_,初始值
  tt_=t1

 do i=2,u
  
  t3=-t1.x.t0
  t5=-t0.x.t1
  t3=identity+t5+t3

  t3=.i.t3
  t1=t3.x.(t1**2)  !ti_
  t2=t2.x.t1
  tt_=tt_+t2
 
  t0=t3.x.(t0**2)  !ti
!  if(all(t1<eps*fi) .and. all(t0<eps*fi)) exit
  t2=t2.x.t0

 end do

回复列表 (共21个回复)

21 楼

[quote][quote]该怎么感谢您呢[em4][em4][em4][em3][em3][em11][em11][em11][em2][em2][em2][em80][em80][em80][em75][em75][em76][em76][em76][em77][em77][em77][em74][em74][em74][/quote]
用了type定义的,是不是清晰了?[/quote]

[em77][em77][em77][em60][em60][em60][em50][em50][em50][em39][em39][em39][em28][em28][em28][em28][em28][em28][em28][em28][em32][em32][em32][em32][em71][em71][em71][em71][em71][em2][em2][em2][em11][em11][em11][em11][em9][em9][em9][em9][em9][em8][em8][em8][em8]
已经很清楚了哈哈

我来回复

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