最偉大的數學家中,一定有高斯,高斯最重要的著作裡,一定會有《算術探究》。《算術探究》(1801年)是數論研究裡程碑式的著作。高斯以其非一般的創造力,讓數論研究到達了前所未有的新高度。但是這樣一部數學巨著,也並非全是憑藉他一人之力完成,很多數學大家都為他的研究鋪平了道路。更甚者高斯本人興許還不知,他書中的一些結果在其他名族早已有之。
高斯《算術探究》第二章系統研究了「一次同餘方程」問題,其中第7節是「對若干個給定的模,求分別同餘於給定剩餘的數的方法」。名稱很長不好記,但是給它換個名字大家就熟悉了——「大衍求一術」。如果還不知道,那就得從《孫子算經》中的「物不知數」問題說起了。
「有物不知其數,三三數之剩二;五五數之剩三;七七數之剩二。問物幾何?」(《孫子算經》)
簡單翻譯一下就是:牆角處有一堆蘋果,3個3個的數會剩下2個;5個5個的數會剩下3個;7個7個的數會剩下2個。請問:這堆蘋果(最少)有多少個?
這樣一個問題看似簡單,但如果不解其中訣竅,是很難做出的。我們來看看《孫子算經》的結果和解法:
「答曰:二十三。」「三三數之剩二,置一百四十;五五數之剩三,置六十三;七七數之剩二,置三十。並之,得二百三十三,以二百十減之,即得。」
怎麼就出現了140,63,30這些數了呢?又為什麼要把它們加起來(「並之」)得233呢?顯然《孫子算經》在這賣了關子。不過我們也拿作者沒辦法,因為成書於公元4-5世紀的這本書,我們壓根就不知道作者是誰。
真正問題解決的核心被隱藏,這樣一種「簡潔」的表達方式經過代代相傳,可能會失去其原來的韻味。加之「後世學者自高,鄙不之講,此學殆絕,惟治歷疇人,能為乘除,而弗通於開方衍變」。 一門學問或許會就此消失。但是幸運的是,宋人秦九韶為我們清晰的呈現了這一切。並記錄在了他的數學名著《數書九章》中,有方有法,名曰「大衍求一術」。
秦九韶(1208-1268年),字道古, 南宋著名數學家。受周密《癸辛雜識續集》和劉克莊「繳秦九韶知臨江軍奏狀」的影響,後人多認為他是一個「不仁不孝」的貪官。但事實或許並非如此,見:數學大師秦九韶:並非「十惡不赦、不孝不仁」。
但不管人品好壞的歷史真相如何,秦九韶在數學上的貢獻是難以泯滅的。他的著作《數書九章》是13世紀最重要的數學著作之一。美國著名科學史家薩頓(G·Sarton,1884-1956)更是稱讚秦九韶為「他那個民族,他那個時代,並且確實也是那個時代最偉大的數學家之一」。我們主要從幾個方面來簡要說明他的貢獻。
大衍求一術
對於「物不知數」問題(及其推廣),秦九韶的解法步驟與高斯的解法基本一致,文[1]406-407有詳細對照。為了便於閱讀,下面仍然以「物不知數」問題為例說明,並使用大家常見的符號表達。
○解:假設蘋果有x個,則 x÷3餘2,x÷5餘3,x÷7餘2.
將x一分為三:x=3×5×m +5×7×n + 7×3×r
(則x÷3餘2,只需(5×7×n)÷3餘2,其他同理 )
這樣,分別令n=1,2,3,....得當n=4時,有(5×7×4)÷3=46...2,滿足。
同理得,m=2,r=3.
即:x=3×5×2 + 5×7×4 + 7×3×3=233
用233-3×5×7=233-105=128
128-105=23
得到通解x=23k,(k為正整數),最小值23.
為了使得結果與過程便於記憶,明朝數學家程大位在《算法統宗》一書中編了一首「孫子歌,大家手筆如下:
三人同行七十稀,五樹梅花廿一枝;七子團圓正半月,除百零五便得知。
問題解決了,方法也得以流傳當時。秦九韶的「大衍求一術」在前人基礎上更加系統化、一般化,儘管在當時屬於「思維訓練」題,但以此為內容的數論研究為當代密碼學之必不可少。秦九韶的「大衍求一術」基本能處理「一次同餘式」組,但也有其缺陷,即,只限於兩兩互素模(「物不知數中」中的模指2、3和5,他們是兩兩互素的)。
「秦九韶算法」及「正負開方術」
《數書九章》開篇介紹了「大衍求一術」,並附例說明解法,領先世界500多年。同樣,書中關於解多項式方程的「秦九韶算法」及求數值解的「正負開方術」也領先世界500多年。
「秦九韶算法」以其簡化多項式求值運算、並便於編程而被編入高中數學教材,其思想為:轉化n次方程為一次方程。如果要計算f(222)的值:
然後從最裡層的x+2=222+2=224算起,第二層:x(x+2)+3=222*224+3.........
其他同理,由內向外計算。這樣可以達到比直接代值運算需要到更少的乘法運算、或變乘法運算為加法運算。同時,在當今計算機時代,「秦九韶算法」的程序設計也比較容易實現。
「秦九韶算法」 用於多項式求值,而「正負開方術」用於求高次方程的數值解,這在世界也是處於領先地位的。正負開方術源於賈憲的「立成釋鎖開方法」。只是在此基礎上增加了「負數」項的情況。改方法的核心包含了兩個方面——縮放和代換。為了敘述方便,現用「立成釋鎖開方術」來解方程 x^2=2,亦求根號√2的近似值。
【具體解法】
這個過程根據需要的精確度,一直繼續下去。
接下來需要進行「反推」,用最後一步的t3來表示x的值。注意.
逐級帶入得到:
另外,
「正負開方術」是「牛頓法」之前用於求解方程數值解的一個最重要方法,思路簡單,但是對於高次方程的運算量過大,實際應用中有著一定的缺陷。
海倫-秦九韶公式
看完上面的兩個重要發現,你估計會覺得《數書九章》是一本代數或數論的書籍,其實不然,嚴格意義上講,《數書九章》是一本實用性書籍。要知道,秦九韶所在南宋末年,戰爭頻發、民不聊生,解決農業、軍事、工程問題都是緊迫、必須的,秦九韶的《數書九章》也是這個時期寫成,並進獻給當朝皇帝的。雖然並未引起足夠的重視,但是其思想卻流傳至今。
《數書九章》中相當大一部分題目是實用性的,當然也就必不可少的解決幾何問題。在第五卷中我們可以看到這樣一個題目:
問:沙田一段,有三斜,其小斜一十三裡,中斜一十四裡,大斜一十五裡。裡法三百步。欲知為田幾何。(《數書九章》第五卷第2題)
顯然,這道幾何題是已知三角形三邊求面積的問題。作為一道幾何名題,最早可以追溯到公元1世紀的古希臘,著名數學家海倫(Heron of Alexandria,公元62年左右)給出了一個很對稱的公式,並作出了證明。
相隔前年,秦九韶的面積公式與之貌異而神合,兩者也可相互轉換。
「術曰:以少廣求之。以小斜冪並大斜冪,減中斜冪,餘半之,自乘於上;以小斜冪乘大斜冪,減上,餘四約之,為實;一為從隅;開平方,得積。」
秦九韶是一個搬運工、也是一名設計者。他在前人的基礎上,大大的豐富創造了我國古代的數學成果,讓先輩的智慧得以保存和發展。同時,他是我國宋元時期的一顆璀璨之星,他的研究尤其「大衍求一術」得到了世界的認可,他被德國著名數學史家M.康託爾(Cantor,1829-1920)稱作是「最幸運的天才」。
參考文獻:
[1] 吳文俊主編.中國數學史大系(第五卷·兩宋).北京師範大學出版社.2000.
[2] 高斯.算術探究.潘承桐等譯.哈爾濱工業大學出版社.2017.