段 敏
合肥學(xué)院 人工智能與大數(shù)據(jù)學(xué)院,安徽 合肥 230601
計算機(jī)輔助數(shù)學(xué)教學(xué)的核心是課件,尤其是要求有動態(tài)交互式操作的課件,其開發(fā)難度大,這也是教師,特別是數(shù)學(xué)教師很少用課件的原因之一。使用技術(shù)人員而非教學(xué)人員開發(fā)的課件,不利于體現(xiàn)教師個人的教學(xué)風(fēng)格,而結(jié)合自己的教學(xué)藝術(shù)來開發(fā)課件,往往受到自身計算機(jī)技術(shù),特別是程序設(shè)計技術(shù)的制約而達(dá)不到教學(xué)目的。
教師,特別是數(shù)學(xué)教師,上課時不能一遇到畫圖、復(fù)雜計算就強(qiáng)調(diào)原因,少講、不講甚至跳過,這不利于教學(xué)質(zhì)量的提高。要讓教師知道,電子計算機(jī)的出現(xiàn)使數(shù)學(xué)的教學(xué)面貌也煥然一新,計算機(jī)將某些定理精美而玄妙的證明改變?yōu)椤熬?xì)”而“機(jī)械”的程序設(shè)計,把靈活的數(shù)學(xué)技巧改變?yōu)椤按舭濉钡木幊碳夹g(shù)[1]。
就大學(xué)數(shù)學(xué)課程中,無論是高等數(shù)學(xué),還是線性代數(shù)與解析幾何等課程,若沒有計算機(jī)的參與,就缺少了形象直觀的圖形,很多概念很難講清楚?,F(xiàn)在的教學(xué)強(qiáng)調(diào)以學(xué)生為中心,要調(diào)動學(xué)生的積極性,最重要的就是要讓學(xué)生親自動手,自己借助于計算機(jī)去“折騰”數(shù)學(xué),在“折騰”的過程中去學(xué)習(xí),去觀察,去探索,去發(fā)現(xiàn),而不是由老師教他們多少內(nèi)容[2],由此誕生了數(shù)學(xué)實(shí)驗課程的開設(shè)。在數(shù)學(xué)實(shí)驗課程中,若能添上具有交互式操作的圖形用戶界面,必將大大提高教學(xué)質(zhì)量,這就需要有很好的交互式課件來幫助教學(xué)。
如何選擇開發(fā)交互式課件的工具軟件,楊澤忠在其所著《CAMI 導(dǎo)論 計算機(jī)輔助數(shù)學(xué)教學(xué)》一書中提出所使用的數(shù)學(xué)課件編寫工具一般有四類:第一類,用計算機(jī)語言來編寫數(shù)學(xué)課件的方法;第二類,利用專門的課件語言來編寫的方法;第三類,利用課件著作工具編寫的方法;第四類,利用某些數(shù)學(xué)問題解決或發(fā)現(xiàn)學(xué)習(xí)的軟件來編寫數(shù)學(xué)課件的方法[3]。不管選擇哪一類,學(xué)習(xí)難度由第一類依次遞減,影響了數(shù)學(xué)課件的開發(fā)進(jìn)程。
能否有一種軟件能按照數(shù)學(xué)的思維方式開發(fā)課件呢?這種軟件即要能做數(shù)值計算與符號運(yùn)算,也能繪圖并進(jìn)行程序設(shè)計,更重要的是能否在程序代碼中表示想調(diào)節(jié)的參數(shù)與交互式控件架起一個橋梁,使程序或課件的運(yùn)行結(jié)果以圖形用戶界面展示給用戶,以方便習(xí)慣于Windows 的用戶操作。不要去調(diào)節(jié)代碼中的參數(shù),再重新生成課件等繁瑣的操作,而且要開發(fā)周期短,甚至可以在教學(xué)時開發(fā)與交互式演示操作在課堂內(nèi)完成,讓學(xué)生體驗到以過程為中心的教學(xué)方式。
Mathematica 是最符合數(shù)學(xué)教師使用的數(shù)學(xué)軟件,6.0 以后的版本中開發(fā)的Manipulate 函數(shù),架起了代碼與圖形用戶界面交互式操作的橋梁,開發(fā)數(shù)學(xué)交互式課件也變得容易,不管從事高等數(shù)學(xué)、線性代數(shù)、概率論與數(shù)理統(tǒng)計、微分方程、數(shù)值分析等眾多數(shù)學(xué)課程教學(xué),只要教師按照自己的教學(xué)內(nèi)容與教學(xué)方式,簡單的幾行代碼,加上Manipulate 的包裝,一個具有交互式操作的圖形用戶界面便躍然屏幕之上,通過簡單的拖動,加上教師的講解,數(shù)學(xué)思想一點(diǎn)點(diǎn)展現(xiàn)出來,勝過千言萬語的講解。
Manipulate 是Mathematica6.0 以后版本新開發(fā)的用于交互式運(yùn)行函數(shù)和命令的方式,是溝通開源式代碼和圖形交互式操作用戶界面的橋梁與指針。有了它,就能創(chuàng)建一個圖形用戶界面來操縱任意表達(dá)式或圖形,就能像使用Windows 圖形用戶界面一樣方便。
Manipulate 的最一般書寫格式為:
Manipulate[代碼段,控件1,控件2,…,控件n]
實(shí)際寫代碼時宜采用縮進(jìn)格式,以便于閱讀與修改,養(yǎng)成程序設(shè)計的風(fēng)格。
代碼段是程序區(qū),用于完成程序設(shè)計的書寫,可長可短,反映的是算法思想的代碼實(shí)現(xiàn),更能體現(xiàn)程序設(shè)計風(fēng)格的數(shù)學(xué)化,它實(shí)質(zhì)是一種函數(shù)式的編程語言,有著像C 語言或Pascal 一樣的結(jié)構(gòu)化程序設(shè)計方式,教師只要有一種程序設(shè)計語言的基礎(chǔ),掌握Mathematica 的程序設(shè)計方法是很容易的。因為語言千變?nèi)f化,但萬變不離其宗,核心的語句都是4 類:賦值語句、基本運(yùn)算語句、條件語句和循環(huán)語句,作用無非是用來指揮計算機(jī)執(zhí)行4 類基本功能[4]。而選擇Mathematica 書寫代碼,以思維方式數(shù)學(xué)化的深刻內(nèi)涵為引領(lǐng),定能編寫出高質(zhì)量的好程序、好課件。
控件1,控件2,…,控件n 區(qū)域中的控件,借助于Manipulate 映射到交互式圖形用戶界面。簡單地講,Manipulate 函數(shù)就是操控函數(shù)的變量,它能夠調(diào)用各式各樣的控件以用戶想要的方式進(jìn)行操控,最后完成一個或多個變量在其定義域內(nèi)變化而產(chǎn)生的動態(tài)過程[5]。讓教師真正體會到計算機(jī)輔助教學(xué)的核心內(nèi)涵和學(xué)生的探究式與研究性學(xué)習(xí)方式,而且開發(fā)周期短,甚至可以在上課時邊教學(xué),邊開發(fā),學(xué)生能體會到數(shù)學(xué)推理、論證、計算的過程,能深刻理解數(shù)學(xué)思想。
泰勒級數(shù)的理解與深刻的數(shù)學(xué)思想內(nèi)涵,對學(xué)生來說是個難點(diǎn),不管教師如何講解,總是達(dá)不到生動直觀的形象理解。此時課件登場,通過教師的演示與改變參數(shù),一會調(diào)節(jié)展開的階數(shù),一會調(diào)節(jié)在哪一點(diǎn)展開,還可選擇被展開函數(shù),調(diào)節(jié)區(qū)間范圍觀察逼近的效果。此課件甚至可以現(xiàn)場制作,讓學(xué)生特別是師范生知道課件編寫的流程,再加上教師的教學(xué)方法與自己獨(dú)特的教學(xué)風(fēng)格,師生互動,讓學(xué)生深感數(shù)學(xué)的魅力所在。何謂教育數(shù)學(xué),簡言之,教育數(shù)學(xué)的目標(biāo)是把數(shù)學(xué)變?nèi)菀譡6]。
通過泰勒級數(shù)課件的制作,把具有交互式控件操作的圖形用戶界面的課件中所要用到的一些控件代碼的使用方法展示出來。
本文對控件的格式、功能與使用,放在代碼中以注釋的方式敘述,可能比羅列一大堆命令后再去使用可能效果要好。請輸入以下代碼并運(yùn)行之,得到交互式圖1。
g[x_]:=Sin[4*x]*Cos[x]; (*在此輸入系統(tǒng)中沒有定義的函數(shù)表達(dá)式*)
Manipulate[
(*繪出逼近的圖形*)
Plot[Evaluate[{Normal[Series[f[x],{x,x0,n}]],f[x]}],{x,-a,a}],
(*以下顯示標(biāo)題*)
Item["泰勒級數(shù)演示",Alignment->Center],
(*以下是控件區(qū)域,是溝通代碼與圖表用戶界面的橋梁,注釋掉不運(yùn)行,去掉注釋即可運(yùn)行*)
(*下面的控件操作,任意選擇一行注釋掉不運(yùn)行,去掉注釋即可運(yùn)行*)
{{n,3," 請拖動滑桿以顯示展開到幾階"},1,50,1}, (*相當(dāng)于輸入滑桿*)
{{f,Sin,"請選擇函數(shù)"},{Sin,Cos,Tan,Exp,g}},(*以標(biāo)簽選擇輸入*)
(*以下是下拉式菜單選擇輸入*)
(*{{f,Sin,"請選擇函數(shù)"},{Sin,Cos,Tan,Exp,ArcTan},ControlType->PopupMenu},*)
{{x0,0," 請選擇在哪點(diǎn)展開"},ControlType->InputField}, (*以文本框輸入*)
(*以下是圓按鈕選擇輸入*)
{{a,1,"區(qū) 間 范 圍"},{0.5->"[-0.5,0.5]",5->"[-5,5]"},ControlType->RadioButton},TrackedSymbols->All, SaveDefinitions->Manipulate]

