主题:程序收敛问题
!D great
do m = 0,f
dga(m) = -0.1
end do
j = 0
k = 0
do while (k.lt.f .or. j.lt.3)
do m = 0,f
sigmar1(m) = 0.0
sigmar2(m) = 0.0
pir1(m) = 0.0
pir2(m) = 0.0
end do
do m = 0,f
do n = 0,f
sigmar1(m)=sigmar1(m)-K_2(m-n+f/2)*dga(n)*domega
sigmar2(m)=sigmar2(m)+K_1(m-n+f/2)*dga(n)*domega
end do
gg(m)=2.0*sigmar2(m)/((omega(m)-e_dbar-sigmar1(m))**2+sigmar2(m)**2)
end do
do m = 0,f
do n = 0,f
pir1(m)=pir1(m)-2.0*H_2(n-m+f/2)*gg(n)*domega
pir2(m)=pir2(m)+2.0*H_1(n-m+f/2)*gg(n)*domega
end do
dgb(m)=2.0*pir2(m)/((omega(m)-pir1(m))**2+pir2(m)**2)
end do
k=0
do m = 0,f
if (abs(dga(m)-dgb(m)).lt.delta_1) then
k=k+1
else
end if
dga(m)=dgb(m)
end do
if (j.eq.10)then
k=f
end if
j=j+1
write(*,*)j,dgb(f/2),k
! write(6,*)j,dgb(f/2),k
end do !do while
这段程序中输出的语句出现什么情况,才是收敛的情况?
求高手指点
do m = 0,f
dga(m) = -0.1
end do
j = 0
k = 0
do while (k.lt.f .or. j.lt.3)
do m = 0,f
sigmar1(m) = 0.0
sigmar2(m) = 0.0
pir1(m) = 0.0
pir2(m) = 0.0
end do
do m = 0,f
do n = 0,f
sigmar1(m)=sigmar1(m)-K_2(m-n+f/2)*dga(n)*domega
sigmar2(m)=sigmar2(m)+K_1(m-n+f/2)*dga(n)*domega
end do
gg(m)=2.0*sigmar2(m)/((omega(m)-e_dbar-sigmar1(m))**2+sigmar2(m)**2)
end do
do m = 0,f
do n = 0,f
pir1(m)=pir1(m)-2.0*H_2(n-m+f/2)*gg(n)*domega
pir2(m)=pir2(m)+2.0*H_1(n-m+f/2)*gg(n)*domega
end do
dgb(m)=2.0*pir2(m)/((omega(m)-pir1(m))**2+pir2(m)**2)
end do
k=0
do m = 0,f
if (abs(dga(m)-dgb(m)).lt.delta_1) then
k=k+1
else
end if
dga(m)=dgb(m)
end do
if (j.eq.10)then
k=f
end if
j=j+1
write(*,*)j,dgb(f/2),k
! write(6,*)j,dgb(f/2),k
end do !do while
这段程序中输出的语句出现什么情况,才是收敛的情况?
求高手指点