張光輝,任 敏
(宿州學(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)
目的 針對(duì)數(shù)值分析課程理論性較強(qiáng),對(duì)具體算法進(jìn)行形象化演示,以提高教學(xué)效果。方法 對(duì)數(shù)值分析課程體系進(jìn)行整合,分析不同知識(shí)模塊,建立基于MATLAB GUI平臺(tái)的實(shí)驗(yàn)教學(xué)系統(tǒng)。結(jié)果 以MATLAB軟件的GUI為平臺(tái),建立實(shí)驗(yàn)教學(xué)系統(tǒng)設(shè)計(jì)的基本原則及目標(biāo),對(duì)課程的插值與擬合、數(shù)值微分/積分、微分方程(組)數(shù)值解,線性方程(組)數(shù)值解,非線性方程(組)數(shù)值解等五大主要相對(duì)獨(dú)立的知識(shí)模塊進(jìn)行綜合設(shè)計(jì)和開(kāi)發(fā)。完成主、子界面之間的切換與鏈接,同一GUI文件不同回調(diào)函數(shù)間的數(shù)據(jù)傳輸?shù)汝P(guān)鍵問(wèn)題,結(jié)合具體實(shí)例演示說(shuō)明GUI設(shè)計(jì)在數(shù)值分析實(shí)驗(yàn)系統(tǒng)中的應(yīng)用?;贛ALAB GUI所建立的數(shù)值分析實(shí)驗(yàn)系統(tǒng)具有良好的交互性和實(shí)用性。結(jié)論 學(xué)生可以借助MATLAB軟件的GUI平臺(tái)求解和實(shí)踐數(shù)值分析的經(jīng)典問(wèn)題和算法,體會(huì)數(shù)學(xué)知識(shí)的實(shí)用性,提高學(xué)生學(xué)習(xí)數(shù)值分析的興趣和效果。
數(shù)值分析實(shí)驗(yàn);教學(xué)系統(tǒng);MATLAB GUI
數(shù)值分析實(shí)驗(yàn)課是數(shù)值分析課程的重要實(shí)踐環(huán)節(jié),在綜合性本科院校的眾多理工科專業(yè)中已廣泛開(kāi)展,該課程有助于提升學(xué)生利用計(jì)算機(jī)求解各種數(shù)學(xué)問(wèn)題的動(dòng)手能力,促進(jìn)大學(xué)生對(duì)數(shù)學(xué)由“學(xué)”到“用”的轉(zhuǎn)變有積極的推動(dòng)作用[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平臺(tái)上的實(shí)現(xiàn)效果;另一方面,可以更深入地研究GUI實(shí)驗(yàn)教學(xué)系統(tǒng)本身,學(xué)習(xí)GUI系統(tǒng)的開(kāi)發(fā)、完善及改進(jìn)[5-8]。
1.1 實(shí)驗(yàn)教學(xué)系統(tǒng)平臺(tái)簡(jiǎn)介
MATLAB GUI即圖形用戶界面,是實(shí)現(xiàn)人機(jī)交互的中介,具有強(qiáng)大的功能,可以完成許多復(fù)雜的程序模塊??丶?UIControl)和菜單(UIMenu)是GUI的兩大基本對(duì)象,利用GUI向?qū)?gòu)建仿真系統(tǒng)界面時(shí),GUI設(shè)計(jì)會(huì)保存為兩個(gè)文件:1個(gè)是m文件,包含控制GUI的回調(diào)函數(shù)代碼;1個(gè)是fig文件,包含對(duì)GUI和GUI控件的描述?;贕UI設(shè)計(jì)過(guò)程中系統(tǒng)生成的m文件框架,用戶通過(guò)自己編寫(xiě)相關(guān)代碼,對(duì)原有結(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ù)值解五大主要相對(duì)獨(dú)立的知識(shí)模塊,借助MATLAB強(qiáng)大的計(jì)算繪圖功能,每個(gè)模塊針對(duì)相關(guān)內(nèi)容進(jìn)行實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)及開(kāi)發(fā)[9-11]。該實(shí)驗(yàn)教學(xué)系統(tǒng)以用戶為主體,使用戶通過(guò)界面上的按鈕和菜單一方面可以完成預(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í)在動(dòng)手實(shí)驗(yàn)操作的過(guò)程中內(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對(duì)象和5個(gè)pushbutton對(duì)象。左邊的Static Text對(duì)象用于提示用戶進(jìn)入該教學(xué)系統(tǒng)的相應(yīng)操作,右邊pushbutton對(duì)象對(duì)應(yīng)于對(duì)該課程不同的知識(shí)模塊的選擇。
1.3 3個(gè)關(guān)鍵問(wèn)題
(1)M文件編寫(xiě)
打開(kāi)M文件編輯器,單擊函數(shù)圖標(biāo),可以看到各個(gè)對(duì)象的回調(diào)函數(shù)、創(chuàng)建函數(shù)或打開(kāi)函數(shù)等對(duì)系統(tǒng)設(shè)計(jì)及開(kāi)發(fā)需要重點(diǎn)操作的選項(xiàng),通過(guò)選擇相應(yīng)選項(xiàng)可跳到相應(yīng)位置進(jìn)行程序設(shè)計(jì)及編輯。根據(jù)不同模塊的不同設(shè)計(jì)目標(biāo),進(jìn)行相應(yīng)的計(jì)算復(fù)雜性好的代碼編寫(xiě),并及時(shí)保存非常關(guān)鍵。
(2)主、子界面之間的切換與鏈接
在相應(yīng)知識(shí)模塊的pushbutton按鈕的Callback函數(shù)用代碼close(gcf);set(0,'CurrentFigure',subgui)來(lái)實(shí)現(xiàn)由主界面GUI向相應(yīng)知識(shí)模塊的子界面GUI的鏈接。主界面上部添加了UIMenu菜單對(duì)象,用來(lái)實(shí)現(xiàn)對(duì)不同知識(shí)模塊的分類、選擇和執(zhí)行。菜單及相關(guān)子菜單的設(shè)計(jì),需要編寫(xiě)回調(diào)函數(shù)以實(shí)現(xiàn)具體的功能。
(3)同一GUI文件不同回調(diào)函數(shù)間的數(shù)據(jù)傳輸
借助handles結(jié)構(gòu),該結(jié)構(gòu)可以存儲(chǔ)GUI對(duì)象信息和一般變量,其基本語(yǔ)法結(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),下面通過(guò)微分方程(組)數(shù)值解及線性方程(組)數(shù)值解子模塊的兩個(gè)實(shí)例,來(lái)介紹整個(gè)實(shí)驗(yàn)教學(xué)系統(tǒng)的實(shí)現(xiàn)。
解:第一步,框架設(shè)計(jì),在布局編輯器中布置控件,使用幾何位置排列工具對(duì)控件的位置進(jìn)行調(diào)整,界面設(shè)計(jì)如圖2所示。
圖3 微分方程數(shù)值解實(shí)驗(yàn)結(jié)果界面 圖4 求解線性方程組實(shí)驗(yàn)界面
該界面主要有2個(gè)按鈕,分別用來(lái)求解方程和結(jié)束程序;2個(gè)坐標(biāo)軸對(duì)象,用于對(duì)微分方程的數(shù)值解進(jìn)行可視化繪圖;4個(gè)可編輯文本框,用來(lái)輸入初始時(shí)間、終止時(shí)間,步長(zhǎng)和初始條件;4個(gè)靜態(tài)文本框,用于標(biāo)識(shí)相應(yīng)控件的提示。
第二步,設(shè)置各個(gè)控件的相關(guān)屬性;建立菜單,用來(lái)求解微分方程和關(guān)閉圖形,其中包括一級(jí)菜單file,在其下設(shè)置兩個(gè)子菜單solve和close,執(zhí)行求解和關(guān)閉圖形功能。
最后,針對(duì)所求解微分方程,在M-FileEditor中編寫(xiě)相關(guān)控件的Callback回調(diào)函數(shù)代碼完成程序中的求解和繪圖等工作。
圖3顯示的是采用初始時(shí)間、終止時(shí)間和初始條件及等步長(zhǎng)的默認(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è)按鈕,分別用來(lái)開(kāi)始答題和結(jié)束程序;12個(gè)靜態(tài)文本框,用于顯示相應(yīng)控件的提示及顯示求解結(jié)果;其次,設(shè)置各個(gè)控件的相關(guān)屬性;建立菜單,用來(lái)求解線性方程組和結(jié)束答題,其中包括一級(jí)菜單file,在其下設(shè)置兩個(gè)子菜單solve和close,執(zhí)行求解和關(guān)閉圖形功能。最后,針對(duì)所求解線性方程組編寫(xiě)代碼完成程序中的求解和顯示求解結(jié)果等工作。
圖5 線性方程組有唯一解結(jié)果界面 圖6 線性方程組無(wú)解結(jié)果界面
圖5、圖6為對(duì)線性方程組有唯一解、無(wú)解實(shí)驗(yàn)實(shí)例所得結(jié)果,由結(jié)果界面可以看出,線性方程組解的情況的判定及結(jié)論可以很清楚地顯示出來(lái)。
基于數(shù)值分析實(shí)驗(yàn)教學(xué)系統(tǒng)的開(kāi)發(fā)及實(shí)踐,是培養(yǎng)和提高學(xué)生從學(xué)數(shù)學(xué)到用數(shù)學(xué)的動(dòng)手能力與創(chuàng)新意識(shí)的需要,學(xué)生可以借助MATLAB軟件的GUI平臺(tái)求解和實(shí)踐數(shù)值分析的經(jīng)典問(wèn)題和算法,親身體會(huì)到數(shù)學(xué)知識(shí)在社會(huì)各領(lǐng)域、各行業(yè)中的應(yīng)用,從而改變對(duì)數(shù)學(xué)的認(rèn)識(shí),培養(yǎng)及開(kāi)發(fā)學(xué)生對(duì)數(shù)學(xué)“學(xué)以致用”的意識(shí)及能力。
[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].中國(guó)大學(xué)教學(xué),2010(11):68-69.
[3]許志剛.模糊綜合評(píng)價(jià)法在高校數(shù)學(xué)實(shí)驗(yàn)教學(xué)質(zhì)量評(píng)價(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)開(kāi)發(fā)[J].實(shí)驗(yàn)室探索與研究,2012,31(09):201-204
[9]萬(wàn)中,韓旭里.?dāng)?shù)值分析課程教學(xué)的新認(rèn)識(shí)及改革實(shí)踐[J].?dāng)?shù)學(xué)教育學(xué)報(bào),2008,17(02):65-67.
[10]曾繁慧,高雷阜.基于MATLAB的“數(shù)值分析”教學(xué)改革研究[J].中國(guó)電子教育,2008,12(01):48-52.
[11]吳勃英,王勇.數(shù)值分析課網(wǎng)絡(luò)實(shí)驗(yàn)平臺(tái)建設(shè)體會(huì)[J].大學(xué)數(shù)學(xué),2007,23(03):13-14.
[12]馮崇嶺,劉升,陳國(guó)龍,等.MATLAB在數(shù)值分析課程教學(xué)與實(shí)驗(yàn)中的應(yīng)用[J].淮北煤炭師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2008,29(01):88-91.
[13]張光輝,任敏.MATLAB平臺(tái)上一些物理現(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
來(lái)稿日期:2016-12-14