MATLAB模拟演示小孔衍射
衍射的Matlab 模拟

二、菲涅耳-基尔霍夫衍射公式(确定了C、K()) 基尔霍夫 (Kirchhoff) 从波动方程出发,用场论得出了 比较严格的衍射公式。
A expik l expik r cosn, r cosn, l E P = d i l r 2
菲涅尔假设: 当 = 0 时,K()=Max, p/ 时,K()=0.
(实验证明是不对的) 若S发出的光源振幅为A(单位距离处),整个波面’的贡献
CA expikr ~ E P expikR K d R r
求解此公式主要问题:C、K()没有确切的表达式。
设
l
x sin x , f
a b
m
y sin y f
~ E x, y C 2a 2b exp ik lx1 my1 dx1 dy1
2 2
28
~ E x, y C 2a 2b exp ik lx1 my1 dx1 dy1
2 2
P0 E
17
r z1
2 2 x x1 y y1
2 z1
称为菲涅耳近似。
得到菲涅耳衍射:
e ikz1 ~ E x, y iz1
k ~ 2 2 E x1 , y1 exp i x x1 y y1 2 z1 y y
~ 和E0 abC
则
~ ~ sin sin E x, y E0
子波的复振幅与 cosn, r cosn, l 2 成正比,与波长成反比。 K ( )
1 p i exp[ i ] i 2 表示子波的振动位相超前于入射波90。
12
当光线接近于正入射时
基于matlab的衍射系统仿真(1)

《工程光学》综合性练习二题目:基于matlab的衍射系统仿真综合练习大作业二一、要求3-4人组成小组,对下面给出的各题目利用Matlab等工具进行仿真。
练习结束时每组提交一份报告及仿真程序。
在报告中应注明各仿真结果所对应的参数,如屏与衍射屏间距、孔径形状尺寸等。
二、仿真题目1.改变观察屏与衍射屏间距,观察观察屏上发生的衍射逐渐由菲涅耳衍射转为夫琅和费衍射1)原理图:S点光源发出的波长lam=500纳米S点发出光线经过单缝,缝宽a;单缝到衍射屏的距离L'2)Matlab代码clear;clcl=10; %l=input ('单缝到衍射屏的距离L=');a=0.2; %a=input('单缝的宽度(mm)a=');lam=500e-6; %lam=input('波长(nm)');x=-1:0.001:1; %接收屏边界y=x./sqrt(x.^2+l^2);z=a.*y/lam;I=1000*(sinc(z)).^2; %计算接受屏某点光强subplot(2,1,1) %绘制仿真图样及强度曲线image(2,x,I)colormap(gray(3))title('单缝衍射条纹')subplot(2,1,2)plot(x,I)title(光强分布)3)初始仿真图样(d=10)4)改变d之后的图样(d=1000)5)变化规律根据衍射屏以及接受屏的相对位置不同,由此产生菲涅尔衍射和夫琅禾费衍射的区别,根据我们模拟的情况得到菲涅尔衍射和夫琅禾费衍射的明显不同是夫琅禾费衍射条件下:中央有一条特别明亮的亮条纹,其宽度是其他亮条纹的两倍;其他亮条纹的宽度相等,亮度逐渐下降。
2.改变孔径形状、尺寸,观察图样变化1)原理图矩孔衍射:透镜焦距:1000mm;照射光波长:500nm;孔高:a(mm);孔宽:b(mm);圆孔衍射:圆孔直径:r(mm);照射光波长:500nm;照射光波长:500nm;2)matlab代码矩孔衍射:focallength=1000;lambda=500;a=2.0;b=2.0;resolution=64;center=(resolution)/2;A=zeros(resolution,resolution);for i=1:1:resolutionfor j=1:1:resolutionif abs(i-center)<a*10/2 & abs(j-center)<b*10/2 A(j,i)=255;endendendE=ones(resolution,resolution);k=2*pi*10000/focallength/lambda;imag=sqrt(-1);for m=1:1:resolutionx=m-center;for n=1:1:resolutiony=n-center;C=ones(resolution,resolution);for i=1:1:resolutionp=i-center;for j=1:1:resolutionq=j-center;C(j,i)=A(j,i)*exp(-imag*k*(x*p+y*q)); endendE(n,m)=sum(C(:));endendE=abs(E);I=E.^2;I=I.^(1/3);I=I.*255/max(max(I));L=I;I=I+256;CM=[pink(255).^(2/3);gray(255)];Colormap(CM);edge=(resolution-1)/20;[X,Y]=meshgrid([-edge:0.1:edge]);x=linspace(-edge,edge,resolution);y=linspace(-edge,edge,resolution);subplot(1,2,1);surf(x,y,L);axis([-edge,edge,-edge,edge,0,255]);caxis([0,511]);subplot(1,2,2);image(x,y,I);axis([-edge,edge,-edge,edge,0,511]);view(2);axis square;圆孔衍射:clearlmda=500e-9; %波长r=1.2e-3; %f = 1; %焦距N = 19;K = linspace(-0.1,0.1,N) ;lmda1 = lmda* ( 1 + K) ;xm = 2000* lmda* f;xs = linspace(-xm,xm,2000) ;ys = xs;z0 = zeros( 2000) ;[x,y]= meshgrid( xs) ;for i = 1: 19s = 2*pi*r*sqrt(x.^2 + y.^2)./(lmda1( i) ) ;z = 4* ( besselj( 1,s)./( s + eps) ).^2; %光强公式z0 = z0 + z;endz1 = z0 /19;subplot( 1,2,1)imshow( z1* 255) ; %平面图xlabel( 'x')ylabel( 'y')subplot( 1,2,2)mesh( x,y,z1) %三维图colormap(gray)xlabel( 'x')ylabel( 'y')zlabel( '光强')3)仿真图样:矩孔衍射:a=1,b=2a=2,b=2可知:矩孔在一个维度上展宽一定倍数将导致衍射图样在相同维度上缩短相同倍数,同时能量会更向中心亮斑集中。
实验7 衍射的Matlab模拟

