張光輝,任 敏
(宿州學(xué)院數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,安徽 宿州 234000)
?
基于MATLAB GUI的數(shù)值分析實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)
張光輝,任 敏
(宿州學(xué)院數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,安徽 宿州 234000)
目的 針對數(shù)值分析課程理論性較強(qiáng),對具體算法進(jìn)行形象化演示,以提高教學(xué)效果。方法 對數(shù)值分析課程體系進(jìn)行整合,分析不同知識模塊,建立基于MATLAB GUI平臺的實(shí)驗(yàn)教學(xué)系統(tǒng)。結(jié)果 以MATLAB軟件的GUI為平臺,建立實(shí)驗(yàn)教學(xué)系統(tǒng)設(shè)計(jì)的基本原則及目標(biāo),對課程的插值與擬合、數(shù)值微分/積分、微分方程(組)數(shù)值解,線性方程(組)數(shù)值解,非線性方程(組)數(shù)值解等五大主要相對獨(dú)立的知識模塊進(jìn)行綜合設(shè)計(jì)和開發(fā)。完成主、子界面之間的切換與鏈接,同一GUI文件不同回調(diào)函數(shù)間的數(shù)據(jù)傳輸?shù)汝P(guān)鍵問題,結(jié)合具體實(shí)例演示說明GUI設(shè)計(jì)在數(shù)值分析實(shí)驗(yàn)系統(tǒng)中的應(yīng)用?;贛ALAB GUI所建立的數(shù)值分析實(shí)驗(yàn)系統(tǒng)具有良好的交互性和實(shí)用性。結(jié)論 學(xué)生可以借助MATLAB軟件的GUI平臺求解和實(shí)踐數(shù)值分析的經(jīng)典問題和算法,體會數(shù)學(xué)知識的實(shí)用性,提高學(xué)生學(xué)習(xí)數(shù)值分析的興趣和效果。
數(shù)值分析實(shí)驗(yàn);教學(xué)系統(tǒng);MATLAB GUI
數(shù)值分析實(shí)驗(yàn)課是數(shù)值分析課程的重要實(shí)踐環(huán)節(jié),在綜合性本科院校的眾多理工科專業(yè)中已廣泛開展,該課程有助于提升學(xué)生利用計(jì)算機(jī)求解各種數(shù)學(xué)問題的動手能力,促進(jìn)大學(xué)生對數(shù)學(xué)由“學(xué)”到“用”的轉(zhuǎn)變有積極的推動作用[1-4]。數(shù)值分析相關(guān)算法理論性和實(shí)踐性都較強(qiáng),MATLAB具有強(qiáng)大的數(shù)值計(jì)算及數(shù)據(jù)可視化能力,同時(shí)界面設(shè)計(jì)(MATLAB GUI)技術(shù)可以方便地構(gòu)建友好的人機(jī)交互系統(tǒng)界面,使用戶的操控變得靈活且方便。本文基于MATLAB GUI構(gòu)建數(shù)值分析實(shí)驗(yàn)教學(xué)系統(tǒng)。利用該系統(tǒng),一方面,用戶可以直觀地感受和查看數(shù)值分析各種相關(guān)算法在GUI平臺上的實(shí)現(xiàn)效果;另一方面,可以更深入地研究GUI實(shí)驗(yàn)教學(xué)系統(tǒng)本身,學(xué)習(xí)GUI系統(tǒng)的開發(fā)、完善及改進(jìn)[5-8]。
1.1 實(shí)驗(yàn)教學(xué)系統(tǒng)平臺簡介
MATLAB GUI即圖形用戶界面,是實(shí)現(xiàn)人機(jī)交互的中介,具有強(qiáng)大的功能,可以完成許多復(fù)雜的程序模塊??丶?UIControl)和菜單(UIMenu)是GUI的兩大基本對象,利用GUI向?qū)?gòu)建仿真系統(tǒng)界面時(shí),GUI設(shè)計(jì)會保存為兩個(gè)文件:1個(gè)是m文件,包含控制GUI的回調(diào)函數(shù)代碼;1個(gè)是fig文件,包含對GUI和GUI控件的描述?;贕UI設(shè)計(jì)過程中系統(tǒng)生成的m文件框架,用戶通過自己編寫相關(guān)代碼,對原有結(jié)構(gòu)進(jìn)行完善或改進(jìn),實(shí)現(xiàn)面向用戶特定需要的功能。
1.2 基本設(shè)計(jì)原則及目標(biāo)
數(shù)值分析實(shí)驗(yàn)教學(xué)系統(tǒng)按照數(shù)值分析課程內(nèi)容分為插值與擬合、數(shù)值微/積分、微分方程(組)數(shù)值解、線性方程(組)數(shù)值解、非線性方程(組)數(shù)值解五大主要相對獨(dú)立的知識模塊,借助MATLAB強(qiáng)大的計(jì)算繪圖功能,每個(gè)模塊針對相關(guān)內(nèi)容進(jìn)行實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)及開發(fā)[9-11]。該實(shí)驗(yàn)教學(xué)系統(tǒng)以用戶為主體,使用戶通過界面上的按鈕和菜單一方面可以完成預(yù)定的實(shí)驗(yàn)任務(wù),另外也可以根據(jù)自身興趣和專業(yè)需要,重新設(shè)計(jì)實(shí)驗(yàn)內(nèi)容和修改界面設(shè)計(jì)及實(shí)驗(yàn)參數(shù),完善或改進(jìn)實(shí)驗(yàn),設(shè)計(jì)符合自己特定需要的實(shí)驗(yàn)系統(tǒng)操作界面。另外,借助該系統(tǒng)將數(shù)值分析相應(yīng)的抽象的理論知識在動手實(shí)驗(yàn)操作的過程中內(nèi)化為用戶認(rèn)知結(jié)果,充分體現(xiàn)了系統(tǒng)的實(shí)用性。在MATLAB R2009a環(huán)境下,運(yùn)行GUI,選擇空白模版,單擊OK按鈕,便可進(jìn)入系統(tǒng)進(jìn)行數(shù)值分析實(shí)驗(yàn)教學(xué)系統(tǒng)主界面[12-14]。數(shù)值分析實(shí)驗(yàn)教學(xué)系統(tǒng)的整體主界面效果如圖1所示。
圖1 實(shí)驗(yàn)教學(xué)系統(tǒng)主界面 圖2 微分方程數(shù)值解實(shí)驗(yàn)界面
該界面主要部分包括1個(gè)Static Text對象和5個(gè)pushbutton對象。左邊的Static Text對象用于提示用戶進(jìn)入該教學(xué)系統(tǒng)的相應(yīng)操作,右邊pushbutton對象對應(yīng)于對該課程不同的知識模塊的選擇。
1.3 3個(gè)關(guān)鍵問題
(1)M文件編寫
打開M文件編輯器,單擊函數(shù)圖標(biāo),可以看到各個(gè)對象的回調(diào)函數(shù)、創(chuàng)建函數(shù)或打開函數(shù)等對系統(tǒng)設(shè)計(jì)及開發(fā)需要重點(diǎn)操作的選項(xiàng),通過選擇相應(yīng)選項(xiàng)可跳到相應(yīng)位置進(jìn)行程序設(shè)計(jì)及編輯。根據(jù)不同模塊的不同設(shè)計(jì)目標(biāo),進(jìn)行相應(yīng)的計(jì)算復(fù)雜性好的代碼編寫,并及時(shí)保存非常關(guān)鍵。
(2)主、子界面之間的切換與鏈接
在相應(yīng)知識模塊的pushbutton按鈕的Callback函數(shù)用代碼close(gcf);set(0,'CurrentFigure',subgui)來實(shí)現(xiàn)由主界面GUI向相應(yīng)知識模塊的子界面GUI的鏈接。主界面上部添加了UIMenu菜單對象,用來實(shí)現(xiàn)對不同知識模塊的分類、選擇和執(zhí)行。菜單及相關(guān)子菜單的設(shè)計(jì),需要編寫回調(diào)函數(shù)以實(shí)現(xiàn)具體的功能。
(3)同一GUI文件不同回調(diào)函數(shù)間的數(shù)據(jù)傳輸
借助handles結(jié)構(gòu),該結(jié)構(gòu)可以存儲GUI對象信息和一般變量,其基本語法結(jié)構(gòu)為
Handles.var_name=var_val%將變量值var_val存入Handles結(jié)構(gòu),變量名為var_name
Guidata(hObject,handles)%更新handles結(jié)構(gòu)數(shù)據(jù)
Get_val=Handles.var_name %提取變量名為var_name的變量值var_val以備后續(xù)使用
為了更直觀地展示如何使用MATLAB GUI構(gòu)建數(shù)值分析實(shí)驗(yàn)教學(xué)系統(tǒng),下面通過微分方程(組)數(shù)值解及線性方程(組)數(shù)值解子模塊的兩個(gè)實(shí)例,來介紹整個(gè)實(shí)驗(yàn)教學(xué)系統(tǒng)的實(shí)現(xiàn)。
解:第一步,框架設(shè)計(jì),在布局編輯器中布置控件,使用幾何位置排列工具對控件的位置進(jìn)行調(diào)整,界面設(shè)計(jì)如圖2所示。
圖3 微分方程數(shù)值解實(shí)驗(yàn)結(jié)果界面 圖4 求解線性方程組實(shí)驗(yàn)界面
該界面主要有2個(gè)按鈕,分別用來求解方程和結(jié)束程序;2個(gè)坐標(biāo)軸對象,用于對微分方程的數(shù)值解進(jìn)行可視化繪圖;4個(gè)可編輯文本框,用來輸入初始時(shí)間、終止時(shí)間,步長和初始條件;4個(gè)靜態(tài)文本框,用于標(biāo)識相應(yīng)控件的提示。
第二步,設(shè)置各個(gè)控件的相關(guān)屬性;建立菜單,用來求解微分方程和關(guān)閉圖形,其中包括一級菜單file,在其下設(shè)置兩個(gè)子菜單solve和close,執(zhí)行求解和關(guān)閉圖形功能。
最后,針對所求解微分方程,在M-FileEditor中編寫相關(guān)控件的Callback回調(diào)函數(shù)代碼完成程序中的求解和繪圖等工作。
圖3顯示的是采用初始時(shí)間、終止時(shí)間和初始條件及等步長的默認(rèn)值運(yùn)行程序結(jié)束后,所得的GUI界面。由圖3可知,用Euler法、改進(jìn)的Euler、Runge-kutta法和函數(shù)解析解得求解結(jié)果進(jìn)行了比較,Euler法的精度較差,改進(jìn)的Euler和Runge-kutta法在解的精度上有較大的改進(jìn)。
例2 用Guass消去法求解線性方程組AX=b實(shí)例。
解:首先構(gòu)思框架,布置控件,調(diào)整位置,界面設(shè)計(jì)(圖4)。
首先,該界面布置兩個(gè)按鈕,分別用來開始答題和結(jié)束程序;12個(gè)靜態(tài)文本框,用于顯示相應(yīng)控件的提示及顯示求解結(jié)果;其次,設(shè)置各個(gè)控件的相關(guān)屬性;建立菜單,用來求解線性方程組和結(jié)束答題,其中包括一級菜單file,在其下設(shè)置兩個(gè)子菜單solve和close,執(zhí)行求解和關(guān)閉圖形功能。最后,針對所求解線性方程組編寫代碼完成程序中的求解和顯示求解結(jié)果等工作。
圖5 線性方程組有唯一解結(jié)果界面 圖6 線性方程組無解結(jié)果界面
圖5、圖6為對線性方程組有唯一解、無解實(shí)驗(yàn)實(shí)例所得結(jié)果,由結(jié)果界面可以看出,線性方程組解的情況的判定及結(jié)論可以很清楚地顯示出來。
基于數(shù)值分析實(shí)驗(yàn)教學(xué)系統(tǒng)的開發(fā)及實(shí)踐,是培養(yǎng)和提高學(xué)生從學(xué)數(shù)學(xué)到用數(shù)學(xué)的動手能力與創(chuàng)新意識的需要,學(xué)生可以借助MATLAB軟件的GUI平臺求解和實(shí)踐數(shù)值分析的經(jīng)典問題和算法,親身體會到數(shù)學(xué)知識在社會各領(lǐng)域、各行業(yè)中的應(yīng)用,從而改變對數(shù)學(xué)的認(rèn)識,培養(yǎng)及開發(fā)學(xué)生對數(shù)學(xué)“學(xué)以致用”的意識及能力。
[1]朱偉.將數(shù)學(xué)實(shí)驗(yàn)的思想融入大學(xué)數(shù)學(xué)教學(xué)中的思考[J].重慶郵電大學(xué)學(xué)報(bào)(自然科學(xué)版),2008(S1):96-98.
[2]曹蓓,楊虎.重構(gòu)數(shù)學(xué)實(shí)驗(yàn)體系與大學(xué)生數(shù)學(xué)創(chuàng)新能力培養(yǎng)[J].中國大學(xué)教學(xué),2010(11):68-69.
[3]許志剛.模糊綜合評價(jià)法在高校數(shù)學(xué)實(shí)驗(yàn)教學(xué)質(zhì)量評價(jià)中的應(yīng)用[J].實(shí)驗(yàn)室研究與探索,2009(28):110-112.
[4]黃寬娜,劉徽,李木華.基于信息技術(shù)的高等數(shù)學(xué)實(shí)驗(yàn)教學(xué)模式研究[J].西南師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2011(36):210-214.
[5]朱婷婷,趙林.基于MATLAB的信息隱藏課程的仿真實(shí)驗(yàn)設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2009(26):87-89.
[6]袁海燕.應(yīng)用型人才培養(yǎng)模式下《數(shù)值分析》教學(xué)改革的幾點(diǎn)探討[J].教學(xué)理論,2012,11(03):133-134.
[7]李寶方,邢玉清.基于MATLAB GUI 的數(shù)字圖像仿真系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2014,42(11):2177-2180.
[8]唐世星.基于MATLAB的高等數(shù)學(xué)實(shí)驗(yàn)圖形用戶界面系統(tǒng)開發(fā)[J].實(shí)驗(yàn)室探索與研究,2012,31(09):201-204
[9]萬中,韓旭里.?dāng)?shù)值分析課程教學(xué)的新認(rèn)識及改革實(shí)踐[J].?dāng)?shù)學(xué)教育學(xué)報(bào),2008,17(02):65-67.
[10]曾繁慧,高雷阜.基于MATLAB的“數(shù)值分析”教學(xué)改革研究[J].中國電子教育,2008,12(01):48-52.
[11]吳勃英,王勇.數(shù)值分析課網(wǎng)絡(luò)實(shí)驗(yàn)平臺建設(shè)體會[J].大學(xué)數(shù)學(xué),2007,23(03):13-14.
[12]馮崇嶺,劉升,陳國龍,等.MATLAB在數(shù)值分析課程教學(xué)與實(shí)驗(yàn)中的應(yīng)用[J].淮北煤炭師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2008,29(01):88-91.
[13]張光輝,任敏.MATLAB平臺上一些物理現(xiàn)象的仿真研究[J].德州學(xué)院學(xué)報(bào),2013,29(04):31-33.
[14]張光輝,馮曼,李茹.用Matlab軟件優(yōu)化數(shù)值分析課堂教學(xué)的探討[J].蚌埠學(xué)院學(xué)報(bào),2015,4(03):138-141.
[責(zé)任編輯:毛微曦 英文編輯:劉彥哲]
Design of Numerical Analysis Experimental System Based on MATLAB GUI
ZHANG Guang-hui,REN Min
(College of Mathematics and Statistics,Suzhou University,Suzhou,Anhui 234000,China)
Objective Numerical analysis is a stronger theoretical subject,and to improve teaching effect of specific algorithm needs visual demonstration.Methods The numerical analysis course system is integrated,and an experimental teaching system based on MATLAB GUI is established for different knowledge modules.Results On the platform of MATLAB GUI,the design principles and objectives of experimental teaching system are established.The integrated design and development are fulfilled for the main relatively independent knowledge modules,such as interpolation and fitting,numerical differential/integral,differential equations(group)numerical solution,linear equations(group)numerical solution,and nonlinear equations(group)numerical solution.The key issues,such as the switch and link between the main and sub interface,the data transmission of different callback function of the same GUI,are completed.The application of GUI in teaching of numerical analysis experiment combined with specific examples is illustrated and the system has good interactivity and practicability.Conclusion Students can use MATLAB software GUI platform to solve and practice classical problems and algorithms of numerical analysis,and experience the usefulness of mathematical knowledge.It is helpful to improve students' learning interest and effect of numerical analysis.
numerical analysis experiment;teaching system;MATLAB GUI
宿州學(xué)院教學(xué)研究項(xiàng)目(szxy2016jy25;szxy2015jy09);宿州學(xué)院特色教研室項(xiàng)目(szxytjys201302)
張光輝(1980-),男,河北保定人,講師,碩士研究生,研究方向?yàn)檠芯克惴ㄔO(shè)計(jì)與圖像處理。
TP 273
A
10.3969/j.issn.1673-1492.2017.09.010
來稿日期:2016-12-14