摘要:利用數學軟件強大的符號計算功能,我們可以改變傳統課堂的教學方式,并收到良好的教學效果。本文通過用Mathematica解數列遞歸關系的例子,來說明Mathematica在組合數學教學中的巨大功效。數學在某種程度上也可以變成一門“實驗科學”。
關鍵詞:組合數學;Mathematica;遞歸關系
中圖分類號:G642.4 文獻標志碼:A 文章編號:1674-9324(2014)23-0114-02
一、引言
組合數學是數學的一個基本分支學科,也是高等院校數學專業的專業必修課,它主要研究離散對象在各種約束條件下的安排和配置問題。近年來計算機技術的飛速發展對我們的生活有了越來越大的影響。計算機計算速度的提升,使我們能夠解決許多以往難以想象的大規模的計算問題。但計算機裸機并不能自己進行運算,它需要相應的程序作為基礎,而這些程序的基礎又往往是一些組合算法,因此組合數學在計算機技術的發展中起著非常重要的作用。反過來,計算機技術特別是數學軟件也可以在組合數學的教學中發揮作用。現在有幾款比較成熟的數學軟件,比如Mathematica,Maple,Matlab,它們都具有強大的數值計算和符號計算功能,可以給我們的數學研究與教學帶來極大的便利。在教學中適當地使用這些軟件,同時教會學生使用這些軟件,可以激發學生的學習熱情,取得更好的教學效果,同時也讓學生有一技之長,對他們日后的工作和學習都是很有幫助的。本文通過用Mathematica求解數列遞歸關系的例子,來說明Mathematica在組合數學教學中的巨大功效。
二、使用Mathematica求解數列遞歸
(一)求解線性齊次遞歸關系
求解線性遞歸關系(齊次或者非齊次)是組合數學的重要內容,我們舉一個例子來說明:an=5an-1-6an-2,n≥2。在傳統的數學教學中,我們采用特征方程的方法:上述遞歸關系的特征方程是x2=5x-6,兩個特征根是x1=2,x2=3,因為兩個特征根不相等,所以數列的通項公式是an=c12n+c23n,其中c1,c2是任意的常數。
在Mathemacita中,求解遞歸關系的命令是RSolve。我們只需要在Mathematica的工作環境中輸入
RSolve[{a[n]==5a[n-1]-6a[n-2]},a[n],n]
(注意我們要用兩個等號==來表示相等,一個等號=表示的是賦值)然后運行(按Shift+Enter),就得到了以下結果
a[n] 2n C[1]+3n C[2]
注意在Mathematica中,兩個任意的常數是用C[1],C[2]來表示的。
如果給定了初值,比如a0=1,a2=4,那么我們只需要改一下命令
RSolve[{a[n]==5a[n-1]-6a[n-2],a[0] 1,a[1] 4},a[n],n]
運行之后就得到
a[n] -2n+2 3n
(二)求解線性非齊次遞歸關系
求解線性非齊次遞歸關系是一個比較困難的問題,主要的難點在于要先找到一個特解。雖然也有現成的規則,但因為非常煩瑣而難以記憶,學生要么記不住這些規則,要么記住了但不明白為什么,實際的掌握效果是很差的。另外,求解一個非齊次的遞歸關系往往需要較長的時間,一般程度的學生大約需要花十分鐘,而且很容易算錯,這導致學生不會做很多的練習,計算的經驗相當缺乏。利用Mathematica,我們可以在短時間內演算大量的例子,并且通過改動遞歸關系中的參數,用直觀的結果讓學生體會解的細微變化,這樣可以給學生留下較為深刻的印象,并激發他們學習的熱情。
1.比如我們要求解an=5an-1-6an-2+(n2+2),我們在Mathematica中輸入
RSolve[{a[n]==5a[n-1]-6a[n-2]+(n^2+2)},a[n],n]
運行后就能得到
a[n] 1/2(17+7n+n2)+2n C[1]+3n C[2]
初始的非齊次項n2+2是n的二次多項式,特解(n2+7n+17)也是n的二次多項式,很符合常理,也符合學生們的預期。
2.如果我們改變一下非齊次項,多一個2的冪次,變為an=5an-1-6an-2+(n2+2)2n,它的解會有什么變化呢?我們在Mathematica中輸入
RSolve[{a[n]==5a[n-1]-6a[n-2]+(n^2+2)2^n},a[n],n]
運行后得到
a[n] -(1/3)2n(288+121n+21n2+2n3)+2n C[1]+3n C[2]
學生在這個時候會很驚訝:為什么特解-(2n3+21n2+121n+288)2n中包含n的三次方呢?比非齊次項中n的次數高了一。
3.我們再改變一下非齊次項,多一個3的冪次,變為an=5an-1-6an-2+(n2+2)3n,解會如何變化呢?我們在Mathematica中輸入
RSolve[{a[n]==5a[n-1]-6a[n-2]+(n^2+2)3^n},a[n],n]
運行后得到
a[n] 1/2 3n(-162+61n-9n2+2n3)+2n C[1]+3n C[2]
特解(2n3-9n2+61n-162)3n中也包含n的三次方,比非齊次項中n的次數高了一。
4.我們繼續改變非齊次項,多一個5的冪次,變為an=5an-1-6an-2+(n2+2)5n,解會如何變化呢?我們在Mathematica中輸入
RSolve[{a[n]==5a[n-1]-6a[n-2]+(n^2+2)5^n},a[n],n]
運行后得到
a[n] 1/54 52+n(104-39n+9n2)+2n C[1]+3n C[2]
特解(9n2-39n+104)5n是的二次多項式,比非齊次項中n的次數一樣。
通過對比上面四個例子,學生們有了一個模糊的認識:如果非齊次項含有特征根的冪次,則特解中n的次數會升高;否者就不會升高。我們的教學目的在很大程度上也就達到了,因為我們成功引起了學生的興趣,并且讓他們自己總結出了規律。
5.我們還可以更進一步,舉一個更復雜的例子:an=3an-2-2an-3+(n2+2)。這是一個三階的線性非齊次遞歸關系,它的特征方程的三個根是1(二重根)和-2。我們在Mathematica中輸入
RSolve[{a[n]==3a[n-2]-2a[n-3]+n^2+2},a[n],n]
運行(并且用命令Simplify[%]簡化之后)得到
a[n]80/243+(79n2)/108+(5n3)/27+n4/36+(-2)n C[1]+C[2]+n(-313/162+C[3])
此時特解中包含n的四次方,比非齊次項中n的次數高了二!為什么會這樣?學生們發出這樣的疑問。這正是一個解釋理論的良機。
筆者在課堂上完整地演示過上面的過程,外加2.5中例子的變形,收到了良好的效果,學生的求知欲確實被激發出來了,并且能夠自己把規律總結出來。
(三)求解非線性的遞歸
Mathematica在求解非線性的遞歸關系方面也有很高的效率。比如我們要求解遞歸關系an=+1,這是一個分式線性變換,它也可以用特征方程的方法求解,但大部分學生難以掌握其要領。在Mathematica中輸入
RSolve[{a[n]==2/a[n-1]+1},a[n],n]
運行后就得到
a[n]-((-1/2)n+4 C[1])/((-1/2)n-2 C[1])
三、總結
借助數學軟件強大的符號計算能力,我們可以在極短的時間內向學生展示很多的例子。通過改變遞歸關系中的參數,學生觀察到了解的性狀的變化,這個反饋是很及時的(只需幾秒鐘),因而學生們可以總結出解對參數的依賴關系。結合了現代技術的教學方式,我們可以不強求理論的完備性,也不必拘泥于“定義——定理——例子”的授課模式,而是以啟發為主,通過例子向學生展示具體的數學,讓學生在觀察中總結規律,把數學變成一門“實驗科學”。在學生有足夠的興趣的時候,我們就可以講解現象背后的原理,或者鼓勵他們自己去探索背后的原理。
四、致謝
本文受到北京市教委2013北京市共建項目人才培養項目:“數學人才培養模式改革”的支持。
參考文獻:
[1]南基洙.組合數學[M],北京:高等教育出版社,2008.
[2]洪維恩.數學運算大師Mathematica 4[M],北京:人民郵電出版社,2002.
作者簡介:張漢雄(1983-),男,浙江海寧人,博士,講師,研究方向:數學物理。
endprint