杜甫有一首《不歸》詩,懷念一位從弟:
河間尚征伐,汝骨在空城。
從弟人皆有,終身恨不平。
數金憐俊邁,總角愛聰明。
面上三年土,春風草又生。
宋代蔡夢弼《草堂詩箋》解釋其中“數金”一語:“數,所具切,計也。謂幼之時識錢數也。”清仇兆鰲注引明胡夏客說:“數金,用‘河間姹女數錢’語,以應河間。”如果按蔡氏所說,“數金”就是年幼時識錢數,未免有點太小瞧這位從弟了。“河間姹女工數錢”則是漢代童謠(見《后漢書·五行志》),唐人常用此典來歌詠妓女,原文也不能改成“數金”,應該和這首詩沒有關系。實際上,詩中此句是講從弟“總角”時學習聰穎,“數金”是講他的計算能力。《九章算術》卷七有這樣的例題:“今有共買金,人出四百盈三千四百,人出三百盈一百,問人數、金價各幾何?答曰:三十三人,金價九千八百。”金不僅是交易物,而且用于計算物值、表示物價,所以常常被用來當作演算例題。杜甫和我們今天的看法差不多,認為數學能力可以代表一個人的聰明程度。我們從這首詩可以了解到唐代士人接受數學教育的情況。
那么,杜甫本人的數學能力達到什么水平呢?下面從他的文章里找一些證據。肅宗上元二年(761),杜甫在西川蜀州為唐興縣令王潛作《唐興縣客館記》,結尾說:
自辛丑歲秋分大馀二,小馀二千一百八十八,杜氏之老記已。
這里所說的秋分大馀、小馀,是表示節氣的干支日和時刻。大馀表示干支日,小馀表示時刻。由于唐代多次改歷,不同歷法設定的日分數不同,因此推算出的小馀數值也不相同。根據杜甫提供的大馀、小馀數值加以驗算,結果證明他所依據的是唐玄宗開元年間頒行的《大衍歷》。
古代歷法都會設定一個歷法起始時間,稱上元。《大衍歷》給出自上元至開元十二年(724)的年數(稱積算)為96961740年。據此推算,自上元至761年的積算為96961777年。歷法還要設定一個日分數,《大衍歷》設定的日分數(稱通法)為3040分。一個回歸年(即二十四節氣一循環)為365日,所含日分共1110343分(稱策實)。
用策實乘以積算,所得結果稱作中積分,即從上元開始到運算所求這一年的天正冬至的總日分。到761年應為:
96961777×1110343=107660830359511
以中積分除以通法3040,所得結果即是積日:
107660830359511÷3040=35414746828.78651(日)
積日滿60(即干支一周,《大衍歷》稱為爻數)即除去,剩下的馀數稱作大馀。小馀則是不滿一日日分數(在《大衍歷》中是3040)的馀數。在此例中,積日/60的整數部分為590245780,這樣就可以得出761年冬至的大、小馀:
35414746828.78651(積日)-590245780×60
=35414746828.78651-35414746800
=28.78651
所得結果中的整數28,即是大馀。根據大馀數可以求得干支日,不過要從甲子次日起算,數到28是壬辰,也就是此年冬至日的干支。所得結果中的小數部分即是小馀:0.78651×3040=2390.9904(日分)。
求出冬至日的大馀、小馀,然后可以根據“三元之策”推求其他節氣的大馀、小馀。《大衍歷》給出的“三元之策”公式是:“三元之策,一十五;馀,六百六十四;秒,七。”(見《舊唐書·歷志》)即每一個節氣所含日數為15(參見張培瑜等《中國古代歷法》第八章《大衍歷》,中國科學技術出版社2008年版)。
從冬至到秋分共18個節氣,用此年冬至小馀加18個節氣整日之外的馀數:
滿3040為一日,除去:
14348-3040×4=2188
所得結果2188,就是此年秋分小馀。
冬至大馀加18個節氣整日數,再加小馀滿整日數的4日:
28+15×18+4=302
滿60(爻數,干支一周)即除去:
302-60×5=2
得此年秋分大馀2。據此推算出此年秋分在八月十三日丙寅。
以上演算結果與杜甫給出的761年秋分大、小馀數據完全吻合。肅宗時期已頒行《至德歷》,杜甫特意給出的這兩個數據應當是他據《大衍歷》自己推算出的結果,其中需要進行高位數的四則運算和相當復雜的分數運算。杜甫是借用這種方式來表達他對開元盛世的懷念。這表明他年輕時曾學習過歷法,并掌握其中基本的演算方法。
杜甫還作有《唐故范陽太君盧氏墓志》,盧氏是他的繼祖母,也就是他祖父杜審言的繼室。文中記述盧氏下葬情況:
將入著作之大塋,在縣首陽之東原,我太君用甲之穴,禮也。……塋內西北去府君墓二十四步,則壬甲可知矣。
在此大塋中,府君(杜審言)葬壬穴,盧氏后葬取甲穴,所采用的是唐代流行的六甲八卦冢葬法。其法是將墓地橫向、縱向皆七分之,共得四十九穴,中心一穴稱地心明堂。其外三重,為天、地、人穴。帝王用天穴(中八穴),諸侯用地穴(次十六穴),卿大夫以下用人穴(最外一重)。人穴依二十四方位排列,但其中只有甲、丙、庚、壬四穴為吉穴,其他二十穴不可用。杜審言取壬穴,是因為杜姓屬于五姓(宮商角徵羽)中的商姓,利壬穴。壬在北,甲在東,府君墓恰好在盧氏墓西北。
按照葬法,取穴不但要合甲丙庚壬,而且要與十二建除中的“滿定成開”相交。其法是將墓地橫向、縱向皆十三分之(之所以十三分,是為了留出地心明堂,所以只能取單數),從四個方向起建除(建除又與神煞、干支配合)。在十二建除(建、除、滿、平、定、執、破、危、成、收、開、閉)中,滿、定、成、開分別位于第三、五、九、十一位。這樣,從四個方向分別起建除,就會在由每個方向而來的第三、五、九、十一位上形成四個交匯點,滿足“滿定成開”相交的要求。這四個交匯點恰好處在甲丙庚壬四個方位的延長線上,也就是甲丙庚壬四穴的取穴處。宋代《地理新書》卷十三有“禽交吉穴之圖”:
圖中虛線表示七分分之,實線表示十三分之。下方(北)壬所相對、左方(東)甲所相對兩點,即分別是壬、甲二穴的取穴處。杜甫文中所說“二十四步”,即是這兩點之間的斜向距離。如圖:
《地理新書》卷十三“禽交六尺立成法”中共列出“甲辰冢壬穴”和“乾冢壬穴”七種規格的墓地大小長闊(寬)。經過逐一對比后,我們發現“乾冢壬穴”中一塊規格最大的墓地與杜氏大塋最為吻合。該墓地“東西三十九步,南北五十一步”(1步=5尺)。按“禽交吉穴之圖”,對這塊墓地各邊十三分之,甲穴與壬穴的橫向(東西)距離為7/13×39(步),縱向距離(南北)為3/13×51(步),分別是上圖直角三角形中兩條邊的長度。杜甫文中的“二十四步”,則是這個直角三角形中斜邊(弦)的長度。根據勾股定理a2+b2=c2對此進行驗算:
所得數據只有微小差別,幾乎可以不計,兩者并非偶然相合。
盧氏下葬離杜審言去世已三十馀年,她葬于甲穴,是按照“臥馬”葬法,后葬附前葬不能排成一列,而要取“雁行斜向”之勢。這時,要找到甲穴的正確位置,需要按照葬書所列墓地規格,由壬穴東行21步(7/13×39),再向南行11步3尺8寸(3/13×51)即得,然后可以用斜行24步進行驗算。兩者相合,即保證位置準確無誤。這就是杜甫在文中給出“二十四步”數據的原因。葬書只給出長闊步尺,斜向距離需要自己運用數學知識進行演算。盡管勾股定理的實用性很強,普通土木工人也會運用“勾三股四弦五”的口訣找方(直角),但要進行上面這例運算,就必須掌握《九章算術》第九章中才介紹的勾股定理公式以及開方。
從以上這兩個例子來看,杜甫的數學知識雖然還不能與數學家相提并論,但放到現在,還是能夠與一般接受中等教育的人一比高下的。