周星辰
(1.曲阜師范大學網絡信息中心,山東 曲阜 273165;2.桂林電子科技大學廣西密碼學與信息安全重點實驗室,廣西 桂林 541004)
數學軟件功能強大,簡單易學,在教學和科研中有重要的作用。目前,相關數學軟件方面的研究論文大多為探究它們在大學數學教學中的輔助作用,而中學數學教學中涉及到數學軟件的論文較少。例如,楊婷婷分析和研究了基礎數學軟件應用于高中數學教學的優勢[1]。袁子絢以“圖形與幾何”部分為例探討了動態數學軟件如何輔助初中數學教學[2]。楊振平分析了MATLAB等數學軟件在可視化方面的優勢,讓學生直觀感受并深刻理解抽象的數學概念和性質[3]。在建構主義學習理論的支持下,李一甲利用MATLAB軟件的優勢設計了高中概率與統計課程的教學案例[4]。
目前,主要的數學軟件有MATLAB、Mathematica、Maple和Magma。但是這些數學軟件都是商業軟件并且價格比較昂貴,許多學校的經濟都承受不起。因此,本文引入一款功能強大且免費的數學軟件來輔助高中數學教學。SageMath是一個免費且開源的數學軟件,可用于代數、幾何、數論、密碼學、數值計算以及其他相關領域的教學和科研。SageMath的總體目標是成為一個實用的、高效的、免費的、開源的數學軟件以代替MATLAB、Mathematica、Maple和Magma。為了方便,SageMath還提供了易于使用的網頁版工作界面SageMathCell 和CoCalc。用戶只需要了解基本的程序語言就可以線上使用SageMath的計算、編程、繪圖和動畫功能。
本文以導數的概念及其意義的課程內容為例,探討如何利用開源數學軟件SageMath輔助高中數學教學,進而提高學生愛數學,做數學的主觀能動性,改善課堂教學質量。
在高中數學人教A版選擇性必修二教材中,第五章的內容是一元函數的導數及其應用,該章內容挖掘了導數的本質,通過物理運動及幾何切線兩方面展現了數學無限趨近的思想。但是,高中學生的認知水平難以理解“無限逼近”的數學思想,這是導數教學的障礙和難點。另外,高中學生的邏輯思維能力也難以理解教學內容中涉及的 “以直代曲、數形結合”等思想。這些都是導數教學中遇到的瓶頸。
為了解決上述教學難點,教師可以利用數學軟件強大的編程、計算、繪圖和動畫功能進行“數學實驗”,引導學生觀察和分析實驗結果,從而揭示抽象知識的形成過程,發現數學問題的規律和本質。例如,課堂上對高臺跳水問題進行討論時,可以利用數學軟件計算運動數據,并用該數據展示時間間隔趨近于0時平均速度逼近瞬時速度的數學過程。對導數的幾何意義進行分析探討時,利用數學軟件的程序編寫及動畫演示功能為學生直觀演示割線變切線這一數學動態過程,讓他們深入掌握“數形結合”及“無限逼近”等思想。對函數性質進行深入研究時,利用數學軟件的計算繪圖功能解出駐點并繪制函數圖象,可以讓函數圖形化,由抽象變形象,對于函數的性質也能簡單直觀地反映出來。對曲邊梯形的面積如何計算進行分析探討時,利用數學軟件的動畫功能演示曲邊梯形面積如何計算這一動態步驟,再通過數學軟件的程序功能展示如何計算曲邊梯形面積近似值這一逼近的全過程。其中采用多種近似代替方法編寫程序計算出所有小矩形的面積之和并逐步改變等分數,讓學生直觀感受,抽象思維轉變為形象思維,更能深入理解這一過程。另外,導數教學中運算量比較大這一問題也能通過數學軟件強大的數值計算功能得以解決。例如,計算平均變化率和定積分等。從而可以避免復雜的運算,節省課堂時間,提高教學效率。總之,利用數學軟件輔助“一元函數的導數及其應用”的教學可以解決傳統教學方式不能很好呈現的一些教學難題。
本節以教科書中第五章第一節內容“導數的概念及其意義”為例,簡單講述如何利用開源數學軟件SageMath輔助課程教學。如下圖所示,首先利用該數學軟件的計算功能演示時間間隔趨近于0時平均速度無限逼近瞬時速度這一動態過程。其次,利用SageMath的動畫功能直觀演示動態變化動畫:“割線變切線”,讓“無限逼近”的抽象思想轉化為形象生動的幾何圖形變換。最后,運用該軟件的計算和繪圖功能引出導函數的概念。

圖1 案例設計與分析的總體方案
教師課堂展示一節運動員進行高空跳水的動畫影片。
【教師提問】在高臺跳水運動中,運動員相距跳水水面的高度設定為h(單位:m),運動員起跳后的時間設定為t(單位:s),二者存在函數關系h(t)=-4.9t2+4.8t+11。設定跳水運動員在起跳后的某一時刻為t0,那大家討論下t0這一時刻運動員的瞬時速度是多少?
【學生回答】跳水運動員在t0時刻的瞬時速度想求解,關鍵要探求t=t0附近平均速度如何變化。
先求出t0時刻到t0+Δt的平均速度

【教師提問】當t0=2s時,瞬時速度怎么求呢?
【師生活動】教師利用基于SageMath的數學軟件平臺進行數學實驗操作,向學生演示數據的動態變化情況。從2s到(2+Δt)s這段時間內平均速度為

