基于Visual Basic的电子干涉、衍射模拟
2010-01-18祝智浩
祝智浩
(温州大学物理与电子信息工程学院,浙江温州325035)
1 引 言
电子的干涉、衍射实验无疑是电子具有波动性的有力实验佐证;当电子穿过光阑在屏上显示出干涉、衍射图像时,更是很好地说明了电子波是一种概率波.但是由于受条件限制,这些实验在课堂上往往无法进行;而计算机模拟电子通过光阑后的行为,生成可执行文件作为教学素材,则在一定程度上为教学提供了方便.
笔者阅读了《电子双缝衍射的计算机模拟》[1]后,认为可用同样的方法对杨氏双缝干涉以及光栅衍射等光学现象进行模拟,从而进一步理解电子的波粒二象性以及几率波概念[2].
图1 杨氏双缝干涉示意图
2 干涉、衍射原理
2.1 杨氏双缝干涉
质量为m的电子束,通过加速电压U后,穿过间距为d的两小孔,在距离为D屏上产生干涉条纹,如图1所示.根据德布罗意关系,电子的波长λ和动量p有如下关系:λ在忽略相对论相应 (v∶c)下有,因此可得λ=又由杨氏干涉的光强分布函数_____________I(x) =)[3],其中 I0为 x=0处的光强大小.定义相对光强 K,K为x处的光强比上I0.即
显然,K∈[0,1].
2.2 光栅衍射
质量为 m的电子束,通过加速电压U后,穿过光栅常量为 d,光栅缝数为 N,各缝宽为 b的光栅,在距离为D屏上产生衍射条纹,如图2所示.同理可以得到波长关系λ再根据光栅衍射的强度分布函数[4]
与干涉相同,同样定义相对光强 K,
图2 光栅衍射示意图
显然,K∈[0,1].
3 Visual Basic模拟程序
首先让计算机产生一组随机点(x,y),这些点的(x,y)对应于图片框中的点的坐标.对于产生的点,采用蒙特卡罗舍选抽样法[5][6]对产生的随机点进行筛选输出.即再生成一组均匀分布的,取值在0~1之间的随机数L,然后将先前随机产生的 x,其所对应的强度分布函数 K(x)进行比较,当 K(x)>L时,输出该点(x,y),否则不输出.重复此过程,直到所有产生的点,即所有的电子都打完为止,利用Visual Basic编程,程序如下.
图3 电子杨氏双缝干涉窗口设计
3.1 电子杨氏双缝干涉
模拟窗口设计如图3所示.源程序:
Private Sub Command1_Click( )
Dim i,j,n As Long,t As Integer,x,y,k,l,r,u,a,
b,D As Double
Const h As Double= 6.63E-34,pi As Double=
3.14159 ,m As Double=9.1E-31
Const e As Double=1.6E-19
a=Val(Text1.Text)
D=Val(Text2.Text)
u=Val(Text3.Text)
n=Val(Text4.Text)
t=Val(Text5.Text)
r=h/Sqr(2*m*e*u)
Picture1.Scale(-0.03,0.03)-(0.03,0)
Picture1.Cls
For i=1 To n
x=-0.06*Rnd+0.03
y=Rnd*0.03
If x<>0 Then
k= (Cos((pi*a*Abs(x))/(r*D)))∧2
End If
l=Rnd
If k>l Then
Picture1.PSet(x,y),RGB(0,0,0)
End If
For j=0 To t*100000 Next j
Next i
End Sub
3.2 电子光栅衍射
模拟窗口设计如图4所示.
源程序:
Private Sub Command1_Click( )
Dim i,j,n,f s As Long,t As Integer,x,y,k1,k2,
k3,k,l,r,u,b,d As Double
Const h As Double=6.63E-34
Const pi As Double=3.14159
Const m As Double=9.1E-31
Const e As Double=1.6E-19
Const jl As Double=0.5
d=Val(Text1.Text)
b=Val(Text2.Text)
f s=Val(Text6.Text)
u=Val(Text3.Text)
n=Val(Text4.Text)
t=Val(Text5.Text)
r=h/Sqr(2*m*e*u)
Picture1.Scale(-0.00005,0.00005)-(0.00005,0)
Picture1.Cls
For i=1 To n
x=-0.0001*Rnd+0.00005
y=Rnd*0.00005
If x<>0 Then
k1= (pi*b*Abs(x))/(r*jl)
k2=Sin(k1)
k3=Sin(f s * (pi*d *Abs(x)/(r*jl)))
图4 电子光栅衍射窗口设计
k4=Sin(pi*d*Abs(x))/(r*jl)
k=(k2∧2*k3∧2)/(k1∧2*k4∧2)
End If
l=Rnd
If k>l Then
Picture1.PSet(x,y),RGB(0,0,0)
End If
For j=0 To t*100000
Next j
Next i
End Sub
4 参考参数及程序运行结果
4.1 电子杨氏双缝干涉模拟参考参数及运行结果
缝宽 d=1.0×10-8m,屏距 D=1.0m,加速电压U=220V,电子个数100000,延时参数1.延时参数是用来控制电子打出的速度,通过延时参数的调节,使得电子一个个打在屏上,更加真实的还原实验中电子的行为.杨氏双缝干涉强度分布函数如图5所示;程序运行结果如图6所示.
图5 干涉强度分布函数
图6 程序运行结果
电子打到屏上的密度越大则屏上越黑,从图5的运行结果看,模拟的结果与理论计算所得的强度分布函数十分吻合.且在实验中发现,当选取的电子个数较少时,在屏上只有一些凌乱的黑点,只有当电子个数达到一定的数量时,屏上才显示出一定的分布规律,这一点也很好的说明了电子波是一种概率波.
4.2 电子光栅衍射模拟参考参数及运行结果
光栅常数 d=6.0×10-7m,b=1.0×10-7m;缝数 N=5;加速电压U=500V;电子个数1000000;延时参数1.光栅衍射强度分布函数如图7所示.运行结果如图8所示.
图7 光栅衍射强度分布函数
图8 程序运行结果
和电子的杨氏双缝干涉模拟一样,模拟的结果和理论计算十分吻合;而且此模拟程序可以通过改变 N的输入值来模拟任意缝数的光栅衍射,十分利于课堂的教学.
5 结 语
利用Visual Basic模拟电子的干涉衍射行为,除了可以直观的展现电子干涉衍射的图像之外,还可以通过改变输入的参数来研究各参数对最终图像的影响,效果良好.
[1] 李端明.电子双缝衍射的计算机模拟 [J].大学物理,2008,27(11):53-55
[2] 曾谨言.量子力学导论 [M].北京:北京大学出版社,2009:17-87
[3] 熊家昌.求解Collins衍射积分,导出多缝干涉强度分布公式 [J].大学物理,2005,24(10):60-63
[4] 姚启军.光学教程 (第四版)[M].北京:高等教育出版社,2008:110-111
[5] 马文淦.计算物理学 [M].合肥:中国科学技术大学出版社,2001:19-123
[6] 罗礼进.基于蒙特卡罗的电子双缝衍射的计算机模拟 [J].南通大学学报,2005,(12):62-64