摘要:中國古代數學對世界數學發展有著不可磨滅的貢獻。《數書九章》中的秦九韶算法就是中國古代數學的一只奇葩。文章探討了如何理解“秦九韶算法”的原理。
關鍵詞:秦九韶算法;習題辨析;原理
中圖分類號:G633.6 文獻標志碼:B 文章編號:1674-9324(2013)14-0140-02
在數學的發展史上,中國的數學雖有過輝煌,也有過低迷,但一直位居世界的前列。特別是中國古代數學對世界數學發展有著不可磨滅的貢獻。《數書九章》中的秦九韶算法就是中國古代數學的一只奇葩。
本節課就針對“秦九韶算法習題”的解答來理解“秦九韶算法”的原理。
習題一:
利用秦九韶算法計算f(x)=x6+x5+x4+x3+x2+x+1當x=2時的值,需要多少次乘法運算,多少次加法運算?
答案一:共進行了5次乘法運算6次加法運算。
理由一:人教版高中數學必修3第37頁:怎樣求多項式f(x)=x6+x5+x4+x3+x2+x+1當x=5時的值呢?一個自然的做法是把5代入多項式f(x),計算各項的值,然后把它們加起來。這時我們一共做了1+2+3+4=10次乘法運算,5次加法運算。另一種做法是先計算x2的值,然后依次計算x2·x,(x2·x)·x,((x2·x)·x)·x的值,這樣每次都可以利用上一次計算的結果。這時我們一共做了4次乘法運算,5次加法運算。
因此本題的答案為“共進行了5次乘法運算6次加法運算”。
辨析:按此計算確實為5次乘法運算6次加法運算,但問題為“利用秦九韶算法計算”,而課本在此時還未引出“秦九韶算法”,只是說明有一種做法能夠提高運算效率,在此基礎之上才引出《數書九章》中的秦九韶算法。故此答案不太妥當。
理由二:多項式f(x)=x6+x5+x4+x3+x2+x+1可以寫成(((((x+1)x+1)x+1)x+1)x+1
因此“共進行了5次乘法運算6次加法運算”。
辨析:若此寫法的原理在于剛剛所列的第二種做法,則由先前所列理由判斷,答案不妥;若此寫法的原理在于n次多項式f(x)=anxn+an-1xn-1+…+a1x+a0
=(anxn-1+an-1xn-2+…a1)x+a0
=((anxn-2+an-1xn-3+…a2)x+a1)x+a0
=…
=(…(anx+an-1)x+an-2)x+…a1)x+a0
則此處的an=1,應還有一次的乘法運算。
理由三:人教版高中數學必修3配套教師教學用書第34-35頁:秦九韶算法的特點在于把求f(x)=anxn+an-1xn-1+an-2xn-2+……+a1x+a0這樣一個n次多項式的值轉化為求n個一次多項式的值,即把求的值轉化為求遞推公式v0=anvk=vk-1x+an-k(k=1,2,…n)的值。通過這種轉化,把運算的次數由至多(1+n)n/2次乘法運算和n次加法運算,減少為至多n次乘法運算和n次加法運算,大大提高了運算效率。
因此本題的答案為“共進行了5次乘法運算6次加法運算”。
辨析:“通過這種轉化,把運算的次數由至多(1+n)n/2次乘法運算和n次加法運算,減少為至多n次乘法運算和n次加法運算”,理解重心應該為:原來至多(1+n)n/2次乘法運算和n次加法運算“減少為”n次乘法運算和n次加法運算。故此答案不太妥當。
答案二:共進行了6次乘法運算6次加法運算。
理由一:人教版高中數學必修3第37頁:把一個n次多項式f(x)=anxn+an-1xn-1+an-2xn-2+……+a1x+a0改寫成如下形式:
f(x)=anxn+an-1xn-1+an-2xn-2+……+a1x+a0
=(anxn-1+an-1xn-2+…a1)x+a0
=((anxn-2+an-1xn-3+…a2)x+a1)x+a0
=…
=(…((an+x+an-1)x+an-2)x+…+a1)x+a0
因此多項式f(x)=x6+x5+x4+x3+x2+x+1可以寫成(((((1·x+1)x+1)x+1)x+1)x+1)x+1,即“共進行了6次乘法運算6次加法運算”。
辨析:此種寫法是嚴格按公式書寫,當然正確。
理由二:人教版高中數學必修3第38頁:
思考:用秦九韶算法求n次多項式f(x)=anxn+an-1xn-1+
an-2xn-2+……+a1x+a0當x=x0(x0是任意實數)時的值,需要多少次乘法運算,多少次加法運算?
從這里的問答方式來說蘊含著確定的幾次乘法運算幾次加法運算。即共進行了n次乘法運算n次加法運算。因此“共進行了6次乘法運算6次加法運算”。
辨析:作為最權威的教科書,其每一字都是經過仔細推敲的,“需要多少次乘法運算,多少次加法運算?”回答的應是確定的數。
理由三:利用秦九韶算法的另外一種形式:
因此“共進行了6次乘法運算6次加法運算”。
辨析:通過這種表格化進行計算,沒任何懸念。共進行了6次乘法運算6次加法運算。
其實,秦九韶算法是這樣定義的:
把一個n次多項式f(x)=anxn+an-1xn-1+an-2xn-2+……+a1x+a0改寫成如下形式:f(x)=anxn+an-1xn-1+…+a1x+a0
=(anxn-1+an-1xn-2+…a1)x+a0
=((anxn-2+an-1xn-3+…a2)x+a1)x+a0
=…
=(…(anx+an-1)x+an-2)x+…a1)x+a0
求多項式的值時,首先計算最內層括號內一次多項式的值,即,
v1=anx+an-1
然后由內向外逐層計算一次多項式的值,即
v2=v1x+an-2,v3=v2x+an-3,…vn=vn-1x+a0
這樣,求n次多項式f(x)的值就轉化成求n個一次多項式的值。
每一個一次多項式都進行了一次加法運算一次乘法運算,一共有n步,因此共進行了n次乘法運算和n次加法運算。
習題二:
利用秦九韶算法求多項式f(x)=6x7+4x6+3x4+2x+2當x=2時的值,并計算需要多少次乘法運算,多少次加法運算?
由剛才算法辨析可知:共進行了7次乘法運算和7次加法運算。注意到本題中沒有出現x5,x3,x2項,此時在計算時,我們應該將這些項加上,比如含x3這一項可看做0·x3。解答如下:
根據秦九韶算法,把多項式改寫成如下形式:
f(x)=6x7+4x6+0·x5+3x4+0·x3+0·x2+2x+2
=((((((6x+4)x+0)x+3)x+0)x+0)x+2)x+2
按照從內到外的順序,依次計算一次多項式當x=2時的值:
V0=6;v1=6×2+4=16;
V2=16×2+0=32;?搖V3=32×2+3=67;
V4=67×2+0=134;?搖V5=134×2+0=268;
V6=268×2+2=538;?搖V7=538×2+2=1078.
∴當x=2時,多項式的值為1078.共進行了7次乘法運算和7次加法運算。