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

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

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