光栅衍射实验的MATLAB仿真.docx
- 文档编号:12410470
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:31
- 大小:689.65KB
光栅衍射实验的MATLAB仿真.docx
《光栅衍射实验的MATLAB仿真.docx》由会员分享,可在线阅读,更多相关《光栅衍射实验的MATLAB仿真.docx(31页珍藏版)》请在冰点文库上搜索。
光栅衍射实验的MATLAB仿真
届别2012届
学号2
毕业设计
光栅衍射实验MATLAB仿真
姓 名吴帅
系别、专业物理及电子信息工程系
应用物理专业
导师姓名、职称姚敏教授
完成时间2012年5月16日
摘要
平面光栅衍射实验是大学物理中非常重要实验,实验装置虽然简单,但实验现象却是受很多因素影响,例如波长λ,缝数N,以及光栅常数d。
本文利用惠更斯一菲涅耳原理,获得了衍射光栅光强解析表达式,再运用Matlab软件,将模拟界面设计成实验参数可调gui界面,能够连续地改变波长λ,缝数N,光栅常数d,从而从这3个层面对衍射光栅光强分布和谱线特征进行了数值模拟,并讨论了光栅衍射缺级现象,不仅有利于克服试验中物理仪器和其他偶然情况等因素给实验带来限制和误差.并而且通过实验现象对比,能够加深对光栅衍射特征及规律理解,这些都很有意义。
关键词:
平面光栅衍射;惠更斯-菲涅尔原理;gui;光强分布;Matlab
ABSTRACT
PlanegratingdiffractionexperimentisveryimportantintheCollegephysicsexperiment,thoughtheexperimentalequipmentissimple,theresultwillbeinfluencedbymanyfactors,suchaswavelengthλandslotnumberN,andgratingnumberd.ThepapertakesadvantageofHuygens-Fresnelprinciple,thenfuguresthefomulaofdiffractionlightintensitydistribution.AtlasttheexperimentissimulatedbyMatlabsoftware.Theusercancontinuouslychangeparameterwavelengthλ,slotnumberN,gratingnumberd,soastogetthedifferentexperimentalphenomenon,andthemissingorderofgratingdiffractionphenomenawillbediscussed.Notonlythematlabsimulationcanbeusedtoovercomethelimitationsofexperimentalequipmentandotherincidentalfactors.butalsothroughthecomparisonofexperimentalphenomenon,itcandeepentheunderstandingofgratingdiffractioncharactersandrules.Asawhole,itisofsignificance.
Keywords:
diffractionofplanegratings;Huygens-Fresnelprinciple,GUI,andlightintensitydistribution;Matlab
1引言
荷兰物理学家惠更斯(Huygens)是光波动说创始人,1690年他提出了关于波如何传播惠更斯原理,即认为波前上每一点都可看为是新球面子波源,子波包络面就是新波前。
根据这一原理可导出反射和折射定律,也能得出光波经过小孔后偏离几何光学规律向各方向传播,但不能区别光直线传播和衍射现象产生条件,更不能定量计算沿不同方向传播光波振幅,因而无法确定衍射图样中光强分布,只是一种几何作图法。
1818年,菲涅尔(Fresnel)吸收了惠更斯原理中“子波”概念,在杨氏干涉实验启发下对惠更斯原理进行了补充,认为子波之间还存在相干叠加。
这样用干涉原理补充惠更斯原理称为惠更斯-菲涅尔原理。
1882年,基尔霍夫(Kirchhoff)进一步研究了惠更斯-菲涅尔原理,用标量近似法得到了菲涅尔-基尔霍夫积分公式[1],为原理奠定了比较完善数学基础,因而能依此计算得出光栅衍射图样中光强分布规律数学表达式。
另外光栅衍射光强计算还可采用另外一种方法—振幅矢量法[2]。
本文将采用此种方法计算出光强表达式,进一步编写出matlab仿真光栅衍射主程序。
1.1国内外研究动态
对光学实验进行计算机仿真,具有两个方面意义:
一方面,利用仿真结果指导实际实验,前期投资少,且可以减少贵重仪器损伤等;另一方面,在教学上,将抽象难懂概念、规律通过实验仿真生动、形象地表现出来,使学生更易于接受,具有明显教学效果[3]。
波动光学实验内容比较抽象,如不借助实验,学生很难理解。
国外著名光学教材配有大量图片(包括计算和实验获得图片),来形象地说明光学中抽象难懂理论。
波动光学实验一般需要稳定环境,高精密仪器,因此在教室里能做光学实验极为有限,而且也受到授课时间限制。
为了克服光学实验对实验条件要求比较苛刻缺点,可采用计算机仿真光学实验,特别是光学演示实验,配合理论课进行,把光学课程涉及大多数现象展示在学生面前,以加深对光学内容理解。
我国光学教材在利用计算机仿真方面相对落后,至今没有同类教材出现。
在2003年北京举行网络教育软件展上,有关光学实验网络教学软件都偏重于理论分析方面,对计算机应用于光学实验仿真方面未给及充分重视[4]。
在计算机日益普及今天,计算机仿真技术作为虚拟实验手段己经成为计算机应用一个重要分支,它是继理论分析和物理实验之后,认识客观世界规律性一种新型手段。
1.2Matlab简介
Matlab是MathWorks公司于1982年推出一套高性能数值计算和可视化软件。
它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便、界面友好用户环境。
它还包括了ToolBox工具箱)各类问题求解工具,可用来求解特定学科问题。
其特点是:
(1)可扩展性:
Matlab最重要特点是易于扩展,它允许用户自行建立指定功能M文件。
对于一个从事特定领域工程师来说,不仅可利用Matlab所提供函数及基本工具箱函数,还可方便地构造出专用函数,从而大大扩展了其应用范围。
当前支持Matlab商用Toolbox工具箱)有数百种之多。
而由个人开发Toolbox则不可计数。
(2)易学易用性:
Matlab不需要用户有高深数学知识和程序设计能力,不需要用户深刻了解算法及编程技巧。
(3)高效性:
Matlab语句功能十分强大,一条语句可完成十分复杂任务。
如fft语句可完成对指定数据快速傅里叶变换,这相当于上百条C语言语句功能。
它大大加快了工程技术人员从事软件开发效率。
据MathWorks公司声称,Matlab软件中所包含Matlab源代码相当于70万行C代码。
由于Matlab具有如此之多特点,在欧美高等院校,Matlab己成为应用于线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程基本教学工具;在研究单位、工业部门,Matlab也被广泛用于研究和解决各种工程问题[5]。
2理论依据
2.1平面光栅衍射实验装置
平面衍射光栅是由大量相互平行、等宽、等距狭缝(或刻痕)组成;它能达到刻槽密度需要具备亚微米加工设备和工艺技术,达到纳米级精度要求,是属于光、机、电结合高技术项目.以衍射光栅为色散元件组成摄谱仪或单色仪是物质光谱分析极其精密光谱分析仪器,在研究谱线结构、特征谱线波长和强度,特别是研究物质结构和对元素作定量及定性分析中有极其广泛应用。
平面光栅衍射实验装置如图1所示,S为点光源或及纸面垂直狭缝光源,它位于透镜
焦平面上,屏幕放在物镜
焦平面上。
该装置衍射屏上有一系列等宽等间隔平行狭缝,设每条缝宽度为b,相邻两缝问不透明部分宽度为a,则相邻狭缝上对应点之问距离(即光栅常数)d=a+b,其倒数表示每毫米内有多少条狭缝,称为光栅密度;θ是衍射角,透射光栅总缝数为N。
图2-1光栅衍射实验装置
2.2原理分析
本文用一种在普通物理阶段严格计算光栅衍射光强分布振幅矢量方法[5],此方法回避了困难菲涅耳-基尔霍夫积分,该积分复杂难懂,故不采纳。
用振幅矢量法计算有两个显著优点,一个是物理概念清楚,另一个是计算简单严格。
实际上,衍射本质就是无穷多个子波干涉结果.下面通过把光栅N个缝每一个缝都分割成n个子波带,最后让n→∞,考虑这无穷多个子波干涉,用振幅矢量法严格计算出光栅衍射光强分布表达式.设这N个缝宽度都是b,相距都为a,波长为λ光垂直照射到这N个缝前时,每条缝单独衍射时最大光强为
其相应振幅为
。
现在将每条缝分为n等份,每一等份振幅都为
=
/n.当衍射光以θ角出射时,以第1个缝第1等份子波位相为零作基准,则第2,3,⋯⋯,n等份子波及基准子波位相差为
2
⋯⋯,(n-1)
。
,第二个缝第1,2,3,…,n等分子波及基准子波位相差为
,
+
,
+2
,……,
+(n-1)
.。
。
第j个缝第k等份子波及基准子波位相差为
其振幅
x和y分量为:
……
(1)
……
(2)
设所有子波带在屏上干涉合振幅为
并且把
表示成下式,省略等式右边下标n
其中i为虚数单位,而
……(3)
……(4)
于是得到屏上光强分布,得:
……(5)
上式运用了复变函数论欧拉公式以及等比数列求和公式。
现在最关键是让n→∞取极限才是所有子波在屏上合振幅
……(6)
其中只有分母部分包含有n因子,分母取极限变形,则
……(7)
上式运用了数学里面一个基本极限公式
由于
,所以最后得到光栅衍射光强分布表达式
……(8)
式(8)中.
.及其中来源于单缝衍射,称为单缝衍射因子;来源于缝间干涉,称为缝间干涉因子。
因此,可以说多缝衍射光强分布是多光束干涉光强分布受单缝衍射光强分布调制结果(图2-3)。
在光栅衍射中,相邻两主极大之间还分布着一些暗条纹,这些暗条纹是由各缝射出衍射光因干涉相消而形成,即及缝间干涉因子有关。
用公式来表示,零点在下列位置出现暗条纹[6]:
……(9)
在每两个主极大之间,分布着(N-1)暗线(零点)和(N-2)个光强极弱次级明条纹,这些明条纹几乎是观察不到。
另外条纹半角宽度也可作为研究光栅衍射条纹规律一个重要物理量。
根据半角宽度定义:
……(10)
显然式(10)给出了半角宽度及各个实验参数之间关系。
2.3MATLAB主程序编写
根据公式(8)可知,λ,N,b,d,f,等参数影响着光栅衍射光强分布及光谱特性。
f为
焦距。
用MATLAB编写主程序[7][8]如下:
>>clear
wavelength=0.0007000;f=100;b=0.005;d=0.01;N=4;%设定参数值(单位为mm)
x=linspace(-4*pi,4*pi,1000);%设定图像x方向范围
forj=1:
1000%对x方向全部点进行循环计算
u=(pi*b/wavelength)*(((x(j)/sqrt(x(j)^2+f^2))));
Idan=((sin(u)/u).^2);%单缝衍射光强公式
Iduo=((sin(d*u*N/b)/sin(d*u/b)).^2);%多缝干涉光强公式
I(j)=Idan*Iduo;%光栅衍射光强公式
end
holdon;
NCLevels=255;
Ir=NCLevels*I;
IG=NCLevels*Idan;
IB=NCLevels*Iduo;
colormap(gray(NCLevels));%用灰度级颜色图
subplot(2,1,2),image(x,I,Ir)%画图像
subplot(2,1,1),plot(x,I(:
)/max(I));%屏幕上光强及位置关系曲线
title('光栅衍射仿真结果')
以上主程序中所用到数据为λ=700nm,N=5,b=0.005mm,d=0.01mm,f=100mm,(选取正入射,本文程序运行时入射方向和光栅平面法线之间夹角都为零)。
运行以上程序得到如下图样:
图2-2光栅衍射仿真图像
通过图2-2可知,光栅衍射仿真图像及理论基本吻合,光栅衍射光强是多缝干涉光强受单缝衍射调制结果。
这为下文图形用户界面(GUI)设计以及光栅衍射研究提供了基础。
2.4仿真图形用户界面设计
图形用户界面(GraphicalUserInterface,简称GUI)指是用户及计算机或计算机程序接触点或交互方式,是用户及计算机进行信息交流平台。
用户界面设定了如何观看和如何感知计算机操作系统或应用程序(通常是根据结构和用户界面功能有效性来选择),使用户通过输入设备,如:
键盘、鼠标、等激活这些程序,计算机根据用户操作在屏幕上显示相应图形、文本、和计算结果,实现人及计算机交流。
上文编写程序代码,已经可以实现光栅衍射实验计算机仿真了,现在要做是用图形用户界面来把程序封装起来,让用户不用直接面对枯燥程序代码就可以实现各种仿真操作[9]。
一个完整MATLAB图形用户界面,需要涉及到界面控件布置、编辑和各种控件后台程序代码添加。
在GUI界面下,用户可以非常方便地改变参数设置,从而可以得到对应仿真图样。
显然当缝数N=1为单缝衍射,N=2为双缝干涉,N>2为光栅衍射,这些在该设计界面下都能满足,如图:
图2-3仿真界面
3光栅衍射现象分析
3.1缝数N对衍射条纹影响
根据式式(9)和式(10)理论关系式,可以初步得出缝数N及衍射条纹一些关系,如亮纹半角宽度明显和缝数N成反比关系。
而图2是matlab对不同数目狭缝在屏幕上形成相对光强分布和衍射条纹模拟。
在界面中改变缝数N值。
其余参数如图。
三幅图像分别对应N=3,N=7,N=10:
图3-1不同缝数衍射图样
比较观察图3-1中三幅图可以看出:
(1)主极大位置及缝数N对没有关系(相邻两个主极大之间角间距不变),但它们宽度随N减少;
(2)相邻主极大之间有N-1条暗纹和N-2条次极大。
(3)狭缝数目N越大,则主极大亮线半角宽度越小,主极大锐度越大,反映在衍射图样上主极大亮纹越细,相应地次极大线宽变小,亮度变弱[10]。
3.2波长λ对衍射条纹影响
从式(10)我们可以看出,谱线半角宽度
及Nd乘积成反比,Nd愈大,
愈小,谱线愈窄,锐度愈好.如果光源发出光单色性很好,这样光栅给出光谱是一组很明锐谱线。
多缝衍射图样半角宽度
及λ成正比关系,在实验室当中很难得到任意波长光波,毫无疑问将增加实验成本以及对实验器材要求也是相当高,对此,采用matlab来模拟这个实验,在本文设计图形用户界面(GUI)中连续改变波长λ时,得到衍射光强分布如图3-2所示,为方便观察,参数设置如图,波长分别取400nm,600nm,700nm光波。
图3-2不同波长衍射图样
将图3-2中不同波长光强分布曲线通过处理到同一图像下图3-3上。
可见光范围为380nm-760nm,实线代表波长为400nm光波谱线,虚线代表波长为600nm光波谱线。
粗实线表示波长为700nm。
图3-3合成波形图
从图3-2,图3-3我们可以得到衍射光强随波长λ变化规律为:
(1)衍射条纹主极大位置不变,而次极大位置沿两边发生了移动。
(2)主(次)极大半角宽度及主(次)极大条纹间距均随λ增长而增大。
(3)随着λ增大,衍射谱线变宽,锐度变坏(即谱线变得模糊)。
3.3光栅常数d对衍射光强影响
由式(10)可以得出谱线半角宽度
及光栅常数d成反比关系.当其它参数保持不变时,我们仅改变光栅常数d值,同样在设计界面运行时取用不同d值,当d=0.01,d=0.03,d=0.08(单位为mm)衍射光强分布如图5所示:
图3-4不同光栅常数衍射图像
从图5中三个图比较可以看出:
(1)衍射光强主极大半角宽度及主极大条纹间距随d增大而减小。
(2)主极大位置随d增大,逐渐向中央亮纹靠拢。
(3)衍射谱线变窄,锐度变好。
3.4条纹缺级现象
由式(8)可知,光栅衍射强度分布受到单缝衍射因子和缝间干涉因子共同作用.缝问间涉因子决定了衍射条纹主极大位置和半角宽度,而单缝衍射因子并不改变主极大位置和半角宽度,只改变各级主极大强度;或者说,仅在于影响强度在各级主极大问分配.我们在讨论光栅公式
时,只是从多光束干涉角度说明了叠加光强最大而产生明条纹必要条件,但当这一θ角位置同时也满足单缝衍射暗纹条件
时,可将这一位置看成是光强度为零“干涉加强”。
当k及k’满足下列公式时看来应出现某k级明条纹位置,实际上却是暗条纹,既k级明条纹不出现,这种现象称为缺级现象。
……(11)
M文件封装程序代码中编写缝宽b=0.005mm,透镜L2焦距f=100mm,为使得图像易于观察,在M文件程序代码中将f=100mm修改为f=40mm。
其他参数λ=600nm,N=4,d=2b=0.01mm和d=4b=0.02mm代入界面中运行得到如下图形:
图3-5缺级现象图解
当d=2b=0.01mm时,由式(11)中可推算出缺级应出现在±2,±4,...级条纹,而从图3-5中模拟图样可以清晰得知用matlab模拟光栅衍射现象及理论完全吻合。
同样当d=4b=0.02mm时,缺级应出现在±4,±8,......。
这一实验现像也得到了完美模拟再现。
4总结
计算机仿真技术作为一个虚拟实验手段在现在科研学习中发挥着愈来愈重要作用。
特别是在光学教学过程中,对光学现象理解离不开光学实验。
采用计算机仿真技术对其进行仿真,得到满足各种条件光学实验结果图像,有助于学生在学习过程中建立清晰正确观念。
通过上述讨论分析可知,利用MATLAB软件对平面光栅衍射实验进行仿真模拟,不受实验仪器和场所限制,将模拟界面设计成实验参数可调人机交互平台,可以很轻松通过调节界面上实验参数就能得到不同参数条件下衍射强度分布和衍射谱线,对于帮助学生理解光学原理具有积极作用,并进一步提高大学物理趣味性;同时,对衍射光栅作为各种光谱仪器核心元件制作和研究进行了更深一步认识。
此方法在物理教学中具有重要意义。
本篇论文基本实现了光栅衍射实验仿真各个方面,并由理论验证仿真结果正确性。
但由于光学实验仿真工作涉及程序代码繁杂,加上时间仓促和水平有限,论文中难免有不尽人意之处,有待在后面工作中加以改进。
参考文献
[1]赵凯华,钟锡华.光学[M].北京.北京大学出版社,1984.
[2]张星辉.用振幅矢量法计算光栅衍射光强分布[J].工科物理1998年第8卷第6期.
[3]符运良.MATLAB在光学教学中应用[J].海口:
华南热带农业大学学报,2004,3:
1-2.
[4]曲伟娟.基于Matlab光学实验仿真[J].西安:
西北工业大学学报,2004,21(3):
21-24.
[5] 刘卫国.MATLAB程序设计及应用(第二版)[M].高等教育出版社,2009.
[6]姚启钧.光学教程[M].第4版.北京:
高等教育出版社,2008.
[7] 周忆,梁齐.用MATLAB语言模拟光衍射实验[J].大学物理实验,2001.
[8] 蓝海江.光栅衍射及其特例MATLAB仿真[J].柳州师专学报,2008.06.
[9] 王正林,刘明.精通MATLAB[M].北京:
电子工业出版社,2007.
[10]李德钊,金东星.大学物理学习指导[M].机械工业出版社,2007.05.
致谢
在本文完稿之际,我要衷心感谢我指导老师姚敏教授。
我在论文工作中遇到过很多困难,都是在姚老师悉心指导及不断鼓励下克服。
姚老师知识渊博、经验丰富、治学态度严谨、作风朴实,不仅在学术工作上给于我多方面指导,也教会我许多做人道理。
在此,我要再次向姚老师表示深深谢意。
感谢张泽利、廖忠诚、刘柏顺、谢明付、尹忠甫等同一小组兄弟们,和他们之间进行激烈、有益讨论,是我在此期间所获得宝贵财富。
也感谢同寝室兄弟们无私奉献,为我论文顺利完成提供了极大帮助和促进。
感谢我父亲和母亲,他们默默支持和鼓励,使我安心于学习,顺利完成这篇论文。
感谢我所有家人,他们对我大力支持和鼓励是我不断前进动力源泉。
谢谢!
附录
GUI界面M文件封装主程序代码
functionvarargout=hg(varargin)
%HGM-hg.fig
%HG,byitself,createsanewHGorraisestheexisting
%singleton*.
%
%H=HGreturnsthehandletoanewHGorthehandleto
%theexistingsingleton*.
%
%HG('CALLBACK',hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinHG.Mwiththegiveninputarguments.
%
%HG('Property','Value',...)createsanewHGorraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforehg_OpeningFcngetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtohg_OpeningFcnviavarargin.
%
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone
%instancetorun(singleton)".
%
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Edittheabovetexttomodifytheresponsetohelphg
%LastModifiedbyGUIDEv2.521-May-201201:
34:
22
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('gui_Name',m,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@hg_OpeningFcn,...
'gui_OutputFcn',@hg_OutputFcn,...
'gui_LayoutFcn',[],...
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 光栅 衍射 实验 MATLAB 仿真