曾慶雨 田婭 劉向虎 徐梅



[摘要]MATLAB是一套高性能的數值計算和可視化軟件。GUI是人機交互的中介。在數學的學習過程中,部分問題是復雜抽象,難于理解的。如線性回歸、常微分方程求解、二元非齊次線性方程組的幾何意義等問題,在學習時是很難去琢磨的。本文試圖利用MATLAB 對常微分方程的求解問題進行GUI仿真,使積分曲線的理論可視化,使理論寓于圖像中,讓數學問題變得更加直觀、易懂。期望對今后的教改有所幫助。
[關鍵詞]MATLAB GUI 可視化仿真 工科數學教學 常微分方程
[中圖分類號]G434 [文獻標識碼]A [文章編號]1009-5349(2016)08-0196-02
運用軟件仿真教學提高效率,是近年來的一個熱門話題,賀玉珍,李萍,王紅梅等結合現代化的教學方式及手段,提出了自己的看法。
MATLAB是美國Mathworks公司推出的一個高性能的科技計算軟件,它集數值計算、符號運算、圖形圖像處理、編程等多種功能于一體,應用非常廣泛。圖形用戶界面(Graphical User Interface,簡稱GUI,又稱圖形用戶接口),是指采用圖形方式顯示的計算機操作用戶界面,主要由組件、圖形窗口、回應三部分構成,可以進行數據可視化編程。
使用MATLAB創建GUI仿真學習中所涉及的數學問題,可以充分提高數學學習的興趣難度,降低學習的難度。采用GUI進行仿真教學,為教學提供一個以實驗探索和發現為特征的交互環境,充分激發學生對數學學習的興趣,調動學生主動學習積極性,也可以達到提高應用計算機來解決數學問題的能力。
一、可視化原理
利用MATLAB GUI軟件將抽象的數學理論進行可視化可分為以下四步:
①分析界面所要求實現的主要功能和明確設計任務;
②在稿紙中繪出界面草圖;
③按繪制的草圖,制作靜態的界面,并對其進行基本檢查;
④使用回調函數,編寫界面上相應控件功能的程序。
二、仿真演示
通過MATLAB的強大功能,采用GUI設計常微分方程解(積分曲線)的可視化仿真界面,直觀地體會積分曲線的概念,掌握常微分方程的求解結果是一個函數,并能直觀地觀察這個函數的性質。
(一)主要功能及設計任務
主要功能:計算一階常微分方程的通解和給定初值的特解,并繪制出特解的圖形,即對應微分方程的一條積分曲線,以便理解積分曲線的概念,直觀地看出積分曲線是一個函數。
設計任務:計算一階常微分方程的特解,仿真積分曲線。
(二)仿真界面草圖構思
①建立4個靜態文本框,用于標注相應控件的提示;
②建立4個動態文本框,2個用于輸入常微分方程和所滿足的初值條件,2個用于顯示常
微分方程的通解與特解;
③建立3個按鈕分別用于常微分方程求解,清空界面和結束程序;
④建立1個坐標軸對象,用于顯示積分曲線;
⑤建立8個面板,用來裝載控件分組;
⑥建立4個單選按鈕,2個用來對坐標軸的網格線進行設置,2個用對坐標軸的邊框進行設置。
(三)制作靜態界面
圖1 界面布局圖
如圖1所示,利用GUIDE創建GUI,在GUI對象設計區中按草圖構思布置控件,使用幾何位置排列工具對控件的位置進行調整。并設置相應控件的相關屬性,使其容易記憶,方便編輯和維護。
①分別將4個靜態文本框的string設置為相應的提示,其中text1,text2,text3,text4的string分別設置為:輸入常微分方程,輸入初始值條件,輸出方程的通解,輸出方程對應初值的解;
②將四個動態文本框的string設置為空,tag不變;
③將3個按鈕的string分別設置為:求解,清空,退出;
④將8個面板的title分別設置為:初始值解的圖像,輸入區,函數顯示區,坐標設置,網格線設置,邊框設置,初始值解的顯示區,操作區;
⑤將網格線設置面板里的2個單選按鈕的string分別設置為:grid on,grid off。將邊框設置面板里的2個單選按鈕的string分別設置為:box on,box off。保存文件名為gui_equation。
(四)仿真程序編寫
編寫代碼完成程序中變量的賦值,輸入/輸出及繪圖等工作,打開gui_equation文件,系統自動生成M文件。
①編寫求解按鈕的回調函數(CallBack)如下:
f1=get(handles.edit1,'string');f2=get(handles.edit3,'string');
h1=dsolve(f1,f2);ezplot(h1)
h3=char(h1);set(handles.edit2,'string',h3);
h=dsolve(f1);h2=char(h);
set(handles.edit4,'string',h2);
②編寫清空按鈕的回調函數(CallBack)如下:
set(handles.edit1,'string',[]);set(handles.edit2,'string',[]);
set(handles.edit3,'string',[]);set(handles.edit4,'string',[]);
Cla; grid off
③編寫退出按鈕的回調函數(CallBack)如下:
ss=questdlg(‘你真的要退出嗎?'‘退出信息窗口!'‘不,我還想看看!'‘是的,我要退出!'‘是的,我要退出!');
switch ss
case‘是的,我要退出!'
delete(handles.figure1);
End
④編寫string設置為grid on單選按鈕的回調函數(CallBack)如下:
c=get(handles.radiobutton3,'value');
if c==1
axes(handles.axes1);grid on
set(handles.radiobutton4,'value',0);
end
⑤編寫string設置為grid off單選按鈕的回調函數(CallBack)如下:
c=get(handles.radiobutton4,'value');
if c==1
axes(handles.axes1);grid off
set(handles.radiobutton3,'value',0);
end
另外兩個單選按鈕按相同方法編寫。
(五)仿真結果
圖2 仿真圖
圖3 退出界面圖
運行程序后在輸入常微分方程的文本框中以Dy=f(t)的形式輸入微分方程,以為例;在輸入初始值條件后面的文本框中以y(a)=b的形式輸入初值,以y(4)=7為例;如圖2,點擊求解按鈕運行仿真界面,求解微分方程在對應初值條件下的解,并繪制解的圖形;點擊清空按鈕清空界面,等待下次求解方程的輸入;點擊退出按鈕產生退出對話框,選擇相應信息退出(如圖3)。
三、總結
本文通過對常微分方程的仿真,使學生充分理解積分曲線的含義,感受常微分方程解的性質。使抽象的、難以想象的問題轉化為可視化的界面,引發學習數學的興趣,調動自主學習的積極性。不僅如此,也讓學生了解到很多抽象數學問題都可以通過GUI編程來實現,有極大的作用。它可以使很多難以想象的數學問題變得具體、形象、直觀。如函數圖形的繪制、空間解析幾何應用、微分與導數、集何的運算與Venn圖的展示等,都可運用MATLAB GUI進行仿真,讓學生更深刻地理解數學中的抽象概念。
【參考文獻】
[1]賀玉珍.計算機軟件類課程體系改革初探[J].現代計算機(專業版),2008,(03):56-57.
[2]李萍.計算機軟件專業主干課程群探索[J].無錫職業技術學院學報,2005,(04):4-5+8.
[3]王紅梅,于德海,孫衛佳.計算機軟件專業課程體系改革的幾點思考[J].長春工業大學學報(高教研究版),2003、(04):63-65.
[4]陳垚光,毛濤濤,王正林等.精通MATLAB GUI設計(第3版)[M].北京:電子工業出版社,2013.
[5]同濟大學數學系編.高等數學(第六版)[M].北京:高等教育出版社,2007.
責任編輯:楊柳