(1)當Δt<0時,取Δt的初始值為-0.1,令Δt→0,編寫SageMath代碼如下:
x=-0.1
for i in range(6) :
f=-4.9*x-14.8
print(‘當 *t={0:.6f} 時, 平均速度為 {1:.6f}’.format(x, f))
x=x*0.1x
運行結果為:
當Δt=-0.100000 時,平均速度為 -14.310000
當Δt=-0.010000 時,平均速度為 -14.751000
當Δt=-0.001000 時,平均速度為 -14.795100
當Δt=-0.000100 時,平均速度為 -14.799510
當Δt=-0.000010時,平均速度為 -14.799951
當Δt=-0.000001時,平均速度為 -14.799995
(2)當Δt>0時,取Δt初始值為0.1,令Δt→0,編寫SageMath代碼如下:
x=0.1
for i in range(6) :
f=-4.9*x-14.8
print(‘當 *t={0:.6f} 時, 平均速度為 {1:.6f}’.format(x, f))
x=x*0.1
運行結果為:
當Δt=0.100000 時,平均速度為 -15.290000
當Δt=0.010000 時,平均速度為 -14.849000
當Δt=0.001000 時,平均速度為 -14.804900
當Δt=0.000100 時,平均速度為 -14.800490
當Δt=0.000010時,平均速度為 -14.800049
當Δt=0.000001時,平均速度為 -14.800005
通過以上程序數據的觀測可得知,令Δt由正負兩方向朝0逐漸趨近時,平均速度都逼近常量-14.8。則t=2s的瞬時速度可由這個常量來表示,計算公式展示為:

【設計目的】目前大多數傳統課堂及教材中,高臺跳水涉及的無限趨近過程沒有進行信息技術的闡述,而是直接給出的計算結果。傳統教學方式難以體現無限趨近過程,學生難以理解。除此之外,課程內容涉及很多重復的運算,如果用計算器的話,需要花費大量時間。而使用SageMath軟件,只需編寫幾行代碼和一個循環語句就能讓學生直觀感受無限趨近這一思想的形成過程,進而培養學生的學習興趣。通過數學實驗,學生能夠從實驗數據中感知逼近思想,更深刻地理解瞬時速度的意義。
【教師提問】上面已經計算出t=2s時的瞬時速度,那么在任一時刻t0的瞬時速度怎么表述呢?
【學生活動】用t0代替2s,通過類比得到某時刻t0的瞬時速度的計算公式:

【教師提問】通過前面問題的歸納分析,是否找出什么規律或定義呢?
【師生討論】依據運動員高臺跳水這一課堂案例,學生分組討論、找出規律、概括定義。
定義:在x=x0處函數f(x)的瞬時變化率是

稱為函數y=f(x)在x=x0處的導數,記作f′(x0)或

【設計目的】帶領學生將具體的數學動態案例歸納出導數的概念,增進特殊到一般這一數學思想的領悟與體會。
【教師提問】大家想知道導數f′(0x)的幾何意義嗎?以f(x)=x2,x0=0.5為例,運行如下SageMath代碼可以得到割線變切線過程的動畫。
x=SR.var(“x”)
f=plot(x^2, (-0.5,1.8), color=’blue’,legend_label=’$x^2$’)
f +=point( (0.5,0.25), color=’red’,pointsize=20)
f +=text(‘A (0.5,0.25)’, (0.7,0.15), color=’red’)
g=[(f+plot(k*(x-0.5)+0.25, (-0.2,1.5),color=’green’, ymin=-0.5, ymax=2))
for k in [1.8..1.2,step=-0.15]]
g.append(f+plot((x-0.5)+0.25, (-0.2,1.5),color=’red’, ymin=-0.5, ymax=2))
a=animate(g)
a.show(delay=100, iterations=3)
教師課堂展示動畫,學生能清晰地觀察到割線變切線的動態趨近過程。如圖2所示,藍線曲線為y=f(x)的圖像(教師隨堂更改曲線的函數式),綠線直線是經過動點和定點A(0.5, 0.25) 的割線。當動點緩慢地趨近定點A時,經過定點A及動點的割線也在緩慢地靠近定點A處的切線(紅色)。

圖2 割線和切線
【教師提問】同學們認真觀察一下割線的斜率有著怎樣的變化?
【學生議論】隨著動點逐漸接近定點,割線逐漸與切線重合,從而推出割線斜率Δx逐步逼近切線斜率k。因此,函數f(x)在x=x0處的導數的幾何意義就是過這一點的切線的斜率k,即。
【設計目的】教師通過數學軟件SageMath平臺展示程序動畫,讓數學“無限趨近”思想的感知過程能清晰形象生動地呈現在課堂上,激發學生導數學習的積極性。
教師帶領學生對運動員高臺跳水問題進行幾何角度的分析。根據函數h(t)=-4.9t2+4.8t+11,教師利用SageMath平臺的編程繪圖功能將運動員高臺跳水的動態過程繪制出運動軌跡曲線。則t時刻曲線上此點的切線斜率就是它在這一時刻的瞬時速度。
根據SageMath平臺數學實驗結果可知曉,x是一個具體值時f′(x) 也是一個具體確定值。然而,x的數值發生變化時f′(x)的值也相應變化。因此f′ (x)是x的函數,稱之為f(x)的導函數,簡稱為導數,有時也記作y′。
在數學軟件SageMath平臺的輔助下,本文采用課堂上進行數學實驗的模式,以問題驅動為前提,讓學生進行程序試驗探索、觀察、歸納、總結。借助SageMath平臺的編程、計算、繪圖和動畫等強大功能,突破傳統導數教學所不能解決的教學障礙難點,將抽象的數學思想變成有趣的、形象的、動態的數學動畫,或讓學生親手設計數學實驗、編寫程序,自主探索,發現數學規律,歸納數學思想。以此增強高中學生數學學習的抽象思維能力及愛數學做數學的主觀能動性,進而提高課堂教學質量。