许莉莉 张海霞 郭学谦 黄菊英 黄晓清 严华刚 熊华晖 黄亚奇 郭江贵 刘志成
(首都医科大学生物医学工程学院 北京 100069)
物理学所提供的技术和方法已经广泛应用在了生命科学、医学研究以及临床医疗实践中,因此,物理学是目前医学院校培养医学专业学生理工素质必修的一门基础课程.但医学专业学生普遍对物理学的兴趣不高,如何有效提高医学专业学生对物理的学习兴趣,改善教学效果是摆在我们医学院校物理学教育工作者面前的一个重要问题.医学专业学生学习物理的要求与理工科学生并不相同,医学专业的物理学课程重在对物理概念、物理原理和物理规律的理解,对复杂的计算要求并不高,这就要求我们结合医学专业物理教学的特点制作适合的教学课件[1].本文从波动光学一章的内容出发,结合医学专业的学习要求,介绍了如何利用MATLAB中的图形用户界面(GUI)设计、制作适合的教学演示课件.
MATLAB是由MathWorks公司开发,用于工程计算的高性能语言,其编程代码接近数学推导格式,符合人们的思维习惯,编程极其方便,被称为“草稿纸”式的编程工具.MATLAB的GUI是向别人提供应用程序、进行技术或方法的演示或制作一个可供反复使用且操作简单的专用工具的最好选择之一.
实现一个用户图形界面一般包括两个过程.一个是GUI的组件布局,另一个是GUI组件的编程.另外,用户还必须能够保存并发布自己的GUI.MATLAB提供的GUIDE工具箱能够方便地生成用户需要的组件资源,并保存在一个FIG文件中,同时生成一个包含GUI初始化和发布控制代码的M文件.本文中用到的组件包括uimenu生成的菜单、uicontrol生成的坐标轴、面板、按钮、滑动条和文字显示栏等,生成的FIG文件运行后如图1所示.采用M脚本文件实现控件功能是GUI设计的核心.
图1 组件布局图
在医用物理学教学大纲中,波动光学是重要的一章,这一章的内容分为干涉、衍射和偏振三部分.其中偏振与前两部分的联系并不紧密,因此在本文中不再讨论.本校医学专业本科生使用的课本是高等教育出版社出版的《医用物理学》[2].课本中对干涉、衍射讨论的重点放在了光屏上出现明暗条纹的位置,对光强的分布则只给出结果.本文提供的课件采取类似的做法,在每种干涉或衍射图样的旁边直接附上该类图样竖直中心线上的光强分布结果.
在不透光的屏上,刻有多条等间距、等宽度的透光狭缝形成多缝.与狭缝平行的线光源经透镜后成为平行光入射到狭缝上.在多缝后方放置一个透镜,在该透镜的焦平面上可观察到多缝的夫琅禾费衍射条纹.用平行光照射多缝时,每个狭缝本身都要产生自身的单缝衍射,每个单缝等宽则每个单缝的衍射条纹在透镜焦平面上完全重叠,其光强分布为所有单缝衍射的干涉叠加.屏上任意一点的光强为[3]
在本文中,N=6,初始设定的入射光波长为632 nm,狭缝宽度为0.01 mm,狭缝间距为0.1 mm.在M脚本文件中,直接利用6个不同位置单缝衍射叠加而成,其核心程序如下:
a=0.01;
d=0.1
lambda=0.632e-3;
k=2*pi/lambda;
z=1.0e3;
xmax=3*1.22*lambda/2/R*z;
x=linspace(-xmax,xmax,200);
y=x;
[x,y]=meshgrid(x,y);
lambda/z;
lambda/z;
……
IF=IF1+ IF2+IF3+IF4+IF5+IF6
运行结果如图2(a)所示(入射波长和单缝宽度的变化可通过滑动条的滑动实现,且在滑动条后有相应数值显示).随着狭缝宽度的增加,衍射条纹产生变化,如图2(b)所示.
(a)狭缝宽度小时多缝衍射结果
(b)狭缝宽度变大时多缝衍射结果
(a)狭缝宽度大时的双缝干涉效果
(b)狭缝宽度变小时双缝衍射结果
在多缝衍射的讨论中,N若取2,则变为杨氏双缝干涉的情况,实际的干涉图样仍然是干涉和衍射的双重效应,是等振幅双光束干涉受单缝衍射调制的结果,如图3(a)所示.在实际的教学中,先讲干涉,后讲衍射,因此在讲杨氏双缝干涉实验时,我们常常先回避衍射的效果.这种回避必须满足一定的条件,如图3(b)所示,即当狭缝的宽度(0.001 mm)远小于波长(632 nm)时,在单缝衍射的中央明条纹中,就已经有很高级次的干涉条纹,若将该区域放大观察,这些干涉条纹相互之间等距排列,相邻条纹之间的强度相差也不大,可以近似看成等振幅双光束干涉的结果.
单缝宽度和入射光波长的改变将显著影响条纹的分布.在本文提供的图形用户界面上,学生可以通过滑动条的滑动适当改变单缝的宽度和入射光的波长,通过观察条纹的形状及光强分布,更好地掌握干涉和衍射的本质.
在《医用物理学》一书中,衍射部分的内容还包括了圆孔的衍射,但这部分内容不作为重点,是学生可以自己学习的部分.在本文提供的图形用户界面上,除圆孔外,还设计了矩形孔的夫琅禾费衍射.学生可以在一定范围内改变光阑的尺寸和入射光的波长,观察衍射的结果.
如图4(a)所示,其核心程序如下:
k=2*pi/lambda;
z=1.0e3;
xmax=8*1.22*lambda/2/R*z;
x=linspace(-xmax,xmax,200);
y=x;
[x,y]=meshgrid(x,y);
k=2*pi/lambda;
z=1.0e3;
r=linspace(0,2*1.22*lambda/2/R*z,201);
eta=linspace(0,2*pi,201);
[rho,theta]=meshgrid(r,eta);
[x,y]=pol2cart(theta,rho);
Bess=besselj(1,rho*R*k/z);
为讨论光强分布方便,图形用户界面上画出的是沿光屏竖直中线的光强分布,因此该曲线分布与单缝衍射的光强分布曲线相同,如图4(b).在矩形孔衍射中,光强分布曲线也是同样的处理方法.
(a)矩形孔衍射效果
(b)圆孔衍射效果
本文提供的关于波动光学演示实验的教学软件只是在教学中的一个尝试,课件中提供的可修改的也只是波长和光阑的尺寸这两个最基本的参数.在以后的教学实践中,我们还将尝试增加更多的可变参数,以增加学生自主学习的兴趣.
参考文献
1 张海霞,王益勇,许莉莉,王春燕,刘志成. 利用MATLAB制作适合医学生的物理图形输出课件.中国医学物理学杂志,2010,27(1):1 687~1 690
2 喀蔚波. 医用物理学. 北京:高等教育出版社,2008.214,220~224
3 石顺祥,张海兴,刘劲松. 物理光学与应用光学. 西安:西安电子科技大学出版社,2000.139~143