王浩然 徐春芳 楊 玲 胡琦珩 葉 子 丁益民
(湖北大學(xué)物理與電子科學(xué)學(xué)院,湖北 武漢 430062)
基于Matlab軟件GUI的機械波模擬
王浩然 徐春芳 楊 玲 胡琦珩 葉 子 丁益民
(湖北大學(xué)物理與電子科學(xué)學(xué)院,湖北 武漢 430062)
本文利用Matlab軟件的GUI相關(guān)控件實現(xiàn)了對橫波、縱波、駐波和波的疊加原理的可視化模擬。在GUI界面進行相關(guān)操作可以形象地觀察演示圖形,通過模擬仿真,能夠完整地演示橫波和縱波在傳播過程中的特點及性質(zhì)。根據(jù)教學(xué)的實際需求,充分運用Matlab的圖形功能、數(shù)值計算功能和符號運算功能可以方便地處理物理問題,不僅可以提高大學(xué)物理的教學(xué)效果,還能有效地提高學(xué)生利用計算機處理物理問題的能力。
Matlab;機械波;仿真;圖形;GUI
機械波是機械運動中比較復(fù)雜的運動形式,也是大學(xué)物理學(xué)習(xí)的重要內(nèi)容。在物理教學(xué)中,由于通過靜態(tài)的波形圖樣無法逼真地觀察機械波運動的過程,因此許多研究學(xué)者通過Matlab軟件對機械波的運動現(xiàn)象進行了模擬研究。例如范書宇利用Matlab編寫了機械波運動過程的動態(tài)演示程序[1];常鍵等對機械橫波傳播中振動質(zhì)點不隨波遷移這一現(xiàn)象進行了模擬[2];羅志榮等利用Matlab對機械波的衍射和干涉現(xiàn)象進行了模擬研究[3];張亞琴等利用Matlab實現(xiàn)了縱駐波的計算機模擬演示[4]。
本文采用物理知識與現(xiàn)代化技術(shù)相結(jié)合的方式,對機械波的課堂教學(xué)作出新的改進,試圖獲得良好的仿真效果。與其他研究學(xué)者編寫的純M文件相比,本文主要運用Matlab軟件的圖形用戶界面(Graphical User Interface,簡稱GUI,用戶可以在操作界面下通過一系列鼠標和鍵盤的操作指揮后臺程序?qū)崿F(xiàn)相關(guān)功能[5-8])的交互性與機械波形成的原理模擬了其形成的過程。相比于純M文件編程,使用Matlab提供的圖形用戶界面編寫相應(yīng)程序的好處在于可以簡單、便捷地設(shè)計出美觀、方便的菜單化和控件式的人機交互界面,利用彈出式菜單的操作方式,將多個程序編寫到一個界面里面,便于在大學(xué)物理教學(xué)中對機械波各種性質(zhì)進行演示。
建立空白的GUI后,我們可以對GUI圖形界面進行布局和編程,通過GUI圖形界面來控制仿真圖形的可視化過程。
1.1 仿真主界面設(shè)計
本仿真軟件GUI的整體布局如圖1所示。
圖1 GUI主界面設(shè)計效果圖
主界面包括4個按鈕(Push Button),“暫?!薄袄^續(xù)”的功能是對運行中的波形進行控制,“復(fù)位”是對坐標軸內(nèi)產(chǎn)生的圖形重置,“退出”是對主界面進行關(guān)閉處理;兩個靜態(tài)文本(Static Text),分別是“注意”和“振幅調(diào)節(jié)”,它們是對使用過程中的相關(guān)操作和控件的作用進行解釋說明;彈出式菜單(Popup Menu),用于選擇不同類別的波形;坐標軸(Axes),用于顯示產(chǎn)生的波形;滾動條(Slider)和編輯框(Edit Text),分別用于調(diào)節(jié)參數(shù)和顯示數(shù)據(jù)。
1.2 各控件功能設(shè)置
下面以“暫停”與“繼續(xù)”兩個按鈕為例,介紹控件功能實現(xiàn)的過程。
在“暫?!卑粹o的Callback回調(diào)函數(shù)下輸入以下代碼:“uiwait(handles.figure1);”按下“暫?!卑粹o,會執(zhí)行回調(diào)函數(shù)下的程序,顯示區(qū)內(nèi)的波形會停止在坐標軸內(nèi),處于等待狀態(tài);同樣在“繼續(xù)”按鈕的回調(diào)函數(shù)下輸入:“uiresume(handles.figure1);”處于等待狀態(tài)的波形,觸發(fā)“繼續(xù)”按鈕后,波形才會繼續(xù)運行。在編寫GUI控件的代碼時,uiwait和uiresume是一對非常有用的函數(shù),缺少任何一個都無法實現(xiàn)相關(guān)功能。
在選擇區(qū)的彈出式菜單(Popup Menu)中選擇相應(yīng)的波形后,顯示區(qū)內(nèi)會生成相應(yīng)的圖形,根據(jù)提示進行仿真,同時利用操作區(qū)內(nèi)的控件來控制仿真的波形,觀察仿真的效果。以下是對各部分仿真的詳細說明。
2.1 橫波的模擬
如圖2(圖中橫坐標和縱坐標均選取波長λ為單位,此說明同圖3)所示,通過獲取的波形圖樣,對振幅為A=0.3λ(A值還可以取更大,但達到一定值時波形會超出坐標軸,影響觀察)的橫波進行模擬。
圖2 振幅A=0.3λ的橫波波形
圖3 振幅A=0.3λ的縱波效果圖
2.2 縱波的模擬
完成對橫波的模擬后,點擊“復(fù)位”按鈕對坐標軸內(nèi)的圖形進行清除,使其回到初始的空白狀態(tài)。選擇“縱波”開始對其進行模擬仿真。
本文選取仿真效果較明顯的縱波波形來進行觀察。如圖3所示,坐標軸內(nèi)上半部分模擬的是彈簧波,觀察其疏密程度,形象地演示了縱波的形成過程。
2.3 駐波的模擬
由于篇幅的限制,本文以駐波為例詳細說明波的模擬過程。
2.3.1 理論部分
駐波是由振幅、頻率和傳播速度都相同的兩列相干波,在同一直線上沿相反方向傳播時疊加而成的一種特殊形式的干涉現(xiàn)象。
y1和y2是兩列分別沿x軸正、負方向傳播的簡諧波,其表達式如下:
這兩列簡諧波形成的合成波為駐波,其表達式如下:
(3)
其振幅為
(4)
2.3.2 仿真部分
對彈出式菜單(PopupMenu)控件(M文件內(nèi)名稱為popupmenu2)中名稱為駐波進行編程。因此我們必須在PopupMenu控件的Callback函數(shù)下完成對駐波的模擬仿真。
具體實現(xiàn)方式的主要代碼如下:
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
運行駐波的仿真代碼后,根據(jù)要求完成相關(guān)操作,得到仿真后的波形。如圖4所示為兩列分別在X軸上相向傳播的相干波。
圖4 兩列相干波
當兩列相干波相遇之后便形成了駐波。如圖5所示為駐波的形成圖樣。
圖5 駐波仿真效果圖
2.4 波的疊加原理模擬
模擬兩列振幅不同的波發(fā)生相向運動時,波的傳播和疊加過程。選擇波的疊加菜單后,兩列波的從開始行進、相遇疊加到分離時的波形圖分別如圖6、7、8所示。
圖6 兩列波相遇前
圖7 兩列波相遇疊加
圖8 兩列波相遇后
利用MatlabGUI功能,可以實現(xiàn)大學(xué)物理實驗現(xiàn)象可視化的控件式操作。將這種方法應(yīng)用于實際教學(xué)時,學(xué)生可以通過菜單式與控件式操作,選擇實驗內(nèi)容、調(diào)節(jié)實驗參數(shù),觀察不同情況下的物理現(xiàn)象,從而加深對物理知識的理解。相比于機械波傳統(tǒng)的演示方法,在課堂上運用Matlab軟件對機械波進行模擬,可以形象地演示各種波的動態(tài)形成過程,從而吸引了學(xué)生的注意力,對課堂教學(xué)效果起到了極大的促進作用。
[1] 范書宇.Matlab在機械振動及機械波教學(xué)中的應(yīng)用[J].中學(xué)物理(高中版),2016,34(3):74-75.FanShuyu.ApplicationofMatlabinmechanicalvibrationandmechanicalwavesteaching[J].ZhongXueWuLi(GaoZhongBan), 2016, 34(3): 74-75. (inChinese)
[2] 常建,祝鳳榮,賈煥玉.基于MatlabGUI的機械波教學(xué)動畫[J].信息技術(shù),2013,11(4):190-192.ChangJian,ZhuFengrong,JiaHuanyu.MechanicalwaveanimationbasedonMatlabGUIinteaching[J].InformationTechnology, 2013, 11(4): 190-192. (inChinese)
[3] 羅志榮,鹿成健,高英俊.機械波的衍射和干涉現(xiàn)象的Matlab數(shù)值模擬[J].大學(xué)物理實驗,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可視化大學(xué)物理學(xué)[M].2版.北京:清華大學(xué)出版社,2015.ZhouQunyi,HouZhaoyang,LiuRangsu.Matlabvisualizationuniversityphysics[M]. 2thed.Beijing:TsinghuaUniversityPress, 2015. (inChinese)
[6] 陳垚光,毛濤濤,王正林,等.精通MatlabGUI設(shè)計[M].北京:電子工業(yè)出版社,2011.ChenYaoguang,MaoTaotao,WangZhenglin,etal.ProficientinmatlabGUIdesign[M].Beijing:ElectronicIndustryPress, 2011.
[7] 羅華飛.MatlabGUI設(shè)計學(xué)習(xí)手記[M].2版.北京:北京航空航天大學(xué)出版社,2011.LuoHuafei.MatlabGUIdesignlearningNotes[M]. 2thed.Beijing:BeijingUniversityofAeronauticsandAstronauticsPress, 2011.
[8] 余勝威,吳婷,羅建橋.MatlabGUI設(shè)計入門與實戰(zhàn)[M].北京:清華大學(xué)出版社,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
湖北省教育科學(xué)規(guī)劃課題(2016ZA090)項目,理論物理國家重點實驗室開放課題(Y3KF321CJ1)資助。
王浩然,男,物理與電子科學(xué)學(xué)院,學(xué)科教學(xué)(物理)專業(yè),2015級研究生,haoran20090125@foxmail.com。
丁益民,男,教授,主要從事物理實驗、計算機仿真與復(fù)雜網(wǎng)絡(luò)的研究,dymhubu@sina.com。
王浩然,徐春芳,楊玲,等. 基于Matlab軟件GUI的機械波模擬[J]. 物理與工程,2017,27(2):83-86.