matlab光学仿真实验 13171019
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
光学仿真实验
一.前言
此次光学仿真实验,是基于matlab来进行的。
在这仿真
的一系列过程中,对于光学现象出现的条件,以及干涉、
衍射是光波叠加的本质都有了更深的认识。
还从中学习
了matlab这一利器的知识,这两三个星期的学习是极其
值得的。
二.正文
1.杨氏双孔干涉
学习的开端是从双孔干涉开始,在极其理想的情况下
进行仿真,即忽略了孔的大小等影响因素,直接认为是
俩球面波进行叠加干涉。
代码如下:
clear;
l=521*10.^(-9); %波长
d=0.05; %俩孔的距离
D=1; %孔到光屏的距离
A1=1; %复振幅强度
A2=1;
x=linspace(-0.0001,0.0001,1000);
y=linspace(-0.0001,0.0001,1000);
[x,y]=meshgrid(x,y);
r1=sqrt((x-d/2).^2+y.^2+D^2);
r2=sqrt((x+d/2).^2+y.^2+D^2);
E1=A1./r1.*exp(1i*r1*2*pi/l);
E2=A2./r2.*exp(1i*r2*2*pi/l);
E=E1+E2;
I= abs(E).^2;
pcolor(x,y,I);
shading flat;
colormap (gray);
认为球面波位置在(d/2,0)和(-d/2,0)处,对于
在光屏上任意(x,y)点计算距离,计算出每个球面
波到其的复振幅,叠加求光强I。
所得图像:
这是光屏很小的情况下正中心出条纹,近似于平行线。
现在来看一下大光屏下的条纹,即x,y最大都是0.1,黑白、彩色是这样的:复杂许多,与下文双缝对比明显!
立体大屏下的图像为:
现在讨论改变条件引起小屏条纹的变化趋势:
ⅰ.波长变小为100nm,条纹变细,符合随波长增大,干涉条纹变粗,波长变小,干涉条纹变细的规律。
d
ⅱ.俩孔间距变大为0.1m,干涉条纹变细,符合孔间距与条纹宽度成反比的规律。
ⅲ.孔到光屏距离变大为2m,干涉条纹变粗,符合D与干涉条纹宽度成正比的规律。
基本规律与x=mλD/d一致。
2.杨氏双缝实验
今天有同学问起了杨氏双缝与双孔的区别,就加上看
看,想想两个方面都可以解释,双孔是俩球面波叠加,
双缝是俩柱面波叠加。
另一个方面,双孔的光程差要考
虑y轴上影响,双缝不考虑。
代码:
clear;
l=521*10.^(-9);
d=0.05;
D=1;
A1=1;
A2=1;
x=linspace(-0.0001,0.0001,1000);
y=linspace(-0.0001,0.0001,1000);
[x,y]=meshgrid(x,y);
r1=sqrt((x-d/2).^2+D^2);
r2=sqrt((x+d/2).^2+D^2);
E1=A1./(sqrt(r1)).*exp(1i*r1*2*pi/l);
E2=A2./(sqrt(r2)).*exp(1i*r2*2*pi/l);
E=E1+E2;
I= abs(E).^2;
pcolor(x,y,I);
shading flat;
colormap (gray);
可以看出在很小的光屏下面这俩者没什么区别,此时计算到光屏上点的距离r1,r2可以忽略掉y的影响,但是一旦放大,差距就出来,其本身光源的性质决定了干涉条纹的形状不同,亮度也有区别,双缝在y轴上没亮度变化!
3.平面波与平面波进行干涉,代码如下:
clear;
l=521*10.^(-9);
jiajiao=pi/3;
A1=1;
A2=1;
x=linspace(-0.000001,0.000001,100000);
y=linspace(-0.000001,0.000001,100000);
E1=A1.*exp(1i*x*sin(jiajiao/2)*2*pi/l);
E2=A2.*exp(-1i*x*sin(jiajiao/2)*2*pi/l);
E=E1+E2;
I=abs(E).^2;
nc=255;
br=I/4*nc;
subplot(2,1,1);
image(x,y,br);
colormap(gray(nc));
subplot(2,1,2);
plot(x,I);
这是俩平面波以60°夹角射在光屏上,结果如下:
光强是恒为4的亮屏。
没产生干涉现象,是相当于完全相同的俩波叠加。
我们将E2波方向改为反方向,与E1相反,,此时产生了干涉现象。
我们来改变角度和振幅来探究下影响。
ⅰ.将角度由60°变为30°
可看出干涉条纹变粗了,同样宽度下由4个暗纹变成2个暗纹。
随着夹角变小,干涉条纹变粗,间隔也变大。
ⅱ.将A1变为3.A2仍为1.
干涉条纹较不明显,我们通过光强来看,在5和15之间,一个光源亮度的改变导致整个干涉亮度的变化。
4.平面波与球面波干涉。
clear;
l=521*10.^(-9);
D=0.01;
A1=1;
A2=1;
jiajiao=pi/3;
x=linspace(-0.0005,0.0005,1000);
y=linspace(-0.0005,0.0005,1000);
[x,y]=meshgrid(x,y);
r1=sqrt(x.^2+y.^2+D.^2);
E1=A1./r1.*exp(1i*r1*2*pi/l);
E2=A2.*exp(1i*x*cos(jiajiao)*2*pi/l);
E=E1+E2;
I=abs(E).^2;
pcolor(x,y,I);
shading flat;
colormap (gray);
球面波直射,平面波以60°夹角射在光屏上:
可以明显看出,干涉圆的位置是偏离了原点的,立体图如下所示:
这个实验中无论是单独将E1还是E2的传播方向改为相反的,会发现干涉圆位置也会对称改变。
5.球面波与球面波干涉
ⅰ.当光屏面平行于俩球面波球心连线时,与双孔干涉
是一致的,不再进行讨论。
ⅱ.当光屏面垂直于俩球面波球心连线且位于俩球面波
同一侧时,
clear;
l=521*10.^(-9);
d=1*10.^(-3);
D2=1*10.^(-2);
A1=1;
A2=1;
x=linspace(-0.001,0.001,2000);
y=linspace(-0.001,0.001,2000);
[x,y]=meshgrid(x,y);
r1=sqrt(x.^2+y.^2+(D2+d).^2);
r2=sqrt(x.^2+y.^2+D2.^2);
E1=A1./r1.*exp(1i*r1*2*pi/l);
E2=A2./r2.*exp(1i*r2*2*pi/l);
E=E1+E2;
I=abs(E).^2;
pcolor(x,y,I);
shading flat;
colormap (gray);
所得图像如下:正中心点的亮度与距离有关系。
立体图如下:
ⅲ.当光屏垂直与球心连线,且位于俩球心中间时候:
clear;
l=521*10.^(-9);
d=1*10.^(-3);
D2=d/20;
A1=1;
A2=1;
x=linspace(-0.00005,0.00005,2000); y=linspace(-0.00005,0.00005,2000); [x,y]=meshgrid(x,y);
r1=sqrt(x.^2+y.^2+(d-D2).^2);
r2=sqrt(x.^2+y.^2+D2.^2);
E1=A1./r1.*exp(1i*r1*2*pi/l);
E2=A2./r2.*exp(-1i*r2*2*pi/l);
E=E1+E2;
I=abs(E).^2;
pcolor(x,y,I);
shading flat;
colormap hsv;
meshc(x,y,I);
其图像如下所示:
立体如下:
对比俩立体图可以发现,在中间的时候光强最大值衰减了,整体像是凸起的形状,因为俩光源到屏幕的距离与x,y在一个数量级上,可以看出距离的变化。
而在一侧时候,D过大,距离随x,y变化不明显,导致光强最大值变化不明显。
这就是用复振幅写的时候能看出光衰减的情况。
6.多孔干涉。
ⅰ.三孔干涉。
类似于双孔干涉,将其视为球心位于正
三角形三个顶点上的球面波进行干涉而成的图像。
由于
所选的光屏小,对于光的衰减并不明显,所看图形为一
片亮度差不多的。
clear;
l=521*10.^(-9);
d=0.01;
D=1;
A1=1;
A2=1;
A3=1;
x=linspace(-0.0001,0.0001,1000);
y=linspace(-0.0001,0.0001,1000);
[x,y]=meshgrid(x,y);
r1=sqrt((x-d/2).^2+y.^2+D^2);
r2=sqrt((x+d/2).^2+y.^2+D^2);
r3=sqrt(x.^2+(y-d*sqrt(3)/2).^2+D^2);%ÕýÈý½Ç·Ö²¼
E1=A1./r1.*exp(1i*r1*2*pi/l);
E2=A2./r2.*exp(1i*r2*2*pi/l);
E3=A3./r3.*exp(1i*r3*2*pi/l);
E=E1+E2+E3;
I=abs(E).^2;
pcolor(x,y,I);
shading flat;
colormap gray;
彩图、立体图如下:
彩图和立体图可以很清楚看出,一个亮斑周围有6个亮
斑,形成与类似蜂窝煤的东西,与六孔的差距在于中间
没有次级亮斑。
我们来改变一个振幅为2.出现了蛮有意思的图像。
ⅱ.四孔干涉。
球心位于正方形四个顶点的球面波干涉而成的图像。
clear;
l=521*10.^(-9);
d=0.01;
D=1;
A1=1;
A2=1;
A3=1;
A4=1;
x=linspace(-0.0003,0.0003,2000);
y=linspace(-0.0003,0.0003,2000);
[x,y]=meshgrid(x,y);
r1=sqrt((x-d/2).^2+(y-d/2).^2+D^2);
r2=sqrt((x+d/2).^2+(y-d/2).^2+D^2);
r3=sqrt((x-d/2).^2+(y+d/2).^2+D^2);
r4=sqrt((x+d/2).^2+(y+d/2).^2+D^2);
E1=A1./r1.*exp(1i*r1*2*pi/l);
E2=A2./r2.*exp(1i*r2*2*pi/l);
E3=A3./r3.*exp(1i*r3*2*pi/l);
E4=A4./r4.*exp(1i*r4*2*pi/l);
E=E1+E2+E3+E4;
I=abs(E).^2;
pcolor(x,y,I);
shading flat;
colormap hsv;
黑白图像类似于正方形的白斑排列。
看看彩图和立体图:
四孔干涉周围是8个同样的亮斑,排列整齐好看。
ⅲ.五孔干涉。
与上面类似,换成五个球面波干涉。
clear;
l=521*10.^(-9);
d=0.01;
D=1;
A1=1;
A2=1;
A3=1;
A4=1;
A5=1;
x=linspace(-0.0003,0.0003,2000);
y=linspace(-0.0003,0.0003,2000);
[x,y]=meshgrid(x,y);
r1=sqrt((x).^2+(y-d).^2+D^2);
r2=sqrt((x+0.9511*d).^2+(y-0.3090*d).^2+D^2);
r3=sqrt((x-0.9511*d).^2+(y-0.3090*d).^2+D^2);
r4=sqrt((x+0.5878*d).^2+(y+0.8090*d).^2+D^2);
r5=sqrt((x-0.5878*d).^2+(y+0.8090*d).^2+D^2);
E1=A1./r1.*exp(1i*r1*2*pi/l);
E2=A2./r2.*exp(1i*r2*2*pi/l);
E3=A3./r3.*exp(1i*r3*2*pi/l);
E4=A4./r4.*exp(1i*r4*2*pi/l);
E5=A5./r5.*exp(1i*r5*2*pi/l);
E=E1+E2+E3+E4+E5;
I=abs(E).^2;
pcolor(x,y,I);
shading flat;
colormap gray;
黑白图是个很复杂的形状
彩图,立体图如下:
一个主级亮斑周围开始出现次级亮斑,有小的凸起出现了。
7.等倾干涉。
参考书上p350图形原理,利用光程差来求解,由前后角度不变来计算出θ2,再解出光程差,来进行干涉仿真。
clear all
lam=521*10^(-9);
n=1.5;
f=0.2;
I0=1;
h=1;
x=linspace(-0.001,0.001,1000); y=linspace(-0.001,0.001,1000); [x,y]=meshgrid(x,y);
theta1=atan(sqrt(x.^2+y.^2)/f); theta2=asin(sin(theta1)/n);
deta=2*n*h*cos(theta2)+lam/2; phi=2*pi*deta/lam;
I=4*I0*cos(phi/2).^2;
pcolor(x,y,I);
shading flat;
colormap hsv;
ⅰ.我们来改变下n的值,将其变为10 看现象。
明显干涉圆变大了。
ⅱ.增加玻璃厚度h 变为2
明显变小了,是由于h只影响了光程差变大。
与书中12-37公式一致。
∆θ1=nλ/2n’2θ1h
8.等厚干涉。
仍是利用光程差来仿真。
clear all;
lam=521*10.^(-9);
theta=pi/180;
n=1;
I0=1;
x=linspace(0,0.0001,1000);
y=linspace(-0.0001,0.0001,1000);
[x,y]=meshgrid(x,y);
h=x*tan(theta);
delta=2*n*h+lam/2;%垂直入射
phi=2*pi*delta./lam;
I=4*I0*cos(phi/2).^2;
pcolor(x,y,I);
shading flat;
colormap gray;
产生了平行的干涉黑白条纹。
注意0处第一级为黑色。
与牛顿环0级是一样的。
因为此处由于半波损失,直接出现λ/2的光程差。
ⅰ.改变角度会改变光程差,产生影响。
我们将角度调大为2°。
明显可以看出,角度变大,条纹变密。
ⅱ.将上板平行移动一定高度,即将h加上0.01m
明显可以看出,条纹的粗细并未变化,但是其位置发生了一定移动,即向上移动时,干涉条纹向左边移动。
9.光源宽度对分辨率的影响
利用书上p346上已经积分得到的光强公式,我们直接套
用仿真
clear all
lam=521*10.^(-9);
l=0.1;
D=0.1;
d=0.0001;
b=0.0001;
x=linspace(-0.001,0.001,1000);
y=linspace(-0.000001,0.000001,1000);
I=2*(1+sin(pi*b*d/(l*lam))/(pi*b*d/(l*lam))*cos(2*pi*d*x/(lam*D))); nc=255;
br=I/4*nc;
subplot(2,1,1);
image(x,y,br);
colormap(gray(nc));
subplot(2,1,2);
plot(x,I);
光源大小为0.0001时候的干涉条纹和光强分布:
此时的k大约为0.92.他们的对比性可以很明显的看出来。
当光源大小为0.01时候,
基本是模糊一片。
其立体图振幅就快类似于一张纸。
此时通过计算k约为0.01.明显看出当光源宽度增加时,其干涉条纹的可见度是在降低的。
10.光源非单色性对可见度的影响
将双缝实验中波长写成从150到1100进行for循环,进行不同的波长每次干涉后在进行一起叠加,看最后所成的干涉图
像有什么变化。
其代码如下:
clear;
d=0.05;
D=1;
A1=1;
A2=1;
E=zeros(3000);
x=linspace(-0.0001,0.0001,3000);
y=linspace(-0.0001,0.0001,3000);
[x,y]=meshgrid(x,y);
r1=sqrt((x-d/2).^2+D^2);
r2=sqrt((x+d/2).^2+D^2);
for n=1:20
l=(100+50*n)*10^(-9);
E1=A1./(sqrt(r1)).*exp(1i*r1*2*pi/l);
E2=A2./(sqrt(r2)).*exp(1i*r2*2*pi/l);
E=E+E1+E2;
end
I=abs(E).^2;
pcolor(x,y,I);
shading flat;
colormap (gray);
可以从立体图清晰看到,20个不同的光波叠加,最大光强将近有290多,只有俩个很高的凸起。
其光强图如下面,
这是20个不同波长的光波进行叠加得到的图像,若是20个相同的光波进行叠加,我们只需要把n*0保证波长l不变即可,图如下。
可以看到光强很多最高达到了1600,我们将第一个光强除以1600,可以看出其与原光强的倍数关系。
亮度都变少了这么多,通过黑白图已经可以很直观的看出来可见度的区别。
11.多缝的夫琅禾费衍射
对于与干涉本质相同的衍射,也是光波的叠加。
书上对
于衍射部分的光强公式都推导出来,也就选择了直接使
用。
参考书上p401公式由单缝衍射因子和多光束干涉因
子进行合成,共同作用。
clear all;
lam=521*10^(-9);
a=0.00005;
d=4*a;
f=0.1;
N=1;
x=linspace(-0.01,0.01,1000);
y=linspace(-0.01,0.01,1000);
for n=1:1000
sinthi=x(n)/sqrt(x(n).^2+f^2);
alpha=pi*a*sinthi/lam;
delta=2*pi*d*sinthi/lam;
I(n)=(sin(alpha)/alpha).^2*(sin(N*delta/2)/sin(delta/2)).^2;
end
nc=255;
br=I/max(I)*nc;
subplot(2,1,1);
image(x,y,br);
colormap(gray(nc));
subplot(2,1,2);
plot(x,I);
首先进行的是单缝,中间出现了一个很亮的条纹,两边的次级亮纹很暗,通过光强图才可以看见。
我们将N变为20,观察其图形的变化。
我们发现其亮条纹变多了很多,其中亮条纹变细了变成了多条。
而不是单缝时候就是很粗的一条。
12.矩形夫琅禾费衍射。
矩形夫琅禾费衍射光强公式也在书上p392进行
了推导,直接套用。
clear all;
f=1;
a=0.0001;
b=0.00015;
lam=521*10^(-9);
x=linspace(-0.02,0.02,1000);
y=linspace(-0.02,0.02,1000);
for n=1:1000
for m=1:1000
sinthix=x(m)/sqrt(x(m).^2+f^2);
sinthiy=y(n)/sqrt(y(n).^2+f^2);
alpha=pi*sinthix*a/lam;
beta=pi*sinthiy*b/lam;
I(m,n)=((sin(alpha))/(alpha))^2*((sin(beta))/(beta))^2;
end
end
[x,y]=meshgrid(x,y);
pcolor(x,y,I);
shading flat;
colormap hsv;
mesh(x,y,I);
由于除了中央亮斑外其余都比较暗,直接看立体彩图。
看一下平面彩图
中间是一个矩形的亮斑,四周还有四个很轻的亮斑。
可能是调的参数都太对,别的亮斑就轻的快看不见了。
三、后记
此次仿真实验实际是我学习matlab的开始,我们没有做电磁的仿真作业,所以上手就是这次的光学仿真实验,前期也就是在看些关于matlab的ppt,有关其的基本操作等,只是还是能知道个plot的。
这种光学仿真确实是看起来很困难,实际上手以后也没有那么夸张。
每个仿真的代码实际上也并不多,而且大多类似,原理也很简单。
我总结我写的无非三类,一个是用复振幅叠加再求光强,多用于前面的简单干涉中,第二个就是用光程差来求解,饶了一下子,书上也是给了一半公式,等厚等倾干涉就是这样。
再个就是推导太难点,就是书上全给了,套数上公式就可,像这俩个衍射就是。
不过牵扯到复杂积分的全都不会,像时间相干性也是一直没法下手。
空间相干性书中公式用了近似,而我想直接自己积分,一个夜晚啥都没有积出来,复杂积分多个未知数不会。
整个仿真作业,也确实说是从模仿开始的,一开始也是不知道如何下手,找不到思路,当看别人的程序多了,自己把握了思想就好了许多,像最后做下来的衍射只是感觉式子复杂点,整个就是个套公式,加个循环而已。
做完了这些,感觉还是学到了不少东西,对于复振幅,对于叠加,对于光程差,对于各种条件等等等等,哪怕是对于matlab,也确实是了解了一
些,这确实是个很有意思的东西。
其实也得说,有比较才有差距,看各位大神在群里秀的很神奇的图,确实觉得非常好看,然而自己却是做不出来。
或者像艳召那种还顺便学了matlab 的gui设计,更是感觉神奇,至少比我这种一点一点改参数要方便多的多!
第二天补做了俩个东西,双缝干涉的区别和光源的非单色性影响。
还需努力。
谢谢老师。