徐元根
中國古代算法思想非常接近于現代算法思想,因此具有一般算法思想的各種教育價值.除此之外,基于中國古代算法思想的特征,其對本民族的數學教育而言,還有著特別的教育價值,即體現數學課程的民族性、培養學生的應用意識、促進學生對現代算法思想的理解等.
一、體現數學課程的民族性
英國課程論專家豪森(G?Howson)指出:“一個民族的歷史和文化,會在數學學習時對本民族的重要性以及數學課程變革的必要性等問題上形成一種傳統觀念,從而影響學校數學課程的發展.[1]”
民族文化的保存與傳遞能夠激發學生的愛國主義熱情、提高民族的自尊心與自信心.因此,數學課程必須結合自己的文化傳統實施,數學課程應該具有本民族文化傳統的特點.
我國數學課程一貫重視宣傳我國的數學成就和中國古今數學家的偉大貢獻.但是這些內容往往被當作具有愛國主義教育意義的歷史知識,而與現代數學知識的交融并不深入.中國古代的算法思想既是中國傳統數學的精髓,同時又具有現代算法思想的所有特征,如果能選擇一些典型的中國古代算法內容作為中學數學的學習內容,必將能使民族文化傳統與現代數學知識具有更好的交融性,因而能更深入地體現我國數學課程的民族性.
比如,“中國剩余定理”便是一個很好的素材.
中國古代算書《孫子算經》中有一著名的問題“物不知數”,原題為:今有物,不知其數,三、三數之,剩二;五、五數之,剩三;七、七數之,剩二.問物幾何?
這實際上是求解一次同余式的問題.后來,南宋大數學家秦九韶在其著作《數書九章》中,給出了這類問題的一般性解法,即“大衍總數術”(也稱孫子定理).該方法傳到西方后,被西方數學家稱為“中國剩余定理”.該定理用現代符號形式敘述就是
N≡r1(玬od玴1)≡r2(玬od玴2)≡…≡r璶(玬od玴璶),其中p1,p2,…,p璶兩兩互質,M=p1p2…p璶,M璱=Mp璱,M璱′M璱=1(玬od玴璱),則N=M′1M1r1+M′2M2r2+…+M′璶M璶r璶(玬od玀).
其中最關鍵的一步是求M′璱,使M′璱M璱=1(玬od玴璱),秦九韶先求出M璱′ 除以p璱的余數G璱(稱為奇數),則上面的問題等價于求M璱′,使G璱M璱′≡1(玬od 玴璱),但此處G璱
列出算陣1G璱
0p璱,然后交替進行如下一、二兩步的操作.(1)右下角除以右上角,余數留在右下角,商與左上角相乘加入左下角;(2)右上角除以右下角,余數留在右上角,商與左下角相乘加入左上角.這樣重復操作,直至右上角為1時,左上角之數即為所求的M′璱值之一.(若右下角先出現1,則右上角除以右下角時,規定余數為1,商為被除數減1.)
例 求最小的正整數N,使N≡2(玬od5)≡3(玬od7)≡5(玬od9).
解:M=315,p1=5,p2=7,p3=9,r1=2,r2=3,r3=5,M1=63,M2=45,M3=35,G1=3,G2=3,G3=8.13
5→13
12→21
12,所以M′1=2;13
7→13
21→51
21,所以,M′2=5;同理求得M′3=8.
N≡2×63×2+5×45×3+8×35×5(玬od315)≡2327(玬od315).
最小的正整數N=2327-315×7=122.
上述“大衍求一術”的實質與西方的“輾轉相除法”相同,但該方法具有更強的程序性,只要用一個簡單的循環語句,就很容易在計算機上進行這種計算.程序性和構造性正是中國古代數學的顯著特征之一,而且解一次同余式組的一般方法“大衍總數術”為秦九韶所首創.將這樣的內容引入中學數學,能使愛國主義、民族精神的培養與數學知識、數學思想方法的學習更好地融合.
二、培養學生的數學應用意識
強調學生數學應用意識的培養是現代數學教育的重要特點.應用是中國古代數學的特征之一,中國古代數學中的算法也明顯地來自于現實、用之于現實.所以中國古算素材也是培養學生數學應用意識的極好素材.
比如中國古代最早的算書《周髀算經》實際上是一本天文著作,系統地記載了周秦以來為適應天文計算的需要而逐步積累起來的算法技術.該書最早敘述的勾股定理,便是以解決實際問題的方式提出的.書中寫道,陳子曰:“若求邪至日者,以日下為勾,日高為股,勾、股各自乘,并而開方除之, 得邪至日.”在這里,勾股定理的一般形式實際上是以天文計算中的一種算法出現的.
《九章算術》則更是以應用問題集的形式編排.全書共分9章,敘述了246道應用問題及它們的解法.內容涉及土地面積計算、比例分配、工程計算等許多應用領域.例如,該書“方程”章,第1題便是有關糧食收成的計算問題:
今有上禾三秉,中禾二秉,下禾一秉,實三十九斗;上禾二秉,中禾三秉,下禾一秉,實三十四斗;上禾一秉,中禾二秉,下禾三秉,實二十六斗.問上、中、下禾實一秉各幾何?
題中“禾”為帶桿的黍米,“秉”指捆,“實”是打下來的糧食.設一秉上、中、下等的禾分別能打下糧食x、y、z斗,則問題就相當于解一個三元一次方程組3x+2y+z=39,
2x+3y+z=34,
z+2y+3z=26.
“方程術”的關鍵算法是“遍乘直除”.即先將三個方程的系數排列成三行(當時的行相當于現在的列),得圖1.
左 中 右
上禾 12 3003
中禾 23 2452
下禾 31 1811
實 26 34 39 39 ?24? 39
圖1圖2
解法步驟為:以右行上禾秉數,即3,遍乘中行各元素,然后逐次減去右行對應各元素,直到中行第一個元素出現0為止,對左行作同樣的變換,得圖2;以中行第一個不等于0的元素,即5,遍乘左行后,逐次減去中行對應的元素直至左行第二個元素為0,并對左行約分,得圖3;然后繼續變換直至圖4.
003?004
052?040
411?400
11? 24 ?3911 ?17 ?37
圖3圖4
于是得上禾一秉實數x=374斗,中禾一秉實數y=174斗,下禾一秉實數z=114斗.該方法正是西方國家一千多年后才出現的“高斯消去法”.《九章算術》中如此先進的方法依然來自于實際問題解決的需要.
三、促進學生對現代算法思想的理解
中國古代數學中的“術”符合現代算法的一些最主要的特征,包含著一般算法的操作過程以及順序、選擇、循環等各種控制結構.因此,讓學生適當地接觸并分析一些中國古代的算法,能很好地促進學生對現代算法思想的理解.
一般認為算法含有兩大要素:一是操作,包括算術運算、邏輯運算、關系運算、函數運算等;二是控制結構,其作用是控制算法各操作的執行順序.算法通常所具備的三種控制結構是順序結構、選擇結構和循環結構.[2].
算法的特征則可歸納為“五性”,即可行性、確定性、有窮性、有效性和普遍性.[3]
中國古代數學的核心就是各種各樣的“術”.這里的“術”就是一種算法,類似于現在所講的數學“公式”,但又與公式不完全相同.比如,一元二次方程ax2+bx+c=0(a≠0)的求根公式x=-b±b2-4ac2a,給出的是當b2-4ac≥0時可以將a、b、c的值代入以求得方程的解.這樣的公式只是靜態地給出了結果,而對于計算過程的每一步具體如何操作,卻并未加以說明.相反,中國古代數學中的“術”則明確地指出了每一步計算的具體操作方式,是一種動態的算法描述.我們以《九章算術》中的“約分術”為例來分析其特征.
約分術曰:可半者半之,不可半者,副置分母子之數,以少減多,更相減損,求其等也,以等數約之.
比如約分98182.先求分子分母的最大公約數.按約分術,“可半者半之”是指如果分子分母都能被2整除,就先取半得4991.“不可半者,副置分母子之數,以少減多”是指如果兩個數中有一個不能被2整除,則將兩數分列,大數減小數(用較少的數從較多的數中減去)得91-49=42.“更相減損,求其等也”是指對減數和所得的差再大數減小數,不停地減直至減數和所得的差相等,即49-42=7、42-7=35、35-7=28、28-7=21、21-7=14、14-7=7得等數為7,該等數便是分子分母的最大公約數.然后“以等數 約之”便得結果49÷791÷7=713.
從以上過程可以明顯看出“術”的操作性特點,且易發現“術”體現了一般算法的“可行性、確定性、有窮性、有效性和普遍性”等特征.而且“可半”“不可半”的選擇明顯是算法中的“選擇結構”,“更相減損”則是算法中的“循環結構”,至于“順序結構”則是不言自明的.
所以中國古代數學的“術”是一種真正意義上的算法,符合現代算法思想的一般特征.讓學生分析這樣的“術”能較好地促進對現代算法思想的理解.
算法的學習需要學生“通過模仿、操作、探索,經歷通過設計程序框圖表達解決問題的過程.在具體問題的解決過程中,理解程序框圖的三種基本邏輯結構:順序、條件分支、循環.”[4]中國古代數學中大量的應用問題,為算法的學習提供了豐富的案例.這些案例及計算過程,深刻地揭示了現代算法思想,是學生模仿、操作、探索的極佳素材.同時這些問題及算法的背景,能夠較好地激發學生的民族情緒,這一點對學生理解現代算法思想也是有著很好的促進作用的.
參考文獻
[1]G?豪森.數學課程發展[M].周克希,趙斌譯 .上海:上海教育出版社,1998.
[2]李亞玲.算法及其學習的意義[J].數學通報,2004.(2).
[3]費泰生.算法及其特性[J].數學通訊,2004(7).
[4]中華人民共和國教育部.普通高中數學課程標準(實驗)[S].北京:人民教育出版社,2003.
[5]李建華.算法及其教育價值[J].數學教育學報,2004,(3).
[6]李文林.數學史教程[M].北京:高等教育出版社,2000.
[7]姚佩英.數學教育中的算法研究.碩士學位論文,2004.
注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”