APP下载

大学物理教学中基于Matlab GUI的驻波动画研究

2021-05-28河,谭

绵阳师范学院学报 2021年5期
关键词:波幅控件波长

黄 河,谭 荣

(武汉工程大学数理学院,湖北武汉 430205)

0 引言

驻波是大学物理波动学基础教学中的重点和难点内容,学生一般不容易直观形象地理解波的叠加和驻波的形成条件[1-2].本文由两列相向传播的平面简谐波的叠加方程出发,借助于非常流行的现代编程语言Matlab来进行图形化用户界面(Graphical User Interface,简称 GUI)[3-5]设计,利用该软件中控件和代码实现对驻波实时动态的展示,并且可以方便地调节物理参数.最后将平台程序封装打包成独立运行的exe程序,可以脱离 Matlab 环境独立运行,方便在大学物理课堂教学中对驻波进行实时和动态的演示.除此之外,在大学物理实际课堂教学中引导学生自行编写Matlab程序可以极大地调动学生的学习热情[6].学生在驻波学习中通过自行编写Matlab程序,设计GUI界面,结合这种既有理论、又有编程实践的学习方式,将大幅度提高对驻波理论的物理本质和现象的理解.

1 驻波的模拟演示

两列相向传播的平面简谐波的数学描述形式如下:

这里假设平面简谐波y2的波幅为单位波幅1,坐标原点处t=0时刻的初位相为φ2.平面简谐波y1相对y2的波幅比为A,坐标原点处t=0时刻的初位相为φ1.第一列简谐波沿x轴正方向传播,第二列简谐波沿x轴负方向传播,两列波的叠加方程为:

1.1 仿真主界面设计

进入MATLAB主界面以后,先用命令“guide”建立空白的GUI,如图1所示.通过对GUI界面添加控件和代码的方式,将驻波方程和相关的物理参数输入到代码里,最终实现可视化GUI控制仿真图形.GUI仿真整体布局如图2所示.

图1 空白GUIFig.1 Blank GUI图2 GUI主界面设计效果图Fig.2 Design effect of GUI main interface

设计的主界面中,含有8个用来标明仿真程序中所使用参量的静态文本框(Static Text).这些参量分别是时间t、两列波的波幅比A、圆频率ω1、圆频率ω2、波长λ1、波长λ2、初相φ1和初相φ2.它们的参数可以分别由滚动条(Slider)和编辑框(Edit Text)来控制, 其中滚动条(Slider)调节的参数可以显示在编辑框(Edit Text)内,编辑框(Edit Text)输入参数时,滚动条(Slider)也会滚动到相应的值.坐标轴(Axes)用于显示产生的波形.

1.2 滚动条(Slider)和编辑框(Edit Text)功能设置

首先右击滚动条(Slider)和编辑框(Edit Text),从弹出的菜单中选择“属性检查器”:设置“max”、“min”的值,控制参数的范围.本文中振幅比A设置为1~5之间可调,圆频率ω1和ω2均设置为1~10之间可调,波长λ1和λ2均设置为1~16之间可调,初相φ1和φ2均设置为0~2π之间可调;设置“Tag”,编辑控件的名字,方便调用.接着通过编辑器 “转至”图标弹出的菜单可以看到各个对象的回调函数、某些对象的创建函数和打开函数等.通过选择相应选项就可以对相应函数进行程序编辑.

下面以时间t 的滚动条(Slider)为例,介绍控件功能实现的过程.在时间t的滚动条(Slider)的”function t_slider1_Callback”回调函数下输入以下代码:

global t;global a;global c1;

global c2;global l1;global l2;

global b1;global b2;global x;

x=0:0.01:8;

input=get(hObject,'value');% 获取当前滑条1的值

t=input;

a=get(handles.A_slider2,'value'); %通过滑条2获取波幅比A

c1=get(handles.w1_slider3,'value');%通过滑条3获取圆频率ω1

c2=get(handles.w2_slider4,'value'); %通过滑条4获取圆频率ω2

l1=get(handles.lamda1_slider5,'value'); %通过滑条5获取波长λ1

l2=get(handles.lamda2_slider6,'value'); %通过滑条6获取波长λ2

b1=get(handles.psi1_slider7,'value');% 通过滑条7获取初相φ1

b2=get(handles.psi2_slider8,'value'); % 通过滑条8获取初相φ2

y=a.*cos(c1*t-2*pi*x/l1+b1)+cos(c2*t+2*pi*x/l2+b2);

y1=a.*cos(c1*t-2*pi*x/l1+b1);

y2=cos(c2*t+2*pi*x/l2+b2);

cla;

plot(x,y,'r','LineWidth',2);

hold on

plot(x,y1,'k-.','LineWidth',2);

hold on

plot(x,y2,'k--','LineWidth',2);

hold on

ylim([-3 3]);

set(handles.t_edit1,'string',num2str(t));% 将时间t的滑条值赋予它的编辑框

guidata(hObject,handles);

值得注意的是,我们需要用到get和set这一对重要的函数,来实现对参量的获取和设置等相关功能.剩下其他参数的滑条和编辑框的功能设置则可以采用Callback 等回调函数来实现.

