宋 璐 卫亚博 冯艳平
(1.陕西中医药大学医学技术学院 咸阳 712046)(2.平顶山学院 平顶山 467000)(3.郑州职业技术学院 郑州 450121)
衍射现象是物理光学中重要的现象,它是光的波动性的充分体现[1]。但是衍射的理论知识比较抽象,若能采用一些实验,直观地为学生演示出衍射现象的产生过程与结果,将会使课堂教学变得更加的生动形象。但由于传统的光学实验仪器体积较大,对操作者的要求高,搭建复杂光路和调试实验仪器耗费时间长,所以使用普通光学实验仪器来进行课堂教学难度较大[2]。文献[3~5]介绍了基于Matlab 的衍射仿真方法,改进了传统的演示方式,结果也较为直观形象,但由于需要使用Matlab程序来实现,对操作者要求较高,对于毫无编程经验的学生来说,想要独立操作或者是修改仿真参数,将会是一件难以实现的事情。而文献[6]提出了一种基于GUI的衍射仿真方法,能够将多种衍射现象集成在一个操作界面上,使得操作简单,但不能自行修改仿真参数。
为此,设计了基于GUI 的Matlab 程序,不仅能够实现多种夫琅禾费衍射的仿真集成在一个界面上,还可以任意修改仿真参数,使系统的可操作性大大提高,有助于学生对夫琅禾费衍射现象的理解。
在衍射中,若是光源与衍射屏、衍射屏与接收屏之间的距离为有限远,则称为菲涅尔衍射;若是光源与衍射屏、衍射屏与接收屏之间的距离为无限远,则称为夫琅禾费衍射。借助惠更斯-菲涅耳原理可以解释和描述光束通过各种形状的障碍物时所产生的衍射现象。如果将波面S 上所有面积元在P 点的作用加起来,即可求得波面S 在P 点所产生的合振动[7]:
或写成复数形式:
式(1)称为菲涅尔衍射积分。
通过菲涅尔衍射积分可以得到衍射光波场的光振动特点以及光强分布,但是光强分布的解析解需要通过适当的近似处理,进行衍射积分的计算。对于夫琅和费衍射,通过简单的计算可得到比较精确的衍射光强分布,具体可以参考文献[8]。
Matlab 矩阵实验室(Matrix Laboratory)是美国MathWorks 公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。它以矩阵作为基本数据单位,提供了众多的工具箱,是通用的科学计算、数值仿真及数据可视化的重要工具[9~12]。
这里以夫琅和费单缝衍射为例,利用Matlab的.m 文件编程实现了衍射的仿真,其理论依据可参考文献[13],文中不再赘述。
假设波长为500nm,缝宽为1mm,透镜到屏幕的距离为1m,使用Matlab 仿真的夫琅和费衍射图像如图1所示。
当需要频繁修改程序参数时,使用程序法实现仿真就会变得非常复杂,对使用者的要求提高,使得学生这样的初学者难以独立完成。所以,如果能针对此开发出通用的图形用户交互界面,只需输入一些基本参数,无需复杂的程序设计,就可以实现菲涅尔和夫琅和费衍射的仿真,对于学生来说,将会非常有意义。
图1 夫琅和费单缝衍射仿真结果
基于Matlab GUI 设计的夫琅禾费衍射仿真系统界面如图2 所示,用户可以根据需要选择各种衍射类型,再输入合适的参数,点击执行仿真按钮,即可查看各种衍射结果。
图2 夫琅禾费衍射仿真系统界面
选择矩孔衍射,输入各个参数的具体数值,假设各参数如图2 所示,点击执行仿真按钮,宽度和长度均为0.5mm 的矩孔仿真结果如图3 所示,具体设计可参考文献[14~15]。
图3 矩孔衍射仿真结果(宽度0.5mm,长度0.5 mm)
选择圆孔衍射,输入波长500nm,圆孔半径1mm,焦距为1m,点击执行仿真按钮,圆孔仿真结果如图4所示。
图4 圆孔衍射仿真结果
可以看出,该系统运行稳定,相较于采用程序设计的方法,基于GUI 的仿真系统操作简单,结果直观清晰。
采用Matlab GUI作为仿真平台,设计了夫琅禾费衍射仿真系统。通过对不同情况的实验现象和仿真结果的比较,可以看出该系统运行结果与衍射理论相符,具有操作简单,响应速度快,结果形象直观等特点,使得不具备编程能力的学生也可以独立操作。此外,该系统不受仪器和场地的限制,通过改变一些参数即可获得不同条件下的衍射图样和光强分布曲线,使得光学的课堂教学变得生动形象,对促进学生对光学的学习有积极的意义,实现了大学物理教学的现代化。