实验7衍射的Matlab模拟一、实验目的:掌握衍射的matlab模拟。
二、实验内容:1)单个圆孔夫朗和费衍射的matlab模拟2)双圆孔夫朗和费衍射的matlab模拟3)同一波长,狭缝数量分别为1、2、3、6、9、10时候的夫朗和费衍射的matlab模拟4)对4个不同波长的光照射时,狭缝数量分别为1、3时候的夫朗和费衍射的matlab 模拟5)单个圆孔菲涅尔衍射的matlab模拟6)模拟圆孔(或者单缝)衍射时,衍射屏到接收屏距离不同的时候衍射的图样1)clearclclam=632.8e-9;a=0.0005;f=1;m=300;ym=4000*lam*f;ys=linspace(-ym,ym,m);xs=ys;n=200;for i=1:mr=xs(i)^2+ys.^2;sinth=sqrt(r./(r+f^2));x=2*pi*a*sinth./lam;hh=(2*BESSELJ(1,x)).^2./x.^2;b(:,i)=(hh)'.*5000;B=b/max(b);endimage(xs,ys,b);colormap(gray(n));figure;plot(xs,B);colormap(green);-2.5-2-1.5-1-0.500.51 1.52 2.5x 10-3-2.5-2-1.5-1-0.50.511.522.5x 10-3-3-2-10123x 10-300.10.20.30.40.50.60.70.80.912)%双圆孔夫琅禾费衍射clear all close all clc %lam=632.8e-9;a=0.0005;f=1;m=300;ym=4000*lam*f;ys=linspace(-ym,ym,m);xs=ys;n=200;for i=1:m r=xs(i)^2+ys.^2;sinth=sqrt(r./(r+f^2));x=2*pi*a*sinth./lam;h=(2*BESSELJ(1,x)).^2./x.^2;d=10*a;deltaphi=2*pi*d*xs(i)/lam;hh=4*h*(cos(deltaphi/2))^2;b(:,i)=(hh)'.*5000;end image(xs,ys,b);colormap(gray(n));-2.5-2-1.5-1-0.500.51 1.52 2.5x 10-3-2.5-2-1.5-1-0.50.511.522.5x 10-33)lamda=500e-9;%波长N=[1236910];for j=1:6a=2e-4;D=5;d=5*a;ym=2*lamda*D/a;xs=ym;%屏幕上y 的范围n=1001;%屏幕上的点数ys=linspace(-ym,ym,n);%定义区域for i=1:n sinphi=ys(i)/D;alpha=pi*a*sinphi/lamda;beta=pi*d*sinphi/lamda;B(i,:)=(sin(alpha)./alpha).^2.*(sin(N(j)*beta)./sin(beta)).^2;B1=B/max(B);end NC=256;%确定灰度的等级Br=(B/max(B))*NC;figure(j);subplot(1,2,1);image(xs,ys,Br);colormap(hot(NC));%色调处理subplot(1,2,2);plot(B1,ys,'k');end-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025狭缝数为1-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025狭缝数为2-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025狭缝数为3-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025狭缝数为9狭缝数为6-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.0254)lamda=400e-9:100e-9:700e-9;%波长N=[13];a=2e-4;D=5;d=5*a;for j=1:4ym=2*lamda(j)*D/a;xs=ym;%屏幕上y 的范围n=1001;%屏幕上的点数ys=linspace(-ym,ym,n);%定义区域for k=1:2for i=1:n sinphi=ys(i)/D;alpha=pi*a*sinphi/lamda(j);beta=pi*d*sinphi/lamda(j);B(i,:)=(sin(alpha)./alpha).^2.*(sin(N(k)*beta)./sin(beta)).^2;B1=B/max(B);end NC=256;%确定灰度的等级Br=(B/max(B))*NC;figure();subplot(1,2,1);image(xs,ys,Br);colormap(hot(NC));%色调处理subplot(1,2,2);狭缝数为10plot(B1,ys,'k');end end-0.4-0.200.20.4-0.02-0.015-0.01-0.00500.0050.010.0150.0200.51-0.02-0.015-0.01-0.0050.0050.010.0150.02Lamda=400nm,N=1-0.4-0.200.20.4-0.02-0.015-0.01-0.00500.0050.010.0150.0200.51-0.02-0.015-0.01-0.0050.0050.010.0150.02-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025Lamda=400nm,N=3Lamda=500nm,N=1-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025-0.4-0.200.20.4-0.03-0.02-0.0100.010.020.0300.51-0.03-0.02-0.010.010.020.03Lamda=500nm,N=3Lamda=600nm,N=1-0.4-0.200.20.4-0.03-0.02-0.0100.010.020.0300.51-0.03-0.02-0.010.010.020.03-0.4-0.200.20.4-0.03-0.02-0.0100.010.020.0300.51-0.04-0.03-0.02-0.010.010.020.030.04Lamda=600nm,N=3Lamda=700nm,N=1-0.4-0.200.20.4-0.03-0.02-0.0100.010.020.0300.51-0.04-0.03-0.02-0.010.010.020.030.045)clearclcN=300;r=15;a=1;b=1;I=zeros(N,N);[m,n]=meshgrid(linspace(-N/2,N/2-1,N));D=((m-a).^2+(n-b).^2).^(1/2);i=find(D<=r);I(i)=1;subplot(2,2,1);imagesc(I)colormap([000;111])axis imagetitle('衍射前的图样')L=300;M=300;[x,y]=meshgrid(linspace(-L/2,L/2,M));lamda=632.8e-6;k=2*pi/lamda;z=1000000;Lamda=700nm,N=3h=exp(j*k*z)*exp((j*k*(x.^2+y.^2))/(2*z))/(j*lamda*z); H=fftshift(fft2(h));%传递函数B=fftshift(fft2(I));%圆孔频谱G=H.*B;U=fftshift(ifft2(G));Br=(U/max(U));subplot(2,2,2);imshow(abs(U));axis image;colormap(hot)%figure,imshow(C);title('衍射后的图样');subplot(2,2,3);mesh(x,y,abs(U));subplot(2,2,4);plot(abs(Br))6)lamda=500e-9;%波长N=1;%缝数,可以随意更改变换a=2e-4;D=3:7;d=5*a;for j=1:5ym=2*lamda*D(j)/a;xs=ym;%屏幕上y的范围n=1001;%屏幕上的点数ys=linspace(-ym,ym,n);%定义区域for i=1:nsinphi=ys(i)/D(j);alpha=pi*a*sinphi/lamda;beta=pi*d*sinphi/lamda;B(i,:)=(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2;B1=B/max(B);endNC=256;%确定灰度的等级Br=(B/max(B))*NC;figure();subplot(1,2,1)image(xs,ys,Br);colormap(hot(NC));%色调处理subplot(1,2,2)plot(B1,ys,'k');end-0.4-0.200.20.4-0.015-0.01-0.00500.0050.010.01500.51-0.015-0.01-0.0050.0050.010.015D=3m-0.4-0.200.20.4-0.02-0.015-0.01-0.00500.0050.010.0150.0200.51-0.02-0.015-0.01-0.0050.0050.010.0150.02-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025D=5m D=4m-0.4-0.200.20.4-0.03-0.02-0.0100.010.020.0300.51-0.03-0.02-0.010.010.020.03-0.4-0.200.20.4-0.03-0.02-0.0100.010.020.0300.51-0.04-0.03-0.02-0.010.010.020.030.04D=7m D=6m。
模拟夫琅禾费衍射的matlab源代码

源代码: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实验结果:程序说明:本实验可以选择孔径类型、孔径半径、输入波长、衍射屏和衍射孔的距离等。
MATLAB编程用两种方法模拟光学实验

MATLAB编程用两种方法模拟光学实验摘要:利用MATLAB软件编程实现了用衍射积分的方法对单缝衍射、杨氏双缝干涉、黑白光栅衍射的计算机模拟;以及用傅立叶变换方法对简单孔径衍射、黑白光栅及正弦光栅夫琅和费衍射的模拟。
关键词:MATLAB;衍射积分;傅立叶变换;计算机模拟引言:美国Mathworks公司推出的MA TLAB,是一种集数值计算、符号预算、可视化建模、仿真和图形处理等多种功能于一体的优秀图形化软件。
本文介绍了通过MA TLAB软件编程实现用衍射积分和傅立叶变换实现夫琅和费衍射计算机模拟的方法。
计算机模拟为衍射实验的验证提供一条简捷、直观的途径。
从而加深了对物理原理、概念和图像的理解。
正文:大学教学课程中引入计算机模拟技术正日益受到重视,与Basic、C和Fortran相比,用MA TLAB软件做光学试验的模拟,只需要用数学方式表达和描述,省去了大量繁琐的编程过程。
下面来介绍利用MATLAB进行光学模拟的两种方法。
(一)衍射积分方法:该方法首先是由衍射积分算出接收屏上的光强分布,然后根据该分布调制色彩作图,从而得到衍射图案。
1.单缝衍射。
把单缝看作是np个分立的相干光源,屏幕上任意一点复振幅为np个光源照射结果的合成,对每个光源,光程差Δ=ypsinΦ,sinΦ=ys/D,光强I=I0(Σcosα)2+(Σsinα)2,其中α=2Δ/λ=πypys/λD编写程序如下,得到图1lam=500e-9;a=1e-3;D=1;ym=3*lam*D/a;ny=51;ys=linspace(-ym,ym,ny);np=51;yp=linspace(0,a,np);for i=1:nysinphi=ys(i)/D;alpha=2*pi*yp*sinphi/lam;图1 单缝衍射的光强分布 sumcos=sum(cos(alpha));sumsin=sum(sin(alpha));B(i,:)=(sumcos^2+sumsin^2)/np^2;endN=255;Br=(B/max(B))*N;subplot(1,2,1)image(ym,ys,Br); colormap(gray(N)); subplot(1,2,2) plot(B,ys); 2. 杨氏双缝干涉两相干光源到接收屏上P 点距离r 1=(D 2+(y-a/2)2)1/2, r 2=(D 2+(y+a/2)2)1/2,相位差Φ=2π(r 2-r 1)/λ,光强I=4I 0cos 2(Φ/2) 编写程序如下,得到图2 clear lam=500e-9 a=2e-3;D=1;ym=5*lam*D/a;xs=ym;n=101;ys=linspace(-ym,ym,n); for i=1:nr1=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,:)=sum(4*cos(phi/2).^2); end N=255;Br=(B/4.0)*Nsubplot(1,2,1) image(xs,ys,Br); colormap(gray(N)); subplot(1,2,2) plot(B,ys) 3. 光栅衍射公式:I=I 0(sin α/α)2(sin(λβ)/sin β)2α=(πa/λ)sin Φ β=(πd/λ)sin Φ编写程序如下:得到图3clearlam=500e-9;N=2; a=2e-4;D=5;d=5*a; ym=2*lam*D/a;xs=ym; n=1001;ys=linspace(-ym,ym,n); for i=1:nsinphi=ys(i)/D;alpha=pi*a*sinphi/lam; beta=pi*d*sinphi/lam;B(i,:)=(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2; B1=B/max(B);end图2 杨氏双缝干涉的光强分布 图3 黑白光栅衍射光强分布NC=255;Br=(B/max(B))*NC; subplot(1,2,1) image(xs,ys,Br); colormap(gray(NC)); subplot(1,2,2) plot(B1,ys);(二)傅立叶变换方法:在傅立叶变换光学中我们知道夫琅和费衍射场的强度分布就等于屏函数的功率谱。
MATLAB模拟衍射利用基尔霍夫衍射公式

利用菲涅尔—基尔霍夫衍射公式对问题进行处理,通过去不同的z 值观察近场,菲涅尔区,夫琅和费区的衍射条纹。
菲涅尔—基尔霍夫衍射公式:()()()()000exp cos ,cos ,2jk r r A E P ds j r r λ∑+⎡⎤-⎣⎦=⋅⋅⎰⎰n r n r ()()100exp E E P A jkr ==由于单色平面波垂直照射,()()10, cos ,1E P A ==-n r ,由于一般考虑光强的相对值,所以分析时取A=1,()cos cos ,z r θ==n r ,并对方孔进行微元,将方孔每个点在光屏上衍射的复振幅进行叠加,即计算E x ,y = z iλe ikr z r+12r ds ,从而得到光屏上的衍射条纹。
对于方孔编程时采用循环的方式,对于光屏则利用矩阵对光屏整体的复振幅,光强等进行分析,加快运算速度。
实现代码clear;lambda=6.32e-7;%波长k=2*pi/lambda;z=550;%光屏位置a=0.01;b=0.01;%方孔尺寸x1=linspace(-0.005,0.005,199);y1=linspace(-0.005,0.005,199);%将方孔分为许多小的微元x=linspace(-0.2,0.2,299);y=linspace(-0.2,0.2,299);%将光屏分为许多小的微元[X,Y]=meshgrid(x,y);%用二维矩阵描述光屏上点的位置E=zeros(299,299);%用于存放光屏上每个点的复振幅r=zeros(299,299);%用于存放光屏上没一点对应方孔上点的距离for l=1:199for j=1:199 %计算方孔上的每个点在光屏上的复振幅r=sqrt((X-x1(l)).^2+(Y-y1(j)).^2+z*z); %当前方孔上点到光屏上各个点的距离E=E+(-i/lambda)*(exp(i*k*r)).*(z./(2*r.*r)+1./(2*r))*z; %对不同点在光屏上的复振幅进行累加 endendE1=conj(E);I=E1.*E; %求光强% pcolor(y,x,I) %作图% colorbarIx= I(1:299,200);%光屏中心水平方向光强分布plot(x,Ix)夫琅和费区:Z=550m光强分布光屏中心水平方向光强分布Z=1m近场区:Z=0.001m。
MATLAB模拟演示小孔衍射

《MATLAB语言》课程论文MATLAB模拟演示小孔衍射姓名:王照义学号:12010245259专业:通信工程班级:10级通信工程指导老师:汤全武学院:物理电气信息学院完成日期:2011-12-10MATLAB模拟演示小孔衍射(王照义 12010245259 2010级通信班)[摘要]以单色标量波衍射理论为基础,研究了均匀平面波从不同角度入射小孔阵列的衍射特性。
运用单孔衍射理论,同时考虑相邻小孔间衍射光强的相互影响,建立了小孔阵列衍射的理论模型和光强分布的数值积分式,小孔为硬边小孔。
利用Matlab对500 nm波长的平面波入射微小方孔阵列衍射图样进行了计算机仿真,得到了不同几何参量下平面波从不同角度入射时的衍射图样的一维和二维光强分布图。
[关键字] 小孔衍射 MATLAB一、光的衍射种类包括:单缝衍射、圆孔衍射、圆板衍射及泊松亮斑光在传播过程中,遇到障碍物或小孔(窄缝)时,它有离开直线路径绕道障碍物阴影里去的现象。
这种现象叫光的衍射。
衍射时产生的明暗条纹或光环,叫衍射图样。
产生衍射的条件是:由于光的波长很短,只有十分之几微米,通常物体都比它大得多,但是当光射向一个针孔、一条狭缝、一根细丝时,可以清楚地看到光的衍射。
用单色光照射时效果好一些,如果用复色光,则看到的衍射图案是彩色的。
1.衍射现象光绕过障碍物偏离直线传播路径而进入阴影区里的现象,叫光的衍射。
光的衍射和光的干涉一样证明了光具有波动性。
2.光产生明显衍射的条件小孔或障碍物的尺寸比光波的波长小,或者跟波长差不多时,光才能发生明显的衍射现象。
由于可见光波长范围为4×10-7m至7.7×10-7m之间,所以日常生活中很少见到明显的光的衍射现象。
任何障碍物都可以使光发生衍射现象,但发生明显衍射现象的条件是“苛刻”的。
当障碍物的尺寸远大于光波的波长时,光可看成沿直线传播。
注意,光的直线传播只是一种近似的规律,当光的波长比孔或障碍物小得多时,光可看成沿直线传播;在孔或障碍物可以跟波长相比,甚至比波长还要小时,衍射就十分明显。
用MATLAB语言模拟光衍射实验

第14卷第4期大 学 物 理 实 验 V ol.14N o.42001年12月出版PHY SIC A L EXPERI ME NT OF C O LLEGE Dec.2001收稿日期:2001-07-30文章编号:1007-2934(2001)04-0047-02用MAT LAB 语言模拟光衍射实验周 忆(安徽省科学技术培训中心,合肥,230031) 梁 齐(合肥工业大学,合肥,230009)摘 要:用M AT LAB 语言模拟编写了光衍射的模拟实验程度,给出了五种元件的夫琅和费衍射图。
关键词:衍射;模拟;M AT LAB 语言中图分类号:O4-39 文献标识码:A光的衍射现象是光具有波动性的重要特征,衍射无论在理论研究还是在大学物理教学中都占有较重要的地位。
笔者利用MAT LAB 较强的绘图和图像功能,针对多种衍射元件(单缝、双缝、光栅、矩孔、圆孔)编写了光衍射的模拟实验程序。
在计算机的模拟光的衍射,条件限制较少,对于衍射的实验教学是一种较好的补充。
程序首先根据衍射强度分布的理论公式及实验参数建立衍射相对强度的数据矩阵B (x ,y )然后利用image (B )和colormap (gray )命令绘出衍射图样。
同时,也绘制了衍射光强分布的二维或三维图。
单缝夫琅和费衍射的模拟结果见图1。
衍射光强公式为I =I 0(sin u/u )2,u =(πa sin θ/λ),a 是缝宽,λ是入射光的波长,θ是衍射角。
设观察屏位于单缝后正透镜的焦平面上,f 为透镜的焦距,x 为屏上横向坐标。
θ=arctan (x/f )。
模拟分成三组:第一组,λ=600nm ,f =600mm ,(a )a =0.20mm ;(b )a =0.10mm ;(c )a =0.05mm 第二组,a =0.10mm ,f =600mm ,(d )λ=500nm ;(e )a =600nm ;(f )λ=700nm第三组,a =0.10mm ,λ=600nm ,(g )f =300mm ;(h )f =600mm ;(i )f =900mm以下内容中,取λ=600nm ,f =600mm ,衍射图样横坐标x 和纵坐标y 的范围均为[-20,20]mm 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《MATLAB语言》课程论文MATLAB模拟演示小孔衍射姓名:***学号:***********专业:通信工程班级:10级通信工程指导老师:***学院:物理电气信息学院完成日期:2011-12-10MATLAB模拟演示小孔衍射(王照义 12010245259 2010级通信班)[摘要]以单色标量波衍射理论为基础,研究了均匀平面波从不同角度入射小孔阵列的衍射特性。
运用单孔衍射理论,同时考虑相邻小孔间衍射光强的相互影响,建立了小孔阵列衍射的理论模型和光强分布的数值积分式,小孔为硬边小孔。
利用Matlab对500 nm波长的平面波入射微小方孔阵列衍射图样进行了计算机仿真,得到了不同几何参量下平面波从不同角度入射时的衍射图样的一维和二维光强分布图。
[关键字] 小孔衍射 MATLAB一、光的衍射种类包括:单缝衍射、圆孔衍射、圆板衍射及泊松亮斑光在传播过程中,遇到障碍物或小孔(窄缝)时,它有离开直线路径绕道障碍物阴影里去的现象。
这种现象叫光的衍射。
衍射时产生的明暗条纹或光环,叫衍射图样。
产生衍射的条件是:由于光的波长很短,只有十分之几微米,通常物体都比它大得多,但是当光射向一个针孔、一条狭缝、一根细丝时,可以清楚地看到光的衍射。
用单色光照射时效果好一些,如果用复色光,则看到的衍射图案是彩色的。
1.衍射现象光绕过障碍物偏离直线传播路径而进入阴影区里的现象,叫光的衍射。
光的衍射和光的干涉一样证明了光具有波动性。
2.光产生明显衍射的条件小孔或障碍物的尺寸比光波的波长小,或者跟波长差不多时,光才能发生明显的衍射现象。
由于可见光波长范围为4×10-7m至7.7×10-7m之间,所以日常生活中很少见到明显的光的衍射现象。
任何障碍物都可以使光发生衍射现象,但发生明显衍射现象的条件是“苛刻”的。
当障碍物的尺寸远大于光波的波长时,光可看成沿直线传播。
注意,光的直线传播只是一种近似的规律,当光的波长比孔或障碍物小得多时,光可看成沿直线传播;在孔或障碍物可以跟波长相比,甚至比波长还要小时,衍射就十分明显。
3.衍射的种类:(1)狭缝衍射让激光发出的单色光照射到狭缝上,当狭缝由很宽逐渐减小,在光屏上出现的现象怎样?当狭缝很宽时,缝的宽度远远大于光的波长,衍射现象极不明显,光沿直线传播,在屏上产生一条跟缝宽度相当的亮线;但当缝的宽度调到很窄,可以跟光波相比拟时,光通过缝后就明显偏离了直线传播方向,照射到屏上相当宽的地方,并且出现了明暗相间的衍射条纹,纹缝越小,衍射范围越大,衍射条纹越宽,。
但亮度越来越暗。
(2)小孔衍射当孔半径较大时,光沿直线传播,在屏上得到一个按直线传播计算出来一样大小的亮光圆斑;减小孔的半径,屏上将出现按直线传播计算出来的倒立的光源的像,即小孔成像;继续减小孔的半径,屏上将出现明暗相间的圆形衍射光环。
二、常见的几种衍射现象(一)圆孔衍射将一束光投射在一个小圆孔上,并在距孔l~2m 处放置一块毛玻璃屏,可观察到小圆孔的衍射花样。
现用上节所得的结论,研究从点光源所发出的光通过圆孔时的衍射现象。
现在先计算光到达垂直于圆孔面的对称轴上一点P 时的振幅。
图1P 点与波面上极点B 0之间的距离为r 0。
首先考虑通过圆孔部分波面的面积所含有的完整的菲涅耳带的数目。
这个整数k 与圆孔的半径、光的波长λ以及圆孔的位置(即R 和r 0)有关。
(1) (2)如果用平行光照射圆孔, ,则 r k x0λρ= (3) 如果不用光阑,即相当于圆孔的半径为无限大,也就是整个波面完全不被遮蔽,则由最末一个带所发次波在到达P 点时的振幅ak 为无限小,此时P 点的合振幅为 (4)此式表明,没有遮蔽的整个波面对P 点的作用等于第一个波带在该点的作用的一半。
因为波带的面积非常小,例如的绿光时,若R 、r 0均为1m ,第一个波带的面积约为即半径约为1/2 mm。
所以,没有遮藏的整个波面的光能的传播,几乎可以看作沿OP直线进行,这也是一般把光视作直线传播的原因。
P点离开光源愈远,a愈小光强愈弱。
在这种情况下1屏沿着对称轴线前进时,不发生上述某些点较强某些点较弱的现象。
如果圆孔具有一定大小的半径,观察点P的位置仅使波面上露出第一个带,则(5)与不用光阑时比较,振幅为完全不遮藏时的二倍,光强则增加到四倍。
所以光在通过圆孔以后到达任一点时的光强,不能够单独由光源到该点的距离来决定,还取决于圆孔的位置及大小。
仅当圆孔足够大、使小到可以略去不计时,才和光的直线传播概念所推得的结果一致。
这些讨论都假定O是理想的点光源。
但是实际光源都有一定的大小。
光源的每一点各自产生它自己的衍射花样,它们是不相干的。
光源的线度应小到使光源上某些点所产生的亮条纹不致落到另外一些点所产生的暗条纹上去。
否则由于不图2相干叠加,衍射花样就会完全模糊了。
通常情况下不容易观察到衍射花样正是由于这个缘故。
(二)圆屏衍射我们讨论一下点光源发出的光通过圆屏边缘时的衍射现象。
O为点光源,光路上有一不透明的圆屏。
现在先讨论P点的振幅。
设圆屏遮蔽了开始的k个带。
于是从第k+1个带开始,所有其余的带所发的次波都能到达P点。
把所有这些带的次波叠加起来,可得P点的合振幅为(6)即不论圆屏的大小和位置怎样,圆屏几何影子的中心永远有光。
不过圆屏的面积愈小时被遮蔽的带的数目k就愈小,因而愈大,到达P点的光愈强。
变更圆屏和光源之间或圆屏和光屏之间的距离时,k也将因之改变,因而也将影响P点的光强。
如果圆屏足够小,只遮住中心带的一小部分,则光看起来可完全绕过它,除了圆屏影子中心有亮点外没有其它影子。
这个初看起来似乎是荒谬的结论,是泊松于1818年在巴黎科学院研究菲涅耳的论文时把它当作菲涅耳论点谬误的证据提出来的。
但阿喇果做了相应的实验,证实了菲涅耳的理论的正确性。
三、小孔衍射的原理机械波的衍射实验往往用现成的仪器,通过机械振动产生水波纹来实现,我们能很清楚的观察到衍射图像,对于光的衍射实验可以通过用激光射到一个小球,从而产生衍射图像,但是小孔衍射确没法在普通的高中物理实验室中做出。
但是随着高中多媒体化的普及,教室里面多媒体的应用日益增加,我们完全可以通过数学软件来模拟小孔衍射图像来给学生演示,直观而又简单。
衍射的实质就是当光波在传播过程中遇到障碍物或者透过屏幕上的小孔时,会导致偏离原来入射方向的出射光波。
根据惠更斯-菲涅尔原理,波阵面上的每一点可以认为是产生球面子波的一个次级扰动中心,而以后任何时刻的波阵面则可以看作是这些子波的包络,假定这些次级子波互相干涉,从而产生衍射效应。
通俗的说,光的传播是以波的形式传播的,下一时刻的波阵面就是前一时刻波阵面上无数点发出的球面波的叠加。
当光波受到扰动(比如尺寸与波长可比的小孔或头发丝等),球面子波发生干涉,从而产生衍射。
衍射的实质是干涉。
而小孔成像中的小孔的尺寸应该远大于波长。
实际上即使如此,在小孔边缘附近也存在衍射效应。
之所以小孔后面会成像,是因为小孔将物体向空间各方向发出的光截取了其中一部分,按照光沿直线传播这一简单的模型,在小孔后白屏上产生物体的像。
产生衍射时,光线不是沿直线传播的。
几何光学里,我们认为光是沿直线传播的。
波动理论中认为光是以波动的形式传播的。
四、用MATLAB语言演示小孔衍射在光学中衍射理论的基础是惠更斯原理。
这原理假设开始的光波面上每一点可以看作次级光源,它们发射出子波,这些子波叠加后得到向前传播的光波。
图3小孔衍射示意图可以设屏幕上有一小孔,光波从左边入射,我们要计算通过小孔后在屏幕右边空间各点上光波的强度。
这种普遍的解法是很复杂的,实际所用的衍射理论都是一些近似解法。
根据这个计算方法,采用波长为500nm蓝绿光做为衍射光源,编写MATLAB程序,即可得到图像。
MATLAB程序如下:clearlamba=500e-9; %波长a=1e-3;D=1;ym=3*lamba*D/a; %屏幕上y的范围n=51; %屏幕上的点数ys=linspace(-ym,ym,n);n=51; %屏幕上的点数yp=linspace(0,a,n);for i=1:nsinphi=ys(i)/D;alpha=pi*yp*sinphi/lamba;sumcos=sum(cos(alpha));sumsin=sum(sin(alpha));B(i,:)=(sumcos^2+sumsin^2)/n^2;endN=256; %确定灰度的等级Br=(B/max(B))*N;subplot(1,2,1)image(ym,ys,Br);colormap(hot(N)); %色调处理subplot(1,2,2)plot(B,ys,'k');运行结果如图4所示。
图4衍射条纹五、[结论]通过图像很直观观察到波的小孔衍射的特征,中间的呈现白光,是各种颜色的光的叠加,两边颜色分别呈现黄色、红色,是因为黄色光和红色光波长较大,不能和别的窄波长的光叠加,只能单一呈现。
图像是实际计算出来的数值图像,更加有数学依据。
六、[课程体会]经过一学期的MATLAB语言课程的学习,我已经初步熟练的应用MATLAB语言,在学习的过程中,我逐步的发现用MATLAB 处理实验数据,过程直观方便,简单的命令就可以完成繁琐的计算,同时也激发了我的学习兴趣,让我摆脱了枯燥无味的重复计算。
由于MATLAB具有优秀的数字计算能力、准确科学的数字图形可视化能力以及直观简洁的程序环境,因此可以在大部分课程的实验教学上广泛推广。
本次实验设计只是MATLAB语言应用的一小部分,在以后的学习中我会更多的应用MATLAB语言,它的简便、直观和强大的功能会让我的学习更加的轻松。
[参考文献][1] 刘卫国.MATLAB程序设计与应用(第二版)[M].北京:高等教育出版社,2006.[2] 马文蔚.物理学(上册)(第四版)[M],北京:高等教育出版社,1999.。