2 驻波图形模拟仿真

通过调整两列波的波幅比、圆频率、波长、初相,运行各命令,可以直观地得到各个参量的改变对于两列分波及合成波的波动曲线的影响,如图3所示得到3条波动曲线:点划线代表沿x正向传播的波动曲线,虚线代表沿x负向传播的波动曲线,实线代表合成波曲线.最上面时间t的滑条调节按钮可以控制波随时间的动画.只有将两列分波的圆频率、波长、波幅均设为一致,我们才得到了驻波.直观形象地验证驻波形成条件中关于波幅比为1,波长与频率这两个参数对驻波形成的影响,如图4所示.从动态演示的图中可以进一步加深学生对驻波形成具体条件的理解.驻波是两列波相遇时的一种特殊形式的干涉现象.这两列相干波的振幅、振动方向、频率和传播速度都相同,除此之外,两列波传播方向沿一条直线,并且方向相反.任选坐标原点和计时起点时,驻波方程的一般形式如下:

图3 两简谐波和合成波的波动曲线Fig.3 Wave curves of two harmonic and synthetic waves图4 两简谐波和合成驻波曲线Fig.4 Curves of two simple harmonic and synthetic standing wave

上式反映,在一般情况下两列波的初相会对驻波产生影响.图4中两列波的初相分别为φ1=0、φ2=0,则坐标原点x=0处合成驻波为波腹,x=2λ即左端也为波腹.图5中两列波的初相分别为φ1=π、φ2=0,则坐标原点x=0处合成驻波为波节,x=2λ即左端也为波节.我们可以任意调节两列波的初相,可以生动形象演示出两列波的相位差决定了合成驻波的波腹和波节的位置.最后当我们选取两列波初始相位差为π,调节波长,可以直观地演示驻波在弦上的形成,这一过程中发现若弦两端为固定端即波节时,弦长应为半波长整数倍.图6显示了弦长为半波长的情况.

图5 两简谐波和合成驻波曲线Fig.5 Curves of two simple harmonic and synthetic standing wave图6 弦长为半波长的波形Fig.6 Waveform with half wavelength

3 课堂实际教学效果

在本科生的课堂教学当中,当对波动中波的叠加和驻波内容进行讲授时,我们在课堂中引入该动画演示的思路,要求学生用计算机自行编写Matlab程序来解决波动曲线随时间变化的展示问题.在课堂当中以及计算机实际编写、调试程序、GUI界面设计时,给予学生合适的建议,并且让学生调整实际的代码参数,以达到最佳的展示效果.就实际编程情况来看,几乎所有的学生都能够编写出完整的正常运行的Matlab代码,但能够完美的展示物理结果并且能够方便地调节具体物理条件的学生则凤毛麟角,大部分学生需要老师进行一些单独的指导和启发.最重要的是,通过这种既学理论、又学编程实践的教学和学习方式,学生的热情程度相当的高,而且能够大幅度提高学生对波的叠加和驻波理论的物理本质和现象的理解,弥补了以往课堂教学仅作枯燥的理论教学、只给出理论公式和结论的缺点.通过现代化的计算机技术融入课堂教学,让学生推得出公式,想得出结果,看得见现象,真正地爱上物理课程学习.

从课堂实际教学效果和最终考察效果来看,学生在课堂上的学习兴趣被激发出来了,而实际的编程锻炼则让学生把理论学习和仿真实践能力结合了起来,对波动的叠加和驻波的课堂内容、理论知识点的理解也更加的深刻;相比于传统的纯粹的理论知识考核,我们把Matlab仿真实践结果也作为课堂学习效果考核的一部分,让理论和仿真实践相结合,使大学物理的课堂教学真正走向现代化和直观可视化.

4 结语

本文结合驻波理论,利用 Matlab方便的 GUI界面设计及编程,实现了驻波现象的可视化的实时动态演示.实际课堂教学中不仅让学生观察操作控件对参数的改变,以及不同条件下的物理现象,而且引导学生自行编写Matlab程序,设计GUI界面,极大地调动学生的学习热情,从而加深学生对驻波理论的理解.GUI程序编写完毕后,运用“mcc-m zhubo”将M文件“zhubo.m”封装打包成独立运行的exe程序,使之方便在脱离Matlab的环境下运行.通过引入Matlab进行可视化教学,极大地激发学生的学习兴趣,调动学生的学习积极性,提升了大学物理的课堂教学效果.

猜你喜欢

波幅控件波长
基于C++Builder 的电子邮件接收程序设计*
一种波长间隔可调谐的四波长光纤激光器
使用“填表单”微信小程序 统计信息很方便
杯中“日出”
基于.net的用户定义验证控件的应用分析
开不同位置方形洞口波纹钢板剪力墙抗侧性能
躯体感觉诱发电位在慢性酒精中毒性脑病的诊断价值
损伤功能梯度材料的波传播特性研究
A股ETF引伸波幅显著上升
Spreadsheet控件在Delphi数据库系统中的编程与应用