һάÎÞÏÞÉîÊÆÚåÖÐÑëÓÐÒ»¸öÊÆÀÝ£¬¸ø³öÒ»¸öÕý̬·Ö²¼µÄpsy³õʼÌõ¼þ£¬´úÈëѦ¶¨ÚÌ·½³Ì¿´ÆäËæÊ±¼äµÄÑÝ»¯¡£
ÏÈÓÃFortranдµÄ³ÌÐò£¬Ö®ºóÓÃorigin»µÄͼ£¨Í¼¼û¸½¼þ£©£¬¿ÉÊÇpsy²¨º¯Êý½â³öÀ´ºóÓ¦¸ÃÊÇËæÊ±¼ä¶ø±ä»¯µÄ£¬µ«ÎÒµÄËæÊ±¼äÖáÖ»ÊǼòµ¥µÄÆ½ÒÆ£¨Í¼ÖÐÊÇ´¹Ö±ÓÚxÖáÆ½ÒÆ£¬¶øÀíÂÛÉÏÓ¦¸ÃÔÚxoyÆ½ÃæÉÏÓëxÖáÓÐÒ»¶¨µÄ¼Ð½ÇµÄÆ½ÒÆ¡ª¡ªÕâÑù²ÅÄÜÏÔ³öËæÊ±¼äÑÝ»¯£©¡£µÚ¶þÖÖ·½·¨£ºÎÒ°Ñpsy£¨ÄîΪpusai£©º¯Êý·Ö½âΪʵ²¿ºÍÐ鲿£¬´ú»Øµ½Ñ¦¶¨ÚÌ·½³ÌËùµÃµ½µÄÁ½¸ö¶ÔÓ¦ÏîµÄ·½³Ì£¬È»ºóÈÔ¾ÉÊÇʹÓòî·Ö½â·¨¡£ÀíÂÛÉÏÁ½ÖÖ·½·¨»ù±¾Ã»ÓÐÇø±ð£¬¶øÊµ¼ÊÉÏÎÒµÄͼҲȷʵÎÞÒ죬µ«Õâ¸ü¼ÓʹÎÒÒɻ󣬲»ÖªµÀÎÊÌâ³öÏÖÔÚÁËÄÄÀï¡£
ÀÏʦ˵ÎÒͼÏñ²»¶ÔµÄÔÒòÊÇ¡ª¡ªM£¨¿Õ¼äµÄ²½Êý£©,N£¨Ê±¼äµÄ²½Êý£©,Tao£¨¼´dx£¬¿Õ¼ä²½³¤£©ºÍh£¨¼´dt£¬Ê±¼ä²½³¤£©µÄÖµÉèÖõIJ»ºÏÀí£¬¶øÎÒÊÔÁËÁ½¸öÍíÉÏ£¬ÖÕ¾¿»¹ÊÇû³öÀ´½á¹û¡£ÆäËû¿¼ÊÔÁÙ½ü£¬ÊµÔÚû̫¶àʱ¼äÖ´×ÅÓÚÕâ¸öÎÊÌâÁË£¬ÍòÍû¸ßÈËÖ¸µã
program time_dependent_schrodinger_equation
implicit none
integer,parameter::M=150,N=500
integer::i,j
real*16::hba=1.,mu=1./2
!hba¼´£¨ÆÕÀʿ˳£Êý/2/pi£©£¬muΪÖÊÁ¿
real*16::l=150,T1=5
real,external::V £¡ÊÆÄܺ¯Êý£¨¼´U£©
real*16,dimension(M)::x,x1
real*16,dimension(N)::t,normalize,psy4
real*16,dimension(M,N)::psy2,psy3 £¡psy2Ϊ¶Ô¸´Êýpsyȡģ²¢ÇóÆäƽ·½µÄ´óС£¬psy3£¬¼´Îª¹éÒ»»¯ºóµÄ²¨¶÷Ú¹ÊÍϵĸÅÂÊ¡£
complex*16,dimension(M,N)::psy
complex::cj
real*16::h,tao,pi
h=l/M
tao=T1/N
pi=asin(1.)*2
cj=(0.,1.) !ÐéÊýµ¥Î»
!¸ø³ö³õʼ±ß½ç¼°³õʼֵ
do j=1,N
psy(1,j)=0
psy(M,j)=0 £¡±ß½çÉ趨ΪÎÞÏÞÉîÊÆÚå
end do
do i=2,M-1
x1(i)=i*h
psy(i,1)=exp(((-1)*(x1(i)*0.2-5)**2./2.)/(2.*pi)) £¡ÚåÄÚ¸ø³ö³õʼֵ
end do !x(i)±È×ÅÕý³£¶à³ËÉϸö0¡£2£¬Æ½ÒÆÁ˲¨µÄλÖÃ
!ÖÐÐIJ½âѦ¶¨ÚÌ·½³Ì
do j=1,N-1
do i=2,m-1
psy(i,j+1)=psy(i,j)+cj*tao*((psy(i+1,j)-2*psy(i,j)+psy(i-1,j))/(h**2)-V(i)*psy(i,j)) £¡ºËÐÄÄÚÈÝ£¬½«ÖÐÐIJ´úÈëѦ¶¨ÚÌ·½³Ì²¢ÕûÀí
psy2(i,j+1)=(abs(psy(i,j+1)))**2
! write(13,*) psy2(i,j+1)
end do
end do
!¹éÒ»»¯
do j=2,n
normalize(j)=(sum(psy2(1:m,j)))!**0.5
end do
do j=2,N
do i=2,m-1
x(i)=i*h
t(j)=j*tao
psy3(i,j)=psy2(i,j)/(normalize(j))!**2
write(13,*) x(i),t(j),psy3(i,j)
end do
psy4(j)=sum(psy3(1:M,j))
! write(14,*) psy4(j) !¼ìÑé¹éÒ»»¯µÄÕýÈ·ÐÔ
end do
stop
end
!¸ø³öÊÆº¯Êý
real function V(i)
implicit none
integer::i
v=0
if (abs(i-75)-5<1.e-6) then
V=10.
end if
! if abs(x-40)<3&abs(x-60)<3
! V=10
return
end
![½âһάº¬Ê±Ñ¦¶¨ÚÌ·½³Ì£¬Í¼Ïñ²»ºÏÐÄÒ⣬¼±£¡£¡£¡]()
ǰ5SµÄͼÏñ
![½âһάº¬Ê±Ñ¦¶¨ÚÌ·½³Ì£¬Í¼Ïñ²»ºÏÐÄÒ⣬¼±£¡£¡£¡-1]()
³õʼʱ¿ÌµÄÖµ
![½âһάº¬Ê±Ñ¦¶¨ÚÌ·½³Ì£¬Í¼Ïñ²»ºÏÐÄÒ⣬¼±£¡£¡£¡-2]()
һάѦ¶¨ÚÌ·½³Ì£¬È¡hba=1£¬mu=0.5
[ Last edited by 17839223730 on 2017-1-5 at 23:24 ] |