基于Matlab软件GUI的机械波模拟
2017-07-07王浩然徐春芳胡琦珩丁益民
王浩然 徐春芳 杨 玲 胡琦珩 叶 子 丁益民
(湖北大学物理与电子科学学院,湖北 武汉 430062)
基于Matlab软件GUI的机械波模拟
王浩然 徐春芳 杨 玲 胡琦珩 叶 子 丁益民
(湖北大学物理与电子科学学院,湖北 武汉 430062)
本文利用Matlab软件的GUI相关控件实现了对横波、纵波、驻波和波的叠加原理的可视化模拟。在GUI界面进行相关操作可以形象地观察演示图形,通过模拟仿真,能够完整地演示横波和纵波在传播过程中的特点及性质。根据教学的实际需求,充分运用Matlab的图形功能、数值计算功能和符号运算功能可以方便地处理物理问题,不仅可以提高大学物理的教学效果,还能有效地提高学生利用计算机处理物理问题的能力。
Matlab;机械波;仿真;图形;GUI
机械波是机械运动中比较复杂的运动形式,也是大学物理学习的重要内容。在物理教学中,由于通过静态的波形图样无法逼真地观察机械波运动的过程,因此许多研究学者通过Matlab软件对机械波的运动现象进行了模拟研究。例如范书宇利用Matlab编写了机械波运动过程的动态演示程序[1];常键等对机械横波传播中振动质点不随波迁移这一现象进行了模拟[2];罗志荣等利用Matlab对机械波的衍射和干涉现象进行了模拟研究[3];张亚琴等利用Matlab实现了纵驻波的计算机模拟演示[4]。
本文采用物理知识与现代化技术相结合的方式,对机械波的课堂教学作出新的改进,试图获得良好的仿真效果。与其他研究学者编写的纯M文件相比,本文主要运用Matlab软件的图形用户界面(Graphical User Interface,简称GUI,用户可以在操作界面下通过一系列鼠标和键盘的操作指挥后台程序实现相关功能[5-8])的交互性与机械波形成的原理模拟了其形成的过程。相比于纯M文件编程,使用Matlab提供的图形用户界面编写相应程序的好处在于可以简单、便捷地设计出美观、方便的菜单化和控件式的人机交互界面,利用弹出式菜单的操作方式,将多个程序编写到一个界面里面,便于在大学物理教学中对机械波各种性质进行演示。
1 机械波图形动画的GUI设计
建立空白的GUI后,我们可以对GUI图形界面进行布局和编程,通过GUI图形界面来控制仿真图形的可视化过程。
1.1 仿真主界面设计
本仿真软件GUI的整体布局如图1所示。
图1 GUI主界面设计效果图
主界面包括4个按钮(Push Button),“暂停”“继续”的功能是对运行中的波形进行控制,“复位”是对坐标轴内产生的图形重置,“退出”是对主界面进行关闭处理;两个静态文本(Static Text),分别是“注意”和“振幅调节”,它们是对使用过程中的相关操作和控件的作用进行解释说明;弹出式菜单(Popup Menu),用于选择不同类别的波形;坐标轴(Axes),用于显示产生的波形;滚动条(Slider)和编辑框(Edit Text),分别用于调节参数和显示数据。
1.2 各控件功能设置
下面以“暂停”与“继续”两个按钮为例,介绍控件功能实现的过程。
在“暂停”按钮的Callback回调函数下输入以下代码:“uiwait(handles.figure1);”按下“暂停”按钮,会执行回调函数下的程序,显示区内的波形会停止在坐标轴内,处于等待状态;同样在“继续”按钮的回调函数下输入:“uiresume(handles.figure1);”处于等待状态的波形,触发“继续”按钮后,波形才会继续运行。在编写GUI控件的代码时,uiwait和uiresume是一对非常有用的函数,缺少任何一个都无法实现相关功能。
2 机械波图形模拟仿真
在选择区的弹出式菜单(Popup Menu)中选择相应的波形后,显示区内会生成相应的图形,根据提示进行仿真,同时利用操作区内的控件来控制仿真的波形,观察仿真的效果。以下是对各部分仿真的详细说明。
2.1 横波的模拟
如图2(图中横坐标和纵坐标均选取波长λ为单位,此说明同图3)所示,通过获取的波形图样,对振幅为A=0.3λ(A值还可以取更大,但达到一定值时波形会超出坐标轴,影响观察)的横波进行模拟。
图2 振幅A=0.3λ的横波波形
图3 振幅A=0.3λ的纵波效果图
2.2 纵波的模拟
完成对横波的模拟后,点击“复位”按钮对坐标轴内的图形进行清除,使其回到初始的空白状态。选择“纵波”开始对其进行模拟仿真。
本文选取仿真效果较明显的纵波波形来进行观察。如图3所示,坐标轴内上半部分模拟的是弹簧波,观察其疏密程度,形象地演示了纵波的形成过程。
2.3 驻波的模拟
由于篇幅的限制,本文以驻波为例详细说明波的模拟过程。
2.3.1 理论部分
驻波是由振幅、频率和传播速度都相同的两列相干波,在同一直线上沿相反方向传播时叠加而成的一种特殊形式的干涉现象。
y1和y2是两列分别沿x轴正、负方向传播的简谐波,其表达式如下:
这两列简谐波形成的合成波为驻波,其表达式如下:
(3)
其振幅为
(4)
2.3.2 仿真部分
对弹出式菜单(PopupMenu)控件(M文件内名称为popupmenu2)中名称为驻波进行编程。因此我们必须在PopupMenu控件的Callback函数下完成对驻波的模拟仿真。
具体实现方式的主要代码如下:
A=1;x=50;a=5;b=3;i=1;
t=[0:pi/50:2*pi]/(2*pi)*b;
y1=A*sin(2*pi*(t./b-x/a));
y2=A*sin(2*pi*(t./b+x/a));
plot(t,y1+y2);
b1=[];b2=[];
x10=0;
x20=100;
b=zeros(1,1000);
gridon
axis([-1 101 -2.5 2.5])
pause
while1
y10=y1(i);
y20=y2(i);
b1=[y1(i)b1];
b2=[b2y2(i)];
n1=length(b1);
b11=[b1zeros(1,1000-n1)];
n2=length(b2);
b22=[zeros(1,1000-n2)b2];
b=b11+b22;
plot([0:0.1:100-0.1],b,[x10x20],[b(1)b(1000)],o,LineWidth,2)
fs=16;
xlabel(itx/lambda,FontSize,fs)ylabel(itu/A,FontSize,fs)
title(驻波的形成模拟,FontSize,fs)
gridon
axis([-1 101 -2.5 2.5])
text(1,2.3, ightarrow,FontSize,fs);
text(94,2.3,leftarrow,FontSize,fs);
drawnow
pause(0.02)
i=i+1;
ifi==101
i=1;
end
iflength(b1)==1000
b1=b1(1:999);
b2=b2(2:1000);
end
运行驻波的仿真代码后,根据要求完成相关操作,得到仿真后的波形。如图4所示为两列分别在X轴上相向传播的相干波。
图4 两列相干波
当两列相干波相遇之后便形成了驻波。如图5所示为驻波的形成图样。
图5 驻波仿真效果图
2.4 波的叠加原理模拟
模拟两列振幅不同的波发生相向运动时,波的传播和叠加过程。选择波的叠加菜单后,两列波的从开始行进、相遇叠加到分离时的波形图分别如图6、7、8所示。
图6 两列波相遇前
图7 两列波相遇叠加
图8 两列波相遇后
3 结语
利用MatlabGUI功能,可以实现大学物理实验现象可视化的控件式操作。将这种方法应用于实际教学时,学生可以通过菜单式与控件式操作,选择实验内容、调节实验参数,观察不同情况下的物理现象,从而加深对物理知识的理解。相比于机械波传统的演示方法,在课堂上运用Matlab软件对机械波进行模拟,可以形象地演示各种波的动态形成过程,从而吸引了学生的注意力,对课堂教学效果起到了极大的促进作用。
[1] 范书宇.Matlab在机械振动及机械波教学中的应用[J].中学物理(高中版),2016,34(3):74-75.FanShuyu.ApplicationofMatlabinmechanicalvibrationandmechanicalwavesteaching[J].ZhongXueWuLi(GaoZhongBan), 2016, 34(3): 74-75. (inChinese)
[2] 常建,祝凤荣,贾焕玉.基于MatlabGUI的机械波教学动画[J].信息技术,2013,11(4):190-192.ChangJian,ZhuFengrong,JiaHuanyu.MechanicalwaveanimationbasedonMatlabGUIinteaching[J].InformationTechnology, 2013, 11(4): 190-192. (inChinese)
[3] 罗志荣,鹿成健,高英俊.机械波的衍射和干涉现象的Matlab数值模拟[J].大学物理实验,2014,27(4):91-93.LuoZhirong,LuChengjian,GaoYingjun.NumericalsimulationofdiffractionandinterferenceofmechanicalwaveswithMatlab[J].PhyscialExperimentOfCollege, 2014, 27(4): 91-93. (inChinese)
[4] 张亚琴,董慎行,钱懿华.纵驻波的计算机演示与分析[J].物理与工程,2004,14(3):43-45.ZhangYaqin,DongShenxing,QianYihua.Computerimitationandanalysisofthelongtudinalstandingwave[J].PhysicsandEngineering, 2004, 14(3): 43-45. (inChinese)
[5] 周群益,侯兆阳,刘让苏.Matlab可视化大学物理学[M].2版.北京:清华大学出版社,2015.ZhouQunyi,HouZhaoyang,LiuRangsu.Matlabvisualizationuniversityphysics[M]. 2thed.Beijing:TsinghuaUniversityPress, 2015. (inChinese)
[6] 陈垚光,毛涛涛,王正林,等.精通MatlabGUI设计[M].北京:电子工业出版社,2011.ChenYaoguang,MaoTaotao,WangZhenglin,etal.ProficientinmatlabGUIdesign[M].Beijing:ElectronicIndustryPress, 2011.
[7] 罗华飞.MatlabGUI设计学习手记[M].2版.北京:北京航空航天大学出版社,2011.LuoHuafei.MatlabGUIdesignlearningNotes[M]. 2thed.Beijing:BeijingUniversityofAeronauticsandAstronauticsPress, 2011.
[8] 余胜威,吴婷,罗建桥.MatlabGUI设计入门与实战[M].北京:清华大学出版社,2015.YuShengwei,WuTin,LuoJianqiao.MatlabGUIdesignentryandactualcombat[M]. 2thed.Beijing:TsinghuaUniversityPress, 2015.
MECHANICAL WAVE SIMULATION BASED ON GUI OF MATLAB SOFTWARE
Wang Haoran Xu Chunfang Yang Ling Hu Qiheng Ye Zi Ding Yimin
(Faculty of Physics and Electronics, Hubei University, Wuhan Hubei 430062)
In this paper, GUI controls of Matlab software were used to realize the visual simulations of the transverse waves, longitudinal waves, standing waves, and the principle of waves’ superposition. In the GUI interface, related operations can visualize the presentation graphics. Through simulations, it can fully demonstrate the characteristics and properties of the propagation process of the transverse and longitudinal waves. According to the actual needs of teaching, making full use of the graphical capabilities of Matlab, numerical and symbolic function computing functions, can easily deal with physical problems, which not only can improve the teaching effects of university physics course, but also effectively improve the ability of students to use computer processing the physical problems.
Matlab; mechanical wave; simulation; figure; GUI
2016-04-22
湖北省教育科学规划课题(2016ZA090)项目,理论物理国家重点实验室开放课题(Y3KF321CJ1)资助。
王浩然,男,物理与电子科学学院,学科教学(物理)专业,2015级研究生,haoran20090125@foxmail.com。
丁益民,男,教授,主要从事物理实验、计算机仿真与复杂网络的研究,dymhubu@sina.com。
王浩然,徐春芳,杨玲,等. 基于Matlab软件GUI的机械波模拟[J]. 物理与工程,2017,27(2):83-86.