圖1 泰勒級數(shù)演示
總而言之,交互式輸入通過調(diào)節(jié)控件類型選項,能夠?qū)崿F(xiàn)類似于windows 的文本框、下拉式列表框、選項卡、滑桿、微調(diào)按鈕等常用的交互式操作;也可設(shè)置初值、標(biāo)簽等一些提示信息;還可通過行列布局命令實(shí)現(xiàn)交互界面的各對象的布局。
通過幫助文件,深入學(xué)習(xí)Manipulate 操作命令中的各種選項的使用方法,仔細(xì)品讀示例與模仿練習(xí),定能提高交互式界面的數(shù)學(xué)課件設(shè)計水平。
在高等數(shù)學(xué)中,有關(guān)無窮小量的概念學(xué)生較難理解,而通過下面的演示課件,見圖2,拖動區(qū)間調(diào)節(jié)滑桿,觀察圖中兩條曲線的貼近程度,等價無窮小的概念的核心思想表現(xiàn)的淋漓盡致,而且能動態(tài)輸入函數(shù),實(shí)現(xiàn)實(shí)時交互,極大地提高了教學(xué)質(zhì)量與效果。
Manipulate[ Plot[{f,g},{x,-a,a}],
Item["以下體會等價無窮小概念",Alignment->Center],
Item [" 請在f [x] 與g [x] 中輸入兩個函數(shù)",Alignment->Left],
Item [" 然后拖動滑塊,觀察兩條曲線",Alignment->Left],
Item["g(x)中還可輸入Tan(x) ArcSin[x] ArcTan[x] Log[1+x] Exp[x]-1 等函數(shù)",Alignment->Left],{{f,x,"f[x]="},ControlType->InputField},
{{g,Sin[x],"g[x]="},ControlType->InputField},
{{a,2,"區(qū)間調(diào)節(jié)"},2,10^(-5),-10^(-6)}
]

圖2 等價無窮小概念理解
限于篇幅,以上只是精選了兩則案例,其實(shí)大學(xué)數(shù)學(xué)課程中的許多概念,都可以編制出交互式操作的課件。數(shù)學(xué)的思想方法以算法的語言方式表現(xiàn)在代碼段,想調(diào)節(jié)哪個參數(shù)對象或?qū)傩?,只要在控件區(qū)設(shè)置好,一個簡單的Shift+回車鍵,具有交互式操作的圖形用戶立即生成。Mathematica 數(shù)學(xué)軟件中的Manipulate 命令,極大地降低了開發(fā)交互式數(shù)學(xué)課件的難度,廣大教師早已把它融入到打造模塊化課程的教學(xué)改革之中,并已取得了良好的教學(xué)效果。