劉 兵(1.承德石油高等??茖W(xué)校,河北承德067000;2.河北省儀器儀表工程技術(shù)研究中心,河北承德067000)
基于MATLAB GUI的極限動態(tài)輔助教學(xué)演示系統(tǒng)的設(shè)計與實現(xiàn)*
劉兵1,2
(1.承德石油高等??茖W(xué)校,河北承德067000;2.河北省儀器儀表工程技術(shù)研究中心,河北承德067000)
文章給出了MATLAB GUI與MATLAB程序動畫的實現(xiàn)方法,依據(jù)《高等數(shù)學(xué)》極限概念的數(shù)學(xué)思想及其教學(xué)現(xiàn)狀,利用MATLAB GUI與程序動畫相結(jié)合,開發(fā)出了針對于極限教學(xué)的動態(tài)輔助教學(xué)演示系統(tǒng)。實踐表明,該系統(tǒng)的使用可激發(fā)學(xué)生的學(xué)習(xí)興趣,提高教學(xué)效果。
MATLAB GUI;程序動畫;極限;無窮小的階
MATLAB軟件[1-4]是當(dāng)下較流行的一款數(shù)值計算型數(shù)學(xué)軟件,該軟件應(yīng)用范圍廣、可擴展性強,特別是其獨有程序設(shè)計方法以及所提供GUI圖形界面編程機制,可以使初學(xué)者能夠輕松地設(shè)計與開發(fā)出一些自己所需的人機交互性良好的應(yīng)用程序。
“極限”是《高等數(shù)學(xué)》課程[5]中所給出的第一個數(shù)學(xué)概念,它貫穿于《高等數(shù)學(xué)》課程的始終,是我們學(xué)習(xí)這門課程的一個最基本的研究工具。在《高等數(shù)學(xué)》中,幾乎所有概念都是利用“極限”去定義的。因此,理解與掌握“極限”這個數(shù)學(xué)概念,對于學(xué)好《高等數(shù)學(xué)》課程是至關(guān)重要的。然而,由于實際教材中對于極限的定義較為抽象(通常采用ε-δ語言定義),致使學(xué)生很難理解,許多學(xué)生也因此對《高等數(shù)學(xué)》望而生畏。為了解決此類教學(xué)問題,我們將MATLAB GUI編程[6-7]與MATLAB動畫設(shè)計方法[8]相結(jié)合,從“極限”這個數(shù)學(xué)概念本身所具有的數(shù)學(xué)含義出發(fā),開發(fā)出了一款輔助教學(xué)演示系統(tǒng)軟件。通過利用該演示系統(tǒng),可將極限的無限逼近思想動態(tài)而直觀地展示給學(xué)生,從而激發(fā)學(xué)生的學(xué)習(xí)興趣,提高教學(xué)效果,使學(xué)生輕松實現(xiàn)對“極限”概念的理解與掌握。
MATLABGUI的實現(xiàn)方式有兩種[7]:一種是利用MATLAB所提供的GUI組件布局開發(fā)工具GUIDE來實現(xiàn),一種是利用組件函數(shù),通過編寫M文件來實現(xiàn)。由于后者的難度較高,且實現(xiàn)起來工作量較大,因此,本文中采用的是前一種實現(xiàn)方式。
MATLAB中創(chuàng)建動畫的基本方法有兩種:一種是在圖形窗口按一定的算法連續(xù)擦除和重繪圖形對象,這種動畫稱之為程序動畫,也是教學(xué)中最為常用的動畫制作方法;一種是先保存一系列圖形,然后按一定的順序像電影一樣播放,這種動畫就是電影動畫。本演示系統(tǒng)在開發(fā)過程中主要采用程序動畫的制作方法。
1.程序動畫的制作方法與實例
MATLAB的程序動畫常常利用getframe函數(shù)或利用drawnow函數(shù)與pause函數(shù)相結(jié)合來創(chuàng)建,其中g(shù)etframe函數(shù)為保存當(dāng)前圖像函數(shù),而drawnow函數(shù)為刷新屏幕函數(shù),pause函數(shù)則為暫停函數(shù)。具體實例如下:for x=-2*pi:0.1:2*pi
以上程序代碼實現(xiàn)了動態(tài)演示內(nèi)正弦函數(shù)曲線圖像的目的。代碼中的“getframe”語句也可以利用drawnow函數(shù)與pause函數(shù)結(jié)合使用來代替。
1.動態(tài)輔助教學(xué)演示系統(tǒng)的演示內(nèi)容
《高等數(shù)學(xué)》課程中,與“極限”相關(guān)的理論教學(xué)內(nèi)容主要有兩個,一個是“極限”的基本概念;一個是“無窮小的階”。這兩個教學(xué)內(nèi)容是“極限”教學(xué)中的難點也是重點,由于數(shù)學(xué)學(xué)科本身的抽象性使得學(xué)生對于這兩個內(nèi)容的理解較差。為了解決此問題,本系統(tǒng)開發(fā)出了針對以上兩個教學(xué)內(nèi)容的相應(yīng)演示程序,從幾何圖像的動態(tài)變化趨勢上來形象的理解以上兩個數(shù)學(xué)概念。
2.動態(tài)輔助教學(xué)演示系統(tǒng)的開發(fā)過程
(1)“極限的概念及其幾何理解”演示程序的開發(fā)
首先,利用MATLAB的GUIDE來新建并開發(fā)該應(yīng)用程序的GUI圖形用戶界面布局(limitgui.fig)。然后,在生成的limitgui.m文件中編寫GUI圖形用戶界面布局中各個組件的回調(diào)函數(shù),從而實現(xiàn)對演示系統(tǒng)各個功能的實現(xiàn)。在所有組件的回調(diào)函數(shù)中,“動畫演示”按鈕的回調(diào)函數(shù)是核心,因為在該回調(diào)函數(shù)中實現(xiàn)了對極限概念在幾何圖像上的動態(tài)演示。該回調(diào)函數(shù)的核心代碼如下:
(2)“無窮小的階及其幾何演示”演示程序的開發(fā)
首先,利用MATLAB的GUIDE來新建并開發(fā)該應(yīng)用程序的GUI圖形用戶界面布局(infinitygui.fig)。然后,在生成的infinity.m文件中編寫GUI圖形用戶界面布局中各個組件的回調(diào)函數(shù),從而實現(xiàn)對演示系統(tǒng)各個功能的實現(xiàn)。在所有組件的回調(diào)函數(shù)中,“動畫演示”按鈕的回調(diào)函數(shù)是核心,因為在該回調(diào)函數(shù)中實現(xiàn)了對無窮小的階的概念在幾何圖像上的動態(tài)演示。該回調(diào)函數(shù)的核心代碼如下:
3.動態(tài)輔助教學(xué)演示系統(tǒng)的使用效果
(1)“極限的概念及其幾何理解”演示程序的使用效果
在MATLAB命令窗口中輸入limitgui然后敲回車得如圖1界面。
圖1 極限的概念及其幾何理解演示程序運行界面
在以上界面中輸入f(x)為任意函數(shù),輸入x->任意值,選擇左側(cè)的極限種類,按“計算”按鈕,即可實現(xiàn)對該趨向方式下f(x)極限的計算。計算后,繼續(xù)點擊“動畫演示”按鈕,可從幾何圖形變化趨勢的角度來實現(xiàn)對該極限的理解。例如:輸入輸入x->為“0”,極限的種類選擇第一類“極限”,按“計算”按鈕,并點擊“動畫演示”按鈕,即可演示極限1的幾何含義,圖2為該極限動態(tài)演示過程中的截圖。
圖2極限lim sinx=1的幾何演示程序運行動態(tài)截圖X->0x
圖2左下角為動態(tài)實時函數(shù)值的變化趨勢,右下角顯示為當(dāng)前設(shè)定的坐標(biāo)跨度與動畫幀數(shù)。其中坐標(biāo)跨度控制的是圖像的顯示范圍,動畫幀數(shù)則控制的是動畫的顯示速度。通過觀察易見,當(dāng)?shù)暮瘮?shù)值會無限趨近于1,所以利用“極限”的定義思想,需要注意的是,當(dāng)x=0時演示系統(tǒng)左下角顯示函數(shù)值為“NAN”即不存在,但此時極限卻是存在的,以此可充分說明函數(shù)在某點處的極限與該點處的函數(shù)值無關(guān)。另外,演示系統(tǒng)還可以變換選擇極限的種類(包括左極限與右極限),并可以通過調(diào)整右下角的坐標(biāo)跨度與動畫幀數(shù)來控制與改變動畫的演示效果,以便更有效的達到最佳演示效果的目的。
(2)“無窮小的階及其幾何演示”演示程序的使用效果
在MATLAB命令窗口中輸入infinitygui然后敲回車得如圖3界面。
圖3 無窮小的階演示程序運行界面截圖
在以上界面中分別輸入兩個同一變化趨勢下的無窮小f1(x)與f2(x),并選擇“左側(cè)比較“或”右側(cè)比較”選項,點擊“計算”按鈕,就可以比較出輸入兩個無窮小之間的階數(shù)關(guān)系。然后按“動畫演示”按鈕,可從函數(shù)幾何圖形變化趨勢的角度來實現(xiàn)對“無窮小的階”概念的理解。例如:f1(x)輸入函數(shù)為“1/x”(即書面語言中的輸入f(x)2函數(shù)為“1/(x^2)”(即書面語言中的,變化過程x->輸入“inf”(即書面語言中的x->∞),易知,在該變化過程中f1(x)與f2(x)均為無窮小。接下來,選擇比較方向為“左側(cè)比較”,然后點擊“計算”按鈕,并單擊“動畫演示”按鈕,即可演示“高階無窮小”的幾何含義,圖4為動態(tài)演示過程中的截圖。
圖4 無窮小的階幾何含義演示程序動態(tài)運行截圖
圖4中左下角為兩個無窮小量f2(x)為f1(x)動態(tài)實時函數(shù)值的變化趨勢,右下角仍為當(dāng)前設(shè)定的坐標(biāo)跨度與動畫幀數(shù)。通過觀察易見,當(dāng)x->∞時f2(x)比f1(x)趨于零的速度更快,所以利用“無窮小的階”的含義可知f2(x)為f1(x)的“高階無窮小”。另外演示系統(tǒng)還可以變換兩個無窮小的比較方向,并且,也可以通過調(diào)整右下角的坐標(biāo)跨度與動畫演示的幀數(shù)來控制與改變動畫的演示效果。
GUI編程機制是MATLAB有別于其它數(shù)學(xué)軟件的亮點之一。將MATLAB GUI與MATLAB程序動畫相結(jié)合并輔助以MATLAB符號工具箱,可以開發(fā)出針對于《高等數(shù)學(xué)》各個教學(xué)環(huán)節(jié)的動態(tài)輔助教學(xué)演示程序。由于此種演示程序采用程序代碼控制,因此與傳統(tǒng)的多媒體輔助教學(xué)工具(例如PowerPoint等)相比,此種方法下開發(fā)的動態(tài)輔助教學(xué)演示程序操控準(zhǔn)確(可顯示演示程序中的實時坐標(biāo)等等),演示內(nèi)容與界面可自行設(shè)計,演示手段豐富,全面、演示與使用效果俱佳。伴隨著MATLAB使用的逐漸普及,此種教學(xué)演示程序必將會有著越來越廣泛地應(yīng)用。
[1]胡曉冬,董辰輝.MATLAB從入門到精通[M].北京:人民郵電出版社,2010.
[2]陳杰.MATLAB寶典[M].北京:電子工業(yè)出版社,2007.
[3]葛哲學(xué).精通MATLAB[M].北京:電子工業(yè)出版社,2008.
[4]張志涌,楊祖櫻.MATLAB教程[M].北京:北京航空航天大學(xué)出版社,2015.
[5]同濟大學(xué)數(shù)學(xué)系.高等數(shù)學(xué)[M].北京:高等教育出版社,2007.
[6]羅華飛.MATLAB GUI設(shè)計學(xué)習(xí)手記[M].北京:北京航空航天大學(xué)出版社,2014.
[7]陳垚光,毛濤等.精通MATLAB GUI設(shè)計[M].北京:電子工業(yè)出版社,2013.
[8]張德豐,趙書梅等.MATLAB圖形與動畫設(shè)計[M].北京:國防工業(yè)出版社,2009.
(編輯:魯利瑞)
TP311
B
1673-8454(2016)18-0081-04
*承德市科學(xué)技術(shù)研究與發(fā)展計劃項目(201422115)。