基于 MATLAB 的杨氏双缝干涉实验模拟
摘要:根据光的双缝干涉实验理论,利用 MATLAB 编写程序对双缝干涉实验进行模拟,绘制
出双缝干涉的图样和光强分布曲线,并且同步计算出相应的条纹间距和对比度,自观地展现
了单色光的双缝干涉这一物理现象,实验结果与实际计算结果一致,为双缝干涉的理论与实
验提供了有效的支持.
关键词:MATLAB;双缝干涉;实验模拟
0 引言
MATLAB 既是一种直观、高效的计算机语言,同时又是一个科学计算平台.它
为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形
工具.双缝干涉实验是利用分波振面法获得相干光束,得到干涉图样.而利用
MATLAB 模拟实验可以形象、直观地演示实验现象,探究光的干涉问题,而且不
受实验仪器和实验场所的限制,可以通过改变模拟参数获得不同的仿真结果,并
在显示屏上直接显示出来,动态直观地展现各种物理量之间的关系,对于理解光
学理论具有积极的作用.
1 双缝干涉实验的理论分析
杨氏双缝干涉实验是利用分波振面法获得相干光束的典型例了,如图 1 所示,
在普通单色光光源后放一狭缝 S,S 后又放有与 S 平行且等距离的两平行狭缝 S1,
和 S2.单色光通过两个狭缝 S1,S2 射向屏幕,相当于位置不同的两个同频率同相位
光源向屏幕照射的叠合,由于到达屏幕各点的距离(光程)不同引起相位差,叠
合的结果是在有的点加强,在有的点抵消,造成干涉现象。
d 为双缝的间隔,D 为屏幕到双狭缝平面的距离,y 为 O 到 P 的距离.考虑两
个相干光源到屏幕上任意点 P 的距离差为
r
1
2
D
r
2
2
D
2
y
d
2
2
y
d
2
(1)
(2)
引起的相位差为
r
r
2
r
1
2
r
(3)
(4)
设两束相干光在屏幕上 P 点产生振幅相同,均为 A0,则夹角为λ的两个矢量 A0
的合成矢量的幅度为
A
02
A
cos
2
光强 B 正比于振幅的平方,故 P 点光强为
B
04
B
2
cos
2
下面我们从理论上加以推导,由上面的式(1-2)可得
2
r
2
2
r
1
r
2
r
2
r
1
r
1
2
dy
考虑到 d,y 很小,
r
1
r
2
结合(7)式有
D
2
这样就得点 P 处于亮条纹中心的条件为
r
2
r
1
d
D
y
y
,
k
D
d
k
0, 1, 2,
(5)
(6)
(7)
(8)
(9)
图 1 双缝干涉示意图
因此,亮条纹是等间距的.若采用红光,其波长λ=500 nm,屏幕到双狭缝平面
的距离 D=1 m,双缝的间隔 d=2mm,则相邻条纹间距为
D
d
1
0.002
500 10
9
m
2.5 10
4
m
(10)
2 双缝干涉实验的计算机模拟
MATLAB 提供了十分强大的图形处理功能,应用 MATLAB 可以实现各种二维
图形和三维图形的绘制及控制与表现.对于双缝干涉实验模拟的基本过程是首先
设置波长、屏幕到双狭缝平面的距离、双缝的间隔 d,光屏的范围,再将仿真光屏
的 y 方向分成 n 个点,然后调用循环语句,根据光强公式,即公式(6)对各采样点
的光强进行计算,调用 image 函数,绘制实验仿真图像,使用色谱函数 colormap
着色,调用 plot 函数,绘制光强分布曲线.这些函数都能根据数据自动选择精度、
步长,进行颜色、光照及坐标轴等控制,代替用户完成大量底层工作,使用非常
方便,根据上面的分析,编写程序 Program1.m 文件如下,并运行程序程序得到
干涉条纹如图 2 所示.
图 2 单色光的干涉条纹与光强变化曲线
图 2 中左图是光屏上的干涉图条纹,右图是光屏上沿 y 轴方向光强的变化曲
线.从图 2 中也不难看出,干涉条纹是以点 n 所对应的水平线为对称,沿上下两
侧交替,等距离排列,从图 2 上可以看出相邻亮条纹中心间距为 2.5x10-4 m.与式
(10)计算结果相一致。
如果改变波长、屏幕到双狭缝平面的距离、双缝的问隔、光屏的范围等参数,
可以绘出其相应的干涉条纹,亦可以在一张图上绘出不同波长单色光的干涉条纹,
可以清楚地看出,波长越长,干涉条纹的问隔越宽这一现象.理论分析告诉我们,
这与杨氏干涉条纹间隔与波长成正比是一致的,理论推导和实验结果相同.
进一步考虑到纯粹的单色光不易获得,通常都有一定的光谱宽度,这种光的
非单色性对光的干涉会产生何种效应,下面我们用 MATLAB 计算并仿真这一问题.
非单色光的波长不是常数,假定光源的光谱宽度为中心波长的 10%,并且在
该区域均匀分布.近似取 19 根谱线,相位差的计算表达式求出的将是不同谱线的
19 个不同相位.计算光强时应把这 19 根谱线产生的光强叠加并取平均值,即
2
k
19
r B B
,
k
1
0
k
4cos
2
19
k
2
(11)
将程序 Program1.m 中的 9,10 两句按照公式(11)换成以下 4 句,由此构成的
程序就可以仿真非单色光的干涉问题.
x 10-3
x 10-3
1.5
-1
-0.5
0
0.5
1
1
0.5
0
-0.5
-1
-0.4
-0.2
0
0.2
0.4
-1.5
0
1
2
3
4
图 3 非单色光的干涉条纹与光强变化曲线
运行修改后的程序得到的干涉条纹如图 3 所示.从图 3 可以看出,光的非单
色性导致干涉现象的减弱,光谱很宽的光将不能形成干涉。
3 结语
MATIAB 软件开发工具为抽象物理现象的计算机动态模拟提供了简单、高效
的编程环境,光的干涉模拟效果与实验结果相一致。本文在分析光干涉与衍射现
象数学模型的基础上,提出了一种运用 MATLAB 模拟光的干涉现象的方法,该方
法能够简便、直观地展现了光的干涉这一物理现象.进一步可以改变程序参数,将
光的干涉、衍射等物理现象模拟出来。
参考文献:
[1]胡盘新,汤毓骏.普通物理简明教程:下册[M].北京:高等教育出版 2004:217-260.
[2]胡守信,李伯年.基于 MATLAB 的数学实验[M].北京:科学出版社,2004:139-144.
[3] 任 玉 杰. 数 值 分 析 及 其 MATLAB 实 现:MATLAB6.X,7.X [M]. 北 京: 高 等 教 育 出 版 社 ,
2007:39-44.
[4]徐代升,陶家友,吴健辉,等.单色光杨氏十涉图样计算机写真[J].湖南理工学院学报:自
然科学版,2009,22(3) : 28-31.
[5]符运良.MATLAB 在光学教学中的应用[J].华南热带农业大学学报,2004,10(3):55-57.
附录
程序一:
clear all %Program1.m
lam=500e-9;%输入波长
a=2e-3;D=1;
ym=5*lam*D/a; xs=ym;%设定光屏的范围
n=101; ys=linspace(-ym, ym,n) ;%把光屏的 y 方向分成 101 点
for i=1:n
r1=sqrt((ys (i) -a/2) .^2+D^2);
r2=sqrt((ys (i) +a/2) ^2+D^2);
phi=2*pi* (r2-r1)/lam;
B(i,:)=4*cos(phi/2).^2;
end
N=255 ;%确定用的灰度等级为 255 级
Br=(B/4.0) *N;%使最大光强对应于最大灰度级(白色)
subplot(1,2,1)
image(xs, ys, Br);%画干涉条纹
colormap(gray(N));
subplot(1,2,2)
plot(B, ys)%画出光强变化曲线
程序二:
clear all %Program1.m
lam=500e-9;%输入波长
a=2e-3;D=1;
ym=5*lam*D/a; xs=ym;%设定光屏的范围
n=101; ys=linspace(-ym, ym,n) ;%把光屏的 y 方向分成 101 点
for i=1:n
r1=sqrt((ys (i) -a/2) .^2+D^2);
r2=sqrt((ys (i) +a/2) ^2+D^2);
N1=19;dL=linspace(-0.1,0.1,N1);%设光谱相对宽度 10%,
lam1=lam*(1+dL);%分 19 根谱线,波长为一个数组
phil=2*pi*(r2-r1)./lam1 ;%从距离差计算各波长的相位差
B(i, :) =sum(4*cos(phil/2).^2)/N1;%叠加各波长并影响计算光强
end
N=255 ;%确定用的灰度等级为 255 级
Br=(B/4.0) *N;%使最大光强对应于最大灰度级(白色)
subplot(1,2,1)
image(xs, ys, Br);%画干涉条纹
colormap(gray(N));
subplot(1,2,2)
plot(B, ys)%画出光强变化曲线