中國通史(第八卷) · 第二十二章 數學

宋元時期數學是中國古代數學發展的高峰,其成就和總體水平都處於世界數學的前列。元代的傑出數學家有朱世傑、李冶、王恂和郭守敬等,名著有《測圓海鏡》(1248)、《益古演段》(1259)、《算學啟蒙》(1299)和《四元玉鑒》(1303)。流傳或部分流傳至今的數學著作還有《丁巨算法》,何平子《詳明算法》,賈亨《算法全能集》,《透簾細草》,《錦囊啟源》等。重要成就是天元術和四元術、垛積術、招差術、弧矢割圓術和球面三角法、籌算、歌訣的完備和珠算的發明等。 第一節 天元術和四元術 在古代數學中,列方程和解方程是相互聯繫的兩個重要問題。宋代以前,數學家要列出一個方程,如唐代王孝通運用幾何方法列三次方程,往往需要高超的數學技巧、複雜的推導和大量的文字說明,這是一件相當困難的工作。隨著宋代創立的增乘開方法的發展,解方程有了完善的方法,這就直接促進了對於列方程方法的研究,於是,又出現了中國數學的又一項傑出創造——天元術。據史籍記載,金、元之際已有一批有關天元術的著作,如蔣周《益古》、李文一《照膽》、石信道《鈐經》、劉汝鍇《如積釋鎖》等(朱世傑《四元玉鑒》祖頤後序),可惜都已失傳。但在稍晚的李冶和朱世傑的著作中,都對天元術作了清楚的闡述。李冶(1192—1279),原名李治,字仁卿,號敬齋,真定欒城(今河北欒城縣)人。生於大興府(今北京市)。曾為金代詞賦科進士,鈞州(今河南禹州市)知州,元翰林學士知制誥同修國史。晚年隱居於河北元氏縣封龍山下,收徒講學並勤於著述,與元好問、張德輝交往密切,時人尊稱「龍山三老」。他在數學專著《測圓海鏡》(12卷)中通過勾股容圓問題全面地論述了設立未知數和列方程的步驟、技巧、運算法則,以及文字符號表示法等,使天元術發展到相當成熟的新階段。《益古演段》(3卷)則是他為天元術初學者所寫的一部簡明易曉的入門書。李冶還著有《敬齋古今黈》40卷、《敬齋文集》40卷、《壁書叢削》12卷、《泛說》40卷等,前一種今有輯本12卷,後三種已失傳。朱世傑,字漢卿,號松庭,生平不詳。據《四元玉鑒》莫若序稱:「燕山松庭朱先生,以數學名家週遊湖海二十餘年矣。四方之來學者日眾,先生遂發明《九章》之妙,以淑後學。為書三卷..名曰《四元玉鑒》」,由此可見,朱世傑當時已是聲名卓著的數學家和教育家。所著《算學啟蒙》3卷,內容包括常用數據、度量衡和田畝面積單位的換算、籌算四則運算法則、籌算簡法、分數、比例、面積、體積、盈不足術、高階等差級數求和、數字方程解法、線性方程組解法、天元術等,是一部較全面的數學啟蒙書籍。《數學啟蒙》曾傳入朝鮮和日本,產生了一定的影響。這部書,清代刻印所依據的是朝鮮翻刻本。朱世傑的代表作《四元玉鑒》記載了他所創造的高次方程組的建立與求解方法(四元術),以及他在高階等差級數求和(垛積術)、高階內插法(招差術)等方面的重要成就。美國科學史家喬治·薩頓(G.Sarton)在他的名著《科學史導論》中指出:《四元玉鑒》是「中國數學著作中最重要的一部,同時也是中世紀最傑出的數學著作之一」。除李冶、朱世傑外,贍思《河防通議》中也有天元術在水利工程方面的應用。 天元術是利用未知數列方程的一般方法,與現在代數學中列方程的方法基本一致,但寫法不同。它首先要「立天元一為某某」,相當於「設x為某某」,再根據問題給出的條件列出兩個相等的代數式。然後,通過類似合併同類項的過程,得出一個一端為零的方程。天元術的表示方法不完全一致,按照李冶的記法,方程a0xn+a1xn-1.+an-1x+an=0可寫成如下形式:其中a0,a1,.,an表示方程各項係數,均為籌算數碼,在常數項旁邊記一「太」字(或在一次項旁邊記一「元」字),「太」或「元」向上每層減少一次冪,向下每層增加一次冪。方程列出後,再按增乘開方法求正實根。天元術的出現,提供了列方程的統一方法,其步驟要比阿拉伯數學家的代數學進步得多。而在歐洲,只是到了十六世紀才做到這一點。此外,宋代創立的增乘開方法又簡化了求解數字高次方程正根的運算過程。因此,在這一時期,列方程和解方程都有了簡單明確的方法和程式,中國古典代數學發展到了比較完備的階段。不僅如此,繼天元術之後,數學家又很快把這種方法推廣到多元高次方程組,如李德載《兩儀群英集臻》有天、地二元,劉大鑒《乾坤括囊》有天、地、人三元等,最後又由朱世傑創立了四元術。「四元術」是多元高次方程組的建立和求解方法。朱世傑在《四元玉鑒》中用天、地、人、物代表四個未知數,然後根據已知條件推導出四元(或者二元、三元)高次方程組。這個方程組的表示方法是將其各項係數擺成一個方陣,其中常數項右側仍記一「太」字,四個未知數一次項的係數分置於常數項的上下左右,高次項係數則按冪次逐一向外擴展,各行列交叉處分別表示相應未知數各次冪的乘積。解這個用方陣表示的方程組時,要運用消元法,經過方程變換(實際上也就是矩陣變換),逐步化成一個一元高次方程,再用增乘開方法求出正根。在歐洲,直到十八世紀法國數學家貝佐(é)才對多元高次方程組的消元法作了系統的研究。另一方面,從E'.Bzout從四元術的表示法來看,這種方陣形式不僅運算繁難,而且難以表示含有四個以上未知數的方程組,帶有很大的局限性。因此,中國代數學在這一時期確實發展到了頂峰,如果要再前進一步,那就需要另闢蹊徑,突破新的難關了。後來,清代的代數學的進展是通過汪萊、李銳等對於方程理論的深入研究和引進西方數學這兩條途徑來實現的。 第二節 垛積術 對於一般等差數列和等比數列,我國古代很早就有了初步的研究成果。 北宋大科學家沈括在《夢溪筆談》中首創「隙積術」,開始研究某種物品(如酒罈、圓球、棋子等)按一定規律堆積起來求其總數問題,即高階等差級數求和問題,並推算出長方台垛公式。南宋數學家楊輝在《詳解九章算法》和《算法通變本末》中,豐富和發展了沈括的隙積術成果,提出了一些新的垛積公式。沈括、楊輝等所討論的級數與一般等差級數不同,前後兩項之差並不相等,但是逐項差數之差或者高次差相等。對這類高階等差級數的研究,在楊輝之後一般稱為「垛積術」。朱世傑對於垛積術作了進一步的研究,並得到一系列重要的高階等差級數求和公式,這是元代數學的又一項突出成就。例如,朱世傑在《四元玉鑒》中提出了著名的三角垛公式:112111112prrrrprnpnnnnp!()()()()!()()()+++-=.=++++LL其中p=1,2,3,4.。在這一串三角垛公式中,後式恰好是把前式結果作為一般項的新級數的求和公式。又如嵐峰形垛公式:11211121211prrrrprrnpnnnnppn!()()()()!()()()[()]+++-=.=++++++LL·也是很精彩有趣的。他還研究了更複雜的垛積公式及其在各種問題中的實際應用。總結和歸納出這些公式並不是一件輕而易舉的事情,是有相當難度的。朱世傑究竟如何得到這些公式,由於史料缺載,至今尚不清楚。朱世傑《四元玉鑒》所載「古法開七乘方圖」,比楊輝所引賈憲「開方作法本源圖」(賈憲三角)多出了平行於兩斜邊的許多斜線,有些學者推測,從這些斜線相連的數字關係可以得出一些有意義的結論,其中包括推導出某些垛積公式①。①杜石然:《朱世傑研究》,載《宋元數學史論文集》,科學出版社1966年版。 第三節 招差術 招差術即高次內插法,是現代計算數學中一種常用的插值方法。在中國古代天文學中早已應用了一次內插法,隋唐時期又創立了等間距和不等間距二次內插法,用以計算日月五星的視行度數。但是太陽等天體的視運動並不是時間的二次函數,因此僅用二次內插公式推算的結果仍不夠精確。唐代天文學家一行已經注意到這個問題,並列出一個包括三差的表格。由於當時數學水平所限,一行還沒有能夠給出正確的三次差內插公式。元代天文學家和數學家王恂、郭守敬在所編制的《授時曆》中,為精確推算日月五星運行的速度和位置,根據「平、定、立」三差,創用三次差內插公式,這在數學上是重要的創新,同時也把天文曆法的計算工作推進了一大步。朱世傑對於這類插值問題作了更深入的研究。他在《四元玉鑒》中成功地把高階等差級數方面的研究成果運用於內插法,得到了一般的插值公式:fnnnnnnn()!()!()(),=+=+--+△△△121131223L並且明確指出公式中各項係數恰好是p=1,2,3,.時的三角垛求和公式。上述插值公式,在中國數學史上一般稱為「招差術」,其用途並不僅僅限於內插法。招差術與垛積術是密切相關的,這兩者可以互相推演。朱世傑掌握了三角垛公式,因而易於推導出一般的內插公式。相反地,利用招差術,也可解決高階等差級數的求和問題。因此,朱世傑的垛積招差術,將宋元數學家在這方面的研究成果推進到了更加完善的地步。在歐洲,對招差術首先加以討論的是英國數學家J.格雷戈里(J.Gregory,1670)。此後不久,牛頓得到了現在通稱牛頓插值公式的一般結果。牛頓插值公式在現代數學和天文學計算中仍然起著重要的作用。朱世傑所發現的公式與牛頓插值公式在形式上和實質上都是完全一致的,而後者要晚三百多年。招差術的創立、發展和應用是中國數學史和天文學史上具有世界意義的重大成就。 第四節 弧矢割圓術和球面三角法 古希臘、印度和阿拉伯國家的數學家和天文學家從很早的時候起就創用了球面三角法,用來解決天文學方面的計算問題。隋唐之際,印度天文學開始傳入我國,如《開元占經》所收《九執歷》中曾介紹過印度的正弦表,但球面三角法基本上沒有引起中國數學家和天文學家的重視。 沈括在《夢溪筆談》中首創「會圓術」,把割圓術方法應用於推算弧、弦、矢的關係,提出了一個由弓形中弦和矢的長度來求弧長的近似公式。他的結果相當於公式:,其中為弧長,為相s=c+2vsc2d應弦長,v為相應矢長,d為圓的直徑。王恂、郭守敬在《授時曆》中,根據相似三角形相應各線段成比例的關係,並反覆應用沈括「會圓術」,創立了一種推算「赤道積度」和「赤道內外度」(即已知太陽的黃經度數求其赤經度數和赤緯度數)的新算法。這種新算法常被稱為「弧矢割圓術」,它與球面三角學中求解球面直角三角形的方法是類同的。在推算過程中,他們還得到了一些新的關係式。這些關係式相當於下列的球面三角公式:sinα=sincsinαcoscossincoscossinsincossincoscosbcccbccc=+=+222222ααα其中c為黃經,b為赤經,a為赤緯,α為黃赤交角。由於當時用於天文計算的中國傳統代數學方法並不遜色,並且會圓術公式誤差很大,採用圓周率π=3入算,誤差也很大,所得結果並不精確,所以王恂、郭守敬雖然開闢了通向球面三角學的途徑,但他們所引入的新方法並沒有能夠發展起來。一直到十七世紀進行曆法改革時由《崇禎曆書》等引進西方數學之後,球面三角法才在天文計算等方面得到了廣泛的應用。 第五節 中國數碼和零的符號 中國古代演算用算籌,記錄數量用一、二、三、四、..十、百、千、萬等漢字,這是比較簡明方便的。因此,雖然商周甲骨、金文和秦漢簡牘中曾出現一些按照算籌形象描繪下來的記數符號,但在很長時期內並未形成一套完整的用於記數和演算的數碼。 由於社會和數學本身發展的需要,唐代已開始用數碼記數,宋元時期的數碼已較完善,而且其使用也更加普遍。現存最早記有數碼的著作是唐代敦示36、108、126等,其數碼完全摹仿算籌擺放形式,用空位表示零,記數法也與籌算記數原則相同,但筆劃長短不等,不如算籌記數那樣整齊。北宋時尚未出現「0」號。 在十三世紀,中國數學有了高度的發展,有些數學方法如高次方程數值解法等的演算程序比較複雜,僅僅依靠文字說明難以講清楚,因此一些數學家便把解題過程的算草詳細記錄下來並寫入其數學專著,於是出現了較完整的中國數碼。如南宋秦九韶《數書九章》和楊輝數學著作所用的數碼是:籌記數法中一條橫線或豎線代表五。金元時期李冶《測圓海鏡》和《益古演段》、朱世傑《四元玉鑒》和《算學啟蒙》在論述天元術時所用的數碼,則完全採用了算籌記數中九個基數的寫法,但筆畫長短不齊,並添設了一個零號「○」:零的符號在一套完整的數碼中是必不可少的,並且在數學中有重要的意義。有人認為中國數碼中的零號是外國傳來的,其實並非如此。印度數碼和阿拉伯數碼早年曾傳入我國,如唐代天文學家瞿曇悉達在《開元占經》中曾介紹印度數碼,其中用一個圓點作為零號表示空位,元代安西王府所藏鐵制縱橫圖,其數字均為阿拉伯數碼,其中也有「0」號,但這些數碼當時並未為我國學者所採用。中國數碼中的零號是宋元時期我國數學家和天文學家自己創造的。新舊《唐書》、《宋史》等所載各家曆法曾用「空」字表示天文數據的空位。為了避免誤解,宋代學者又仿照古代用方框「□」表示脫落文字的習慣,用「□」來表示數據中的空位,如南宋蔡沈《律呂新書》將林鐘律管的律數118098記作「林鐘十一萬八千□□九十八」,將南呂律管的律數104976記作「南呂十□萬四千九百七十六」等。後來,為了書寫方便,方框「□」順筆寫成了圓圈「○」,於是形成了中國數碼中的零碼。現在已知最早使用「○」表示空位的是金《大明曆》,其中有「三百○九」、「五百○五」、「二千○七」等等,但《大明曆》使用更多的仍是「空」字。直到宋元四大數學家的著作中才普遍使用了零碼。 明代以後珠算術逐漸推廣,為區分算籌記數位數而採用的縱橫相間制已無實際意義,因而在需要用數碼記數時,除表示1,2,3的數碼仍兼用縱橫二式以防混淆外,其他數碼都單用南宋數碼的橫式,明程大位《算法統宗》稱之為「暗碼」。後來,暗碼中很長時間的商用暗碼(又稱蘇州碼):清末學制改革設立了新式學堂,各地還有許多教會學校,大多採用新編譯的數學課本,現在通用的印度-阿拉伯數碼才逐漸傳播開來。 第六節 籌算歌訣的完備和珠算的發明 唐宋時期對於實用算術的研究是一個相當活躍的領域,不少人積極從事籌算算法的改進尤其是籌算乘除法的簡化工作,並取得了一些重要的進展。如把籌算乘除需要擺放三層的擺法簡化為在一個橫列里演算,提出了求一、上驅、搭因、重因、增成、身外加減、損乘、九歸等等籌算乘除捷法,並且其中一些方法還被編成容易上口和便於記憶的歌訣形式。到了元代,這種簡化籌算乘除法的歌訣經過不斷改進而更加簡練和完備。這一時期新編成的比較重要的歌訣有「化零歌」、「歸除歌訣」、「撞歸訣」、「起一訣」等,如朱世傑《算學啟蒙》記載有「化零歌」:「一退六二五,二留一二五,三留一八七五..」即11600625216012531601875===.,.,.當時一斤等於十六兩,這個歌訣就是以斤化兩的算法。南宋楊輝也有斤價化兩價的歌訣:「一求,隔位六二五;二求,退位一二五;三求,一八七五記..」顯然朱世傑的歌訣更為順口易記。《算學啟蒙》還記載了36句的「九歸」(除數為一位數的除法)歌訣,如「二一添作五,逢二進一十」,「三一三十一,三二六十二」等等,也比楊輝的九歸歌訣簡單明確。此外,在元代還很流行「歸除」,在做多位數除法時先「歸」後「減」,以簡化除法運算。賈亨《算法全能集》記有算法歌訣:「唯有歸除法更奇,將身歸了次除之。有歸若是無除數,起一回將原數施。或值本歸歸不得,撞歸之法莫教遲。若還識得中間法,算者並無差一厘」,其中提到的撞歸訣和起一訣也趨於完善。如《丁巨算法》(1355)提到的撞歸訣是「二歸撞歸九十二,三歸撞歸九十三..」,元末何平子《洋明算法》已將其改為「見二無除作九二,見三無除作九三..」等等。以上這些口訣與珠算的口訣已經基本相同,只不過當時還是用於籌算而已。根據這些口訣作除法時,一念口訣便能立即得到商數。在這種情況下,只要熟練掌握口訣,具體計算本來可以變成相當簡便的事情,然而當時的計算工具卻還是那些不很便於取用的小竹條,因此手不應心的矛盾,也就是計算工具與計算方法的矛盾顯得更加突出了。由於社會經濟的發展,迫切需要改進計算方法和計算工具,而籌算口訣的完備,已經提供了更為簡便的計算方法,於是,一種嶄新的計算工具——珠算盤便應運而生了。 珠算是在我國籌算基礎上發展起來的,它的計算方法吸取了籌算方法,尤其是籌算口訣的產生和改進,對於從籌算向珠算的演變起了十分重要的作用。至於珠算究竟是什麼時候產生,又是什麼人創造的,根據現有史料還不能作出確切的回答。南北朝時期的《數術記遺》中記載了多種記數方法,其中的「珠算」並非後世的珠算,但是否對珠算的產生有所影響,則還須作更深入的研究。有人認為北宋張擇端《清明上河圖》里畫有一個算盤,但是原圖並不很清楚,難以確認是否為珠算盤。元中葉之後的一些文學和戲劇作品中已經提到珠算。元末陶宗儀《輟耕錄》記載一條俗諺:「凡納婢僕,初來時,曰雷盤珠,言不撥自動。稍久,日算盤珠,言撥之則動。既久,曰佛頂珠,言終日凝言,雖撥亦不動。」①明初刊刻的一本看圖識字書《對相四言雜字》有算盤圖,共十檔,上二珠下五珠。這是目前發現最早的算盤圖。書中①陶宗儀:《輟耕錄》卷二九。 所繪人物服飾為元代式樣,由此可知該書原刊於元代。另一方面,南宋和元初的著名數學家秦九韶、楊輝、李冶、朱世傑等又都沒有提起過珠算。因此,珠算大約產生於元中葉以前不太久的時間。總的說來,正像我們不能確切說明籌算是什麼時候產生又是什麼人創造的一樣,這種情況恰恰說明珠算和籌算都不是哪一個個人創造發明的,而是社會經濟發展的產物,是廣大勞動人民在長期的生產活動和日常生活中,根據實際需要創造出來並逐漸加以改進和完善的。珠算盤和珠算術的發明,是我國古代勞動人民作出的一項意義重大、影響深遠的突出貢獻。 第七節 中國與伊斯蘭國家的數學交流 中國和伊斯蘭國家的接觸,很早的時候就已開始,在宋元時期有了更進一步的發展。在數學方面,見於記載最早對於歐幾里得《幾何原本》有所研究的人是成吉思汗之孫蒙哥。《多桑蒙古史》稱:「成吉思汗系諸王以蒙哥皇帝較有學識,彼知解說Euclid之若干圖式。」①蒙哥是通過《幾何原本》的阿拉伯文譯本而了解古希臘數學的。1271年,元世祖忽必烈下令在上都設立回回司天台,由著名天文學家波斯人札馬魯丁領導。回回司天台的主要任務是編制回曆,供我國信仰伊斯蘭教的民族使用。明朝欽天監中仍設有回回科,直到清康熙時才撤銷,專門編制回曆的機構前後共設置四百餘年。在這一時期,伊斯蘭國家的天文數學知識陸續傳入我國。據元朝王士點、商企翁著《秘書監志》記載,當時回回司天台曾收藏有多種阿拉伯文數學書籍,如:兀忽列的四擘算法段數十五部,罕里速窟允解算法段目三部,撤唯那罕答昔牙諸般算法段目並儀式十七部,呵些必牙諸般算法八部等。有些學者認為「兀忽列的」就是Euclid的音譯,因此歐幾里得《幾何原本》15卷已在元代傳入我國②。後三種著作中,「罕答昔牙」意為幾何學,「呵些必牙」意為算法,但究竟具體是哪些數學著作還有待於進一步的考證。元朝時,阿拉伯數碼也曾傳入我國。1956年,在西安市郊元朝安西王府舊址發掘出五塊鐵板,上面都刻畫有用東阿拉伯數碼錶示的六行縱橫圖(亦稱幻方,同行、同列及同一對角線上的數字之和均為111,見下圖)。這類鐵板可能是王府人員作為驅魔避邪用的器物。1980年上海浦東陸家嘴又出土一枚可佩戴的玉掛,上面刻有四行縱橫圖,所用數字亦為東阿拉伯數碼③。但是,這種阿拉伯數碼並沒有被當時的人們所廣泛使用,至於其縱橫圖的來源則尚無人研究。在明西安出土的鐵板刻文及據以譯出的現代縱橫圖代的一些著作中還介紹了在伊斯蘭國家通行的「土盤算法」,「格子算」(又稱「鋪地錦」),球面三角法和角度的六十進制等。但總的來說,中世紀阿拉伯數學在中國的影響,遠不如它對歐洲數學所產生的巨大影響。 在阿拉伯數學傳入中國的同時,中國數學自然也會傳入伊斯蘭國家。十三世紀中葉,蒙古軍隊西進占領巴格達之後,旭烈兀汗建立了馬拉蓋(今屬伊朗)天文台,並任命著名天文學家和數學家納速拉丁·圖西主持工作,編制了著名的《伊兒汗歷表》。這個天文台擁有四名中國天文學家,據記載,「旭烈兀汗曾自中國攜有中國天文學家數人至波斯,其中最著名者為Faomoun-dji博士,即當時人稱為先生(Singsing)者是已。納速剌丁之能知中國紀元及其天文歷數者,蓋得之於是人也。」①這些人除天文曆法外也必定熟悉中國數學,並且會把中國的數學知識傳播給其他國家的數學家和天文學①馮承鈞譯:《多桑蒙古史》下冊,頁91,中華書局1962年版。 ②嚴敦傑:《歐幾里得幾何原本元代輸入中國說》,載《東方雜誌》39卷13號,1943年。③王正書:《浦東陸家嘴出土元代珍貴玉掛》,載《文匯報》,1980年12月16日。①馮承鈞譯:《多桑蒙古史》下冊,頁91,中華書局1962年版。關於Fao-moun-dji,馮承鈞認為「後二字疑為蠻子之對音,其人或者姓包姓鮑」,也有人將其音譯為傅穆齋。 家。此外,中國數學曾對於印度數學產生過重要影響。八世紀之後,印度數學知識不斷傳入各伊斯蘭國家,印度數學家如婆羅摩笈多等的著作被譯成了阿拉伯文。現在在流傳至今的中亞數學家的一些數學著作中,仍然可以找到諸如與中國古代的十進位值制記數法、分數記法、四則運算、三率法、盈不足術、重差術、百雞問題等極其相似的數學內容和算法,這些很可能是直接從中國或通過印度這兩條途徑傳入伊斯蘭國家的。在十五世紀,兀魯伯修建了撒馬爾罕天文台,著名數學家和天文學家阿爾·卡西是這個天文台的主持人。在阿爾·卡西的名著《算術之鑰》(1247)中,有些數學內容如除法、開平方和開立方法、「契丹算法」、「百雞問題」等都有吸收了中國古代數學成就的痕跡。尤其是高次開方法,開方不盡時命分的方法:araraannnn+.++-(),1以及二項式定理係數表(賈憲三角)等等,更和宋元算書的內容完全相同①。而這些數學知識,在當時除了宋元算書外,還沒有任何其他國家的數學著作提到過。因此有理由認為,與古希臘和印度數學一樣,中國數學也曾給予阿拉伯數學以一定的影響。而阿拉伯數學在世界數學史上占有公認的重要地位,它對歐洲數學的發展起了巨大的推動作用。 ①錢寶琮:《中國數學史》,頁220—224,科學出版社1964年版。