多缝的夫琅和费衍射matlab仿真
- 格式:doc
- 大小:348.00 KB
- 文档页数:6
基于Matlab的夫琅禾费衍射光学仿真摘要计算机仿真技术是以多种学科和理论为基础,以计算机及其相应的软件为工具,通过虚拟试验的方法来分析和解决问题的一门综合性技术。
计算机仿真早期称为蒙特卡罗方法,是一门利用随机数实验求解随机问题的方法。
关键词:计算机仿真夫琅禾费衍射MatlabFraunhofer Diffraction Optical Simulation Based onMatlabAbstract The computer simulation technology is based on a variety of disciplines and theoretical, with the computer and the corresponding software tools, we can analyze the virtual experimentation and solve the problem of a comprehensive technology. Computer simulation of early known as the Monte Carlo method, is a random problem solved using the method of random number test.Key words:Computer simulation Fraunhofer diffraction Matlab一、引言计算机仿真技术是以多种学科和理论为基础,以计算机及其相应的软件为工具,通过虚拟试验的方法来分析和解决问题的一门综合性技术。
计算机仿真早期称为蒙特卡罗方法,是一门利用随机数实验求解随机问题的方法。
根据仿真过程中所采用计算机类型的不同,计算机仿真大致经历了模拟机仿真、模拟-数字混合机仿真和数字机仿真三个大的阶段。
20世纪50年代计算机仿真主要采用模拟机;60年代后串行处理数字机逐渐应用到仿真之中。
源代码:N=512;disp('衍射孔径类型1.圆孔 2.单缝3.方孔')kind=input('please input 衍射孔径类型:');% 输入衍射孔径类型while kind~=1&kind~=2&kind~=3disp('超出选择范围,请重新输入衍射孔径类型');kind=input('please input 衍射孔径类型:');% 输入衍射孔径类型endswitch(kind)case 1r=input('please input 衍射圆孔半径(mm):');% 输入衍射圆孔的半径I=zeros(N,N);[m,n]=meshgrid(linspace(-N/16,N/16-1,N));D=(m.^2+n.^2).^(1/2);I(find(D<=r))=1;subplot(1,2,1),imshow(I);title('生成的衍射圆孔');case 2a=input('please input 衍射缝宽:');% 输入衍射单缝的宽度b=1000;% 单缝的长度I=zeros(N,N);[m,n]=meshgrid(linspace(-N/4,N/4,N));I(-a<m&m<a&-b<n&n<b)=1;subplot(1,2,1);imshow(I);title('生成的衍射单缝');case 3a=input('please input 方孔边长:');% 输入方孔边长I=zeros(N,N);[m,n]=meshgrid(linspace(-N/4,N/4,N));I(-a/2<m&m<a/2&-a/2<n&n<a/2)=1;subplot(1,2,1),imshow(I);title('生成的方孔');otherwise kind=input('please input 衍射孔径类型:');% 输入衍射孔径类型end% 夫琅禾费衍射的实现过程L=500;[x,y]=meshgrid(linspace(-L/2,L/2,N));lamda_1=input('please input 衍射波长(nm):');% 输入衍射波长;lamda=lamda_1/1e6k=2*pi/lamda;z=input('please input 衍射屏距离衍射孔的距离(mm):');% 衍射屏距离衍射孔的距离h=exp(1j*k*z)*exp((1j*k*(x.^2+y.^2))/(2*z))/(1j*lamda*z);%脉冲相应H =fftshift(fft2(h));%传递函数B=fftshift(fft2(I));%孔频谱G=fftshift(ifft2(H.*B));subplot(1,2,2),imshow(log(1+abs(G)),[]);title('衍射后的图样');figuremeshz(x,y,abs(G));title('夫琅禾费衍射强度分布')实验输入:衍射孔径类型1.圆孔 2.单缝3.方孔please input 衍射孔径类型:1please input 衍射圆孔半径(mm):3please input 衍射波长(nm):632lamda =6.3200e-04please input 衍射屏距离衍射孔的距离(mm):1000000实验结果:程序说明:本实验可以选择孔径类型、孔径半径、输入波长、衍射屏和衍射孔的距离等。
2、用MATLAB仿真平行光束的衍射强度分布图样。
(夫朗和费矩形孔衍射、夫朗和费圆孔衍射、夫朗和费单缝和多缝衍射。
)理论推导部分2.(1)夫朗和费矩形孔衍射若衍射孔为矩形则在透镜焦平面上得到的衍射图样如图,衍射图样的主要特征为衍射亮斑集中分布在两个相互垂直的方向上,并且x轴上的亮斑宽度与y轴亮斑宽度之比,恰与矩形孔在两个轴上的宽度相反。
其中的θ为θx,同样的β中的θ为θy,利用θx=x/f,θy=y/f进行求解。
(2)夫朗和费圆形孔衍射夫朗和费圆孔衍射的讨论方法和矩形孔衍射的讨论方法相同,只是由于圆孔的几何对称性,采用极坐标更为方便。
Ф=kaθ2.(1)夫朗和费矩形孔衍射clear all;lamda=500e-9;a=1e-3;b=1e-3;f=1;m=500;ym=8000*lamda*f;ys=linspace(-ym,ym,m)xs=ys;n=255;for i=1:msinth2=ys./sqrt(ys.^2+f^2);%相当于x/fsinth1=xs(i)/sqrt(xs(i).^2+f^2);%xs(i)作用每给一个ys值,要遍历到所有的x值angleA=pi*a*sinth1/lamda;%相当于书上的alfa=kax/2f k=2*pi/lamdaangleB=pi*b*sinth2./lamda;B(:,i)=(sin(angleA).^2.*sin(angleB).^2.*5000./(angleA.^2.*a ngleB.^2));%光强度公式endsubplot(1,2,1)image(xs,ys,B)colormap(gray(n))subplot(1,2,2)plot(B(m/2,:),ys)(2)夫朗和费圆孔衍射clearlam=500e-9a=1e-3f=1m=300;ym=5*0.61*lam*f/a;%取爱里光斑半径的5倍ys=linspace(-ym,ym,m);xs=ys;n=200;for i=1:mr=xs(i)^2+ys.^2;%相当于r的平方sinth=sqrt(r./(r+f^2));%角度fai=2*pi*a*sinth./lam;%fai=k*a*sinthhh=(2*BESSELJ(1,fai)).^2./fai.^2;%贝塞尔函数 b(:,i)=hh.*5000;endsubplot(1,2,1)image(xs,ys,b)colormap(gray(n))subplot(1,2,2)b(:,m/2)plot(ys,b(:,m/2))。
4、多缝的夫琅和费衍射,使用平行光照明,观察衍射图样随点光源位置(光源上下移动)的变化 θθθ图4-1 图4-2多缝夫琅禾费衍射如图4-1所示。
由于相邻单缝在P 点产生的夫琅禾费衍射的幅值与中心单缝的相同,只是产生一个相位差θλπδsin 2d =,故,经证明,P 点处的光强为:220)2sin 2sin ()sin ()(δδααN I P I =, 其中θλπαsin a =,θλπδsin 2d =。
因而,程序代码如下:clear %清除原有变量Lambda=600*(1e-9); %设置波长为600nma=0.005*(1e-3); %设置衍射屏参数:缝宽为0.005mm , 缝距为0.02mmd=0.02*(1e-3);f=0.01; %汇聚透镜焦距设置为1cmN=20; %设置缝数为20ni=1000;x=linspace(-0.005,0.005,ni); %将衍射屏按照狭缝方向分为ni 个微元 for k=1:nisn=x(k)/sqrt(x(k).^2+f^2);alpha=pi*a*sn/Lambda; %算各微元对应的α和δ值delta=2*pi*d*sn/Lambda;I(k)=(sin(alpha)/alpha).^2*(sin(N*delta/2)/sin(delta/2)).^2; %求出各处的光强endfigure(gcf); %显示图像NCLevels=250;Br=I*NCLevels;image(0,x,Br);colormap(gray(NCLevels));title('二维强度分布');运行后结果如图4-2所示。
将光源上下移动的结果如图4-3所示:图4-3 图4-4点光源发出的光经过准直透镜后形成倾斜入射的平行光,倾斜角度为i 。
此时,P 点强度的公式为:220)sin ()sin ()(ββααN I P I =, 其中)sin (sin i a -=θλπα,)sin (sin i d -=θλπβ。
应用Matlab模拟光的夫琅禾费衍射的研究摘要:光的衍射是一种非常重要的光的物理现象。
它指的是:光将障碍物绕过,偏离直线传播路径,然后进入阴影区里的现象。
它也是光的波动表现的一种现象。
衍射系统的组成有三个部分,它们分别是:光源、衍射屏、接收屏(用来接收衍射图样的屏幕)。
通常情况下,我们根据衍射系统当中三个组成部分之间相互距离的大小,将衍射现象分为两类:一类叫做菲涅耳(Fresnel)衍射,剩下的一类叫做夫琅禾费(Fraunhofer,)衍射。
此文通过Matlab软件,进行编程,进而对夫琅禾费衍射过程进行模拟。
然后给出衍射光强分布图形,又通过对光的波长、焦距、缝宽等因素的改变,得到了衍射光强的分布和它的变化规律,并在理论上作出了合理的解释。
从而帮助我们更深刻的理解光的波动性原理。
关键词:Matlab;衍射;光学实验目录1 绪论 (1)1.1光的衍射现象 (1)1.2 Matlab模拟的意义 (1)2 光的衍射理论 (3)2.1 惠更斯原理 (3)2.2 惠更斯——菲涅耳原理 (3)3夫琅禾费衍射原理 (4)3.1 夫琅禾费单缝衍射 (4)3.2 夫琅禾费双缝衍射 (5)4 夫琅禾费衍射模拟 (6)4.1 单缝 (6)4.2 矩孔 (12)5 总结 (15)参考文献 (15)1 绪论1.1光的衍射现象自然界之中有一些光的现象,它们与人们已经发现的光的直线传播现象并不是百分百符合。
这些现象相继在17世纪之后被科学家们发现。
这就是由光的波动性表现出来的。
在这些现象之中,人们第一个发现的光的现象便是衍射现象,而且还在发现的同时做了些实验与理论的研究和探讨。
第一次成功发现衍射现象的科学家是意大利的物理学者格里马第。
在他的一部著作里描写了这样一个实验:让光通过很小的一个孔后射入到一个暗室里面,利用这种方法来形成点光源,然后在光路上面放置根直杆。
这时发现了两个特殊的现象:一个是影子,它投在白色的屏幕之上,以光的直线传播理论假定的影子要比它的宽度要小;另一个就是在这个影子的边缘还呈现出大约2、3个条带,条带是彩色的,随着光的增强,增强到很强的时候,这些条带甚至进入影子里。
基于Matlab的光学衍射实验仿真()摘要通过Matlab软件编程,实现对矩孔夫琅和费衍射的计算机仿真,结果表明:该方法直观正确的展示了衍射这一光学现象,操作性强,仿真度高,取得了较好的仿真效果。
关键词夫琅和费衍射;Matlab;仿真1引言物理光学是高校物理学专业的必修课,其中,光的衍射既是该门课程的重点内容,也是人们研究的热点。
然而由于光学衍射部分公式繁多,规律抽象,学生对相应的光学图像和物理过程的理解有一定的困难,大大影响了教学效果。
当然,在实际中可以通过加强实验教学来改善教学效果,但是光学实验对仪器设备和人员掌握的技术水平要求都较高,同时实验中物理现象容易受外界因素的影响,这给光学教学带来了较大的困难1【-5】。
随着计算机技术的迅速发展,现代化的教育模式走进了课堂,利用计算机对光学现象进行仿真也成为一种可能。
Matlab是一款集数值分析、符号运算、图形处理、系统仿真等功能于一体的科学与工程计算软件,它具有编程效率高、简单易学、人机交互好、可视化功能、拓展性强等优点[6-8],利用Matlab编程仿真光学现象只需改变程序中的参数,就可以生成不同实验条件下的光学图像,使实验效果更为形象逼真。
在课堂教学中,能快速的验证实验理论,使学生更直观的理解理论知识,接受科学事实。
本文以矩孔夫琅和费衍射为例,介绍了Matlab在光学衍射实验仿真中的应用。
2 衍射基本原理衍射是光波在空间或物质中传播的基本方式。
实际上,光波在传播的过程中,只要光波波面受到某种限制,光波会绕过障碍物偏离直线传播而进入几何阴影,并在屏幕上出现光强分布不均匀的现象,称为光的衍射。
根据障碍物到光源和考察点的距离,把衍射现象分为两类:菲涅尔衍射和夫琅和费衍射。
研究不同孔径在不同实验条件下的光学衍射特性,对现代光学有重要的意义。
如图1所示,衍射规律可用菲涅尔衍射积分表示,其合振幅为[9]:(1)其中,K是孔径平面,E是观察平面,r是衍射孔径平面Q到观察平面P的距离,d是衍射孔径平面O到观察平面P0的距离,cosθ是倾斜因子,k=2π/λ是光波波数,λ是光波波长,x1,y1和x,y分别是孔径平面和观察平面的坐标。
夫琅禾费衍射的Matlab仿真110512班 11051057 李陟凌夫琅禾费衍射,是认为光源和观察屏离衍射屏(孔处于无穷远处的衍射现象。
实验装置如图:S为单色点光源,放置在透镜L1的物方焦点处,所得平行光垂直入射到障碍物,借助于透镜L2将无穷远处的衍射图样移至L2的像方焦面上观察。
若障碍物为单缝,设缝宽度为a ,观察屏上点P与透镜L2光心连线的方位角为θ,由几何成像理论,此角正好也是相应平面波分量的方位角。
若取入射光波长为λ,透镜L2的焦距为f,根据惠更斯- 菲涅耳原理,可得单缝夫琅禾费衍射强度分布公式为:I=I0sin2α2(公式1式中I0为接收屏中央的强度,α=θ2=πasinθλ。
阿贝成像原理的演示实验中提及到夫琅禾费衍射,然而没有相应的演示实验装置,由此我产生了用数学软件模拟其衍射图样的想法。
根据公式1,代入λ、a、θ等值,就可以得到接收屏每一点的光强度值,调用imagesc(函数就可以得到干涉条纹样。
但这种方法只适用于单缝等简单情况。
为了模拟较复杂的二维孔洞产生的衍射图样,我查阅了资料,得到如下的方法:设衍射屏的振幅透射系数为t(x,y,根据菲涅耳——基尔霍夫衍射积分,若观察平面到衍射屏的距离z 满足如下近似条件:则在单位振幅的相干平面光波照射下,可得衍射屏的夫琅禾费衍射光场复振幅及强度分布分别为:式中T = F[t(x,y]表示衍射屏振幅透射系数t(x,y的傅里叶变换。
上式表明,在单位振幅的相干平面光波照射下,夫琅禾费衍射光场的复振幅分布正比于衍射屏振幅透射系数的傅里叶交换;衍射光场复振幅表达式中的相位因子并不影响观察屏上衍射图样的强度分布,若略去常系数,则衍射图样的强度分布直接等于衍射屏透射光场复振幅的傅里叶变换的模值平方。
将衍射屏制作成输入图像,用imread(函数读入,然后利用傅里叶变换函数fft2(对其进行傅里叶变换,得到其傅里叶频谱。
由函数fft2(实现的傅里叶变换频谱的直流分量位于图像的左上角,而由透镜实现的光学傅里叶变换的直流分量位于图像中心。
4、多缝的夫琅和费衍射,使用平行光照明,观察衍射图样随点光源位置(光源上下移动)的变化 θθ
θ
图4-1 图4-2
多缝夫琅禾费衍射如图4-1所示。
由于相邻单缝在P 点产生的夫琅禾费衍射的幅值与中心单缝的相同,只是产生一个相位差θλπδsin 2d =
,故,经证明,P 点处的光强为:
220)2sin 2sin ()sin ()(δ
δααN I P I =, 其中θλπαsin a =,θλ
πδsin 2d =。
因而,程序代码如下:
clear %清除原有变量
Lambda=600*(1e-9); %设置波长为600nm
a=0.005*(1e-3); %设置衍射屏参数:缝宽为0.005mm , 缝距为0.02mm
d=0.02*(1e-3);
f=0.01; %汇聚透镜焦距设置为1cm
N=20; %设置缝数为20
ni=1000;
x=linspace(-0.005,0.005,ni); %将衍射屏按照狭缝方向分为ni 个微元 for k=1:ni
sn=x(k)/sqrt(x(k).^2+f^2);
alpha=pi*a*sn/Lambda; %算各微元对应的α和δ值
delta=2*pi*d*sn/Lambda;
I(k)=(sin(alpha)/alpha).^2*(sin(N*delta/2)/sin(delta/2)).^2; %求出各处的光强
end
figure(gcf); %显示图像
NCLevels=250;
Br=I*NCLevels;
image(0,x,Br);
colormap(gray(NCLevels));
title('二维强度分布');
运行后结果如图4-2所示。
将光源上下移动的结果如图4-3所示:
图4-3 图4-4
点光源发出的光经过准直透镜后形成倾斜入射的平行光,倾斜角度为i 。
此时,P 点强度的公式为:
220)sin ()sin ()(ββ
αα
N I P I =, 其中)sin (sin i a -=θλπα,)sin (sin i d -=θλ
πβ。
故而程序代码如下,当0≠i 时,即光源上下移动,改变其的值,即可仿真出移动不同距离时的衍射图样。
程序代码如下:
clear %清除原有变量
Lambda=600*(1e-9); %设置波长为600nm
a=0.005*(1e-3); %设置衍射屏参数:缝宽为0.005mm ,
缝距为0.02mm
d=0.02*(1e-3);
f=0.01; %汇聚透镜焦距设置为1cm
N=10; %设置缝数为10
ni=500;
i=pi/20; %设置平行光入射的倾斜角
x=linspace(-0.005,0.005,ni); %将衍射屏按照狭缝方向分为ni 个微元 for k=1:ni
sn=x(k)/sqrt(x(k).^2+f^2);
alpha=pi*a*(sn-sin(i))/Lambda; %算各微元对应的α和δ值
delta=2*pi*d*(sn-sin(i))/Lambda;
I(k)=(sin(alpha)/alpha).^2*(sin(N*delta/2)/sin(delta/2)).^2;
%求出各处的光强
end figure(gcf); %显示图像 NCLevels=250;
Br=I*NCLevels;
image(0,x,Br);
colormap(gray(NCLevels));
title('二维强度分布');
运行程序后结果如图4-4。
令10π=
i ,结果如图4-5;令10-π=i ,结果如图4-6。
图4-5 图4-6
故光源上下移动,会使干涉图样分别向右边和左边偏移。
5、多缝的夫琅和费衍射,使用扩展光源照明,前后、上下移动光源,观察衍射图样的变化
使用扩展光源照明,即为4中点光源的光照的叠加。
程序代码为:
clear %清除原有变量
Lambda=600*(1e-9); %设置波长为600nm
a=0.005*(1e-3); %设置衍射屏参数:缝宽为0.005mm,
缝距为0.02mm
d=0.02*(1e-3);
f=0.01; %汇聚透镜焦距设置为1cm
N=10; %设置缝数为10
ni=500;
I=zeros(1,ni);
i=linspace(-pi/1000,pi/1000,200); %将扩展光源分为微元
x=linspace(-0.005,0.005,ni); %将衍射屏按照狭缝方向分为ni个微元for t=1:200
for k=1:ni
sn=x(k)/sqrt(x(k).^2+f^2);
alpha=pi*a*(sn-sin(i(t)))/Lambda; %算各微元对应的α和δ值
delta=2*pi*d*(sn-sin(i(t)))/Lambda;
In(k)=(sin(alpha)/alpha).^2*(sin(N*delta/2)/sin(delta/2)).^2;
%求出各处的光强
end
I=I+In; %将各光源光强累加
end
figure(gcf); %显示图像
NCLevels=250;
Br=I*NCLevels;
image(0,x,Br);
colormap(gray(NCLevels));
title('二维强度分布');
运行结果如图5-1,为左右偏移后的干涉条纹的叠加。
图5-1 图5-2
将光源上下移动,可以通过改变i的取值实现,将上面程序中
i=linspace(-pi/1000,pi/1000,200); %将扩展光源分为微
元
改为
i=linspace(-pi/2000,3*pi/2000,200); %将扩展光源分为微元
运行后可得结果如图5-2,认为干涉条纹的叠加。
若扩展光源足够大,令
i=linspace(-pi/2000,3*pi/2000,200); %将扩展光源分为微元
则结果如图5-3,为全亮。
图5-3。