正文

杜甫詩文中的歷法問題

唐詩與唐史論集 作者:謝思煒 著


杜甫詩文中的歷法問題

杜甫詩文中有一些篇章涉及歷法問題,而歷法是專門之學(xué),舊時注家未必深通其術(shù),所以解說中難免出現(xiàn)一些誤解,或者對某些文句茫然不知其解。這不能不說是一個缺憾。本文僅就習(xí)學(xué)所得一二,對其中幾個問題試加探討。

大歷年間,杜甫在夔州作《雨》詩一首。由于涉及歷法問題,作品編年也產(chǎn)生爭議:

冥冥甲子雨,已度立春時。輕箑煩相向,纖恐自疑。煙添才有色,風(fēng)引更如絲。直覺巫山暮,兼催宋玉悲。

宋人趙次公謂:“按《資治通鑒》,大歷二年正月辛亥朔,至十三日甲子。但不知立春在前相去幾日,以無《長歷》考之也。今立春矣,值春甲子而雨,則將有諺語千里之旱,不亦可憂乎?”系此詩于大歷二年(767)。黃鶴注謂:“按《舊史》,大歷元年正月丁巳朔,則是初八日為甲子。史又云自春旱,至六月庚子始雨,卻與唐諺合。公是時在云安。其年十一月甲子日長至,方改為大歷元年。若大歷二年,甲子在正月十三日,而立春已在元年十二月二十六七,無容謂甲子雨‘已度立春時’也?!?sup>黃鶴注的意思是大歷二年正月十三日甲子,而立春在此前的十二月二十六七日,自然不可能有自甲子日下雨直至立春的情況,因此改系此詩于大歷元年(766)云安作。與趙次公相比,黃鶴當(dāng)是認(rèn)真核查了歷日,故下此判斷。

明代王嗣奭對宋人舊注提出不同意見:“先雨而度立春,是冬甲子雨,而注引春甲子,誤。按諺:‘冬雨甲子,雪飛千里?!戏降嘏什谎┒?。注引‘赤地千里’,是年春旱,又誤?!?sup>意思是說此甲子日并非是春正月甲子,而是立春前的冬甲子。這樣就解釋了自甲子雨而至立春的問題。但是他沒有說明冬甲子的日期(應(yīng)在十一月),對此詩系年也沒有發(fā)表意見。清仇兆鰲注引用了王嗣奭說,系年則從黃鶴注,此外未加任何解釋,或許并沒有在意此二人說法中可能包含的問題。

以上三人說法中,王嗣奭說最不可取。如果依王說,此甲子日是冬甲子,在立春前,而非在立春后,那么如黃鶴注已查明的,大歷二年立春在大歷元年十二月二十六七日(實(shí)為二十七日戊申。古人以冬至為二十四節(jié)氣之首,兩個冬至之間即是一個回歸年),大歷元年立春在永泰元年(765)十二月十六日癸卯。據(jù)此可以推算出,大歷二年前的冬甲子至立春為44天,大歷元年前的冬甲子至立春為39天。不論是在夔州還是在其他地方,哪有可能一冬下如此長雨?況且詩里所描寫的情景也全非如此。王嗣奭的牽強(qiáng)解釋實(shí)乖謬于常識。

黃鶴通過核查歷書,改動此詩系年,思路似較前人嚴(yán)密,但其說法其實(shí)是站不住腳的。因為只要據(jù)其思路追究一下就會發(fā)現(xiàn),即使將此詩作年提前到大歷元年,立春同樣在正月甲子日前,而且更為提前,達(dá)21天,而大歷二年是16天。因而改動系年不但沒有解決問題,反而使問題更難解釋。實(shí)際上,根據(jù)歷法常識可以知道,只有將此詩作年后移,甲子日才會出現(xiàn)在立春之前。因為一個回歸年(即二十四節(jié)氣一個循環(huán))為365日,比六十甲子的倍數(shù)360日多出5日。只有將此詩作年后移三年以上,甲子日才會跑到立春之前。但這時杜甫不但已離開夔州,甚至已離開人世。黃鶴看來沒有料到他的推論如此經(jīng)不住推敲,這是因為他對歷法知識不熟悉,或者查歷書沒有查到底。

事實(shí)上,黃鶴等人對詩意本身理解有誤,才導(dǎo)致對系年的不必要改動。詩云“冥冥甲子雨,已度立春時”,是說甲子這天下雨,而這一天已在立春之后,并不是說自甲子日下雨一直下到立春。大歷二年正月甲子日在立春之后,這并沒有什么特別之處(大歷元年、三年、四年也是如此),而恰好這一天下雨,使詩人想到了俗諺所說“春雨甲子,赤地千里”(見《朝野僉載》卷一,趙次公注已引)。在以上注家中,只有趙次公沒有誤會詩意,其他人都被黃鶴引導(dǎo)到錯誤方向上去了,這至少說明注家都沒有肯再去核實(shí)黃鶴提出的歷法問題,而其實(shí)這是一個很簡單的算術(shù)問題。

為了顯示自己的博學(xué)多才,杜甫在一些文章寫作中直接安插進(jìn)了歷法內(nèi)容。天寶年間,杜甫在長安獻(xiàn)三大禮賦,其中《朝獻(xiàn)太清宮賦》寫到:

帝之苗裔,坤之紀(jì)綱。土配君服,宮尊臣商。起數(shù)得統(tǒng),特立中央。且大樂在懸,黃鐘冠八音之首;太昊斯啟,青陸獻(xiàn)千春之祥。

清朱鶴齡注此文,引《史記·歷書》及《索隱》黃鐘為律之首之說,又引《漢書·律歷志》“黃鐘為天統(tǒng)”之說。仇兆鰲注又引《律歷志》“數(shù)從統(tǒng)首日起算”及“以閏法乘日法得統(tǒng)法”之說。

在《有事于南郊賦》中杜甫又寫到:

蓋九五之后,人人自以遭唐虞;四十年來,家家自以為稷卨。王綱近古而不軌,天聽貞觀以高揭。蠢爾差僭,粲然優(yōu)劣。宜其課密于空積忽微,刊定于興廢繼絕。而后睹數(shù)統(tǒng)從首,八音六律而惟新;日起算外,一字千金而不滅。

朱鶴齡注此文“數(shù)統(tǒng)從首”引《律歷志》“數(shù)從統(tǒng)首日起算”之說。此外引《唐書》開元中僧一行造《大衍歷》、歷成張說等上之事,認(rèn)為“課密”以下蓋指此而言。

以上兩段文字安插在三大禮賦中,相互呼應(yīng),從中可以看出作者有某種整體布局上的考慮。這兩段話的內(nèi)容則主要是依據(jù)《漢書·律歷志》所載劉歆《三統(tǒng)歷》之說,用音律學(xué)和象數(shù)《易》學(xué)來解釋歷法?!度y(tǒng)歷》“日法八十一”,即分一日為八十一分,“元始黃鐘,初九自乘,一龠之?dāng)?shù)”(《漢書·律歷志下》),認(rèn)為這一數(shù)字是以黃鐘律管九寸自乘而來。又“統(tǒng)法一千五百三十九,以閏法乘日法,得統(tǒng)法”,即以閏法19(指十九年七置閏)乘日法81,得1539,為一統(tǒng)的年數(shù),也是統(tǒng)術(shù)運(yùn)算中的日分?jǐn)?shù),在許多運(yùn)算中被用作分母。這即是所謂的“起數(shù)得統(tǒng)”。杜甫引用這一說法,是用來說明唐應(yīng)土德,其位中央,其音宮,而君亦為宮,律中黃鐘,而黃鐘則是歷法中統(tǒng)法數(shù)據(jù)的來源。劉歆為歷法數(shù)據(jù)尋找音律的根據(jù),以此來證明天道運(yùn)行有某種數(shù)學(xué)規(guī)則的神秘性。杜甫則以此來論證唐德所在(實(shí)際上,后代歷法已不再勉強(qiáng)與黃鐘律數(shù)配合),并順帶顯示了自己在歷法和數(shù)學(xué)方面的修養(yǎng)。

至于“數(shù)統(tǒng)從首”、“日起算外”兩句,則是講《三統(tǒng)歷》統(tǒng)術(shù)中推(天)正月朔的方法?!皵?shù)從統(tǒng)首日起算外,則朔日也”(《律歷志》),即以60(干支一周數(shù))除積日,所馀數(shù)(大馀)首日干支與統(tǒng)首日干支同,從此日起算,可求得朔日干支。王先謙《漢書補(bǔ)注》所引錢大昕、董祐誠等人之說,有詳明解說,是朱鶴齡、仇兆鰲二人所未及見的。朱、仇二人只能勉強(qiáng)給出《律歷志》中“統(tǒng)首”的出處,但又拉雜引了其他一些不相干的說法,說明他們對這些歷法術(shù)語并不真正理解。

從這兩句來看,杜甫對統(tǒng)術(shù)的計算方法似乎頗有心得,不然也不會接連使用“統(tǒng)首日”、“算外”這兩個相當(dāng)冷僻的專門術(shù)語。果然,好像是有意為了證實(shí)這一點(diǎn),上元二年(761)杜甫在蜀州為縣令王潛作《唐興縣客館記》,文末忽然別出心裁:

自辛丑歲秋分大馀二,小馀二千一百八十八,杜氏之老記已。

結(jié)尾這幾句話一下難倒了諸位注家。朱注在此下仍引《漢書·律歷志》推正月朔法,仇注引黃百家之說:“杜記蓋謂秋分后二日之二十馀刻耳。”顯然是逞臆之言。楊倫則直言:“末大馀小馀,即觀朱釋亦未明?!?sup>在筆者閱讀范圍內(nèi),尚未見到其他精于歷算的學(xué)者有馀暇顧及杜甫此文。

此處所言秋分大馀、小馀,是求節(jié)氣的干支日及時刻。在歷法中,要首先推求天正冬至(歷代歷法冬至均固定在十一月)大馀、小馀,然后依次求其他節(jié)氣的大馀、小馀。在《三統(tǒng)歷》中,統(tǒng)法(日分?jǐn)?shù))為1539,兩個冬至日間的年長為365日,棄去可為60除盡的360整日,馀數(shù)為日。以入統(tǒng)以來歲數(shù)乘之,所得稱積策馀日,大馀即其整數(shù)部分(日數(shù))滿60除去后之馀數(shù),小馀即不足一日的日分?jǐn)?shù)。將冬至大馀加45(滿60仍除去),小馀加1010(滿1539除去,同時大馀加1),即次節(jié)立春大馀、小馀。依次可推出八節(jié)的大馀、小馀。

但《三統(tǒng)歷》的統(tǒng)法為1539,故小馀應(yīng)<1539。杜甫此文所給出的秋分小馀為2188,顯然與此不符。朱鶴齡校“二千”一作“三千”,仇注謂“二千”或作“一千”,都不可據(jù)。事實(shí)上,此數(shù)據(jù)并非依據(jù)《三統(tǒng)歷》,而是另有來歷。朱鶴齡曾認(rèn)為《有事于南郊賦》借漢言唐,所指為一行造《大衍歷》事。此文則提供了一個確實(shí)的證據(jù),證實(shí)了杜甫是依據(jù)《大衍歷》來進(jìn)行此次演算。以下就依據(jù)新舊《唐書·歷志》所載《開元大衍歷經(jīng)》“大衍步中朔第一”部分,對這兩個數(shù)據(jù)加以驗算。

《大衍歷》稱上元以來年數(shù)為積算,給出上元至開元十二年(724)積算為96961740算(年)。據(jù)此,上元至肅宗上元二年(761)的積算為96961777年。《大衍歷》所定通法(日分?jǐn)?shù),在《三統(tǒng)歷》中稱統(tǒng)法)為3040分,一回歸年所含日分共1110343分,稱策實(shí)。其算法的文字表述是:

推天正中氣,以策實(shí)乘入元距所求積算,命曰中積分。盈大衍通法得一,為積日。不盈者為小馀。爻數(shù)去積日,不盡日為大馀。數(shù)從甲子起算外,即所求年天正中氣冬至日及小馀也。

以策實(shí)乘積算為中積分,即上元到所求年天正冬至的總?cè)辗?。在此例中?/p>

96961777×1110343=107660830359511

以中積分除以通法3040,為積日:

107660830359511÷3040=35414746828.78651(日)

積日滿60(干支一周,《大衍歷》稱為爻數(shù))即除去,在此例中,積日/60的整數(shù)部分為590245780,所以冬至大、小馀為:

35414746828.78651(積日)-590245780×60

=35414746828.78651-35414746800

=28.78651

即大馀28,從甲子起算外,冬至為壬辰日。小馀為0.78651×3040=2390.9904(日分)。

下面求節(jié)氣大、小馀。其算法的文字表述是:

求次氣,因天正中氣大小馀,以三元之策及馀、秒加之。其秒盈象統(tǒng),從小馀。小馀滿大衍通法,從大馀。大馀滿爻數(shù),去之。命如前,即次氣恒日及馀、秒。

三元之策公式是:

三元之策,一十五;馀,六百六十四;秒,七。

即每一個節(jié)氣所含日數(shù)為。自冬至至秋分共18個節(jié)氣,以此年冬至小馀加18個節(jié)氣整日之外的馀數(shù):

2390.99+664×18=14348.24

滿3040為一日,除去(滿大衍通法,從大馀):

14348-3040×4=2188

即此年秋分小馀。冬至大馀加18個節(jié)氣整日數(shù),再加小馀滿通法4日:

28+15×18+4=302

滿60(爻數(shù))去之:

302-60×5=2

得大馀2。據(jù)此推算出的此年秋分在八月十三日丙寅。

以上據(jù)《大衍歷》演算結(jié)果,與杜甫給出的上元二年辛丑歲秋分大馀、小馀完全相合。當(dāng)然,步中朔、求干支在歷法中都屬于相對簡單、初步的運(yùn)算。其他步發(fā)斂術(shù)、步日躔術(shù)、步交會術(shù)、步五星術(shù)等內(nèi)容要復(fù)雜得多,更不用說一行《大衍歷》在歷法和中國數(shù)學(xué)史上有許多創(chuàng)新,是一般人難以掌握的。因此,不能據(jù)此文得出杜甫精通歷法的結(jié)論,但他曾研習(xí)此術(shù)并掌握一些基本的運(yùn)算方法,應(yīng)該是可信的。

值得玩味的是,杜甫為什么在此文中運(yùn)用這種在一般文章中極少見的記大馀、小馀方式?筆者查《全唐文》,只有張《龍筋鳳髓判》中有“二分二至,無虧余遂之蹤;大馀小馀,允葉容成之度”之語,也不過是借以泛言時刻。其他在提及節(jié)氣或時間時給出準(zhǔn)確的大馀、小馀數(shù)據(jù)的,一例也沒有。原因大概是,能夠真正掌握這種算法的人很少。一般歷書是查不到大馀、小馀數(shù)據(jù)的。杜甫又一次讓我們見識了他的出人意料之處。

要解釋這個問題,不能不聯(lián)想到寫作此文的時間背景。《新唐書·歷志三》記載:

至肅宗時,山人韓穎上言《大衍歷》或誤,帝疑之。以穎為太子宮門郎,直司天臺。又損益其術(shù),每節(jié)增二日,更名《至德歷》,起乾元元年用之,訖上元三年。

原來,杜甫寫作此文恰在行用《至德歷》期間。《至德歷》的具體內(nèi)容不詳,除去這條簡略記述外別無記載。據(jù)《唐會要》卷四二,頒韓穎所造新歷在乾元元年六月十七日。此月,杜甫恰好自朝內(nèi)外放華州司功參軍。唐代所行不同歷法所設(shè)的上元甲子積年及通法是不同的,這直接關(guān)系到各節(jié)氣小馀數(shù)字的計算。代宗時所行五紀(jì)歷,即恢復(fù)唐初麟德歷所用通法1340(見《新唐書·歷志五》),與《大衍歷》不同。這樣,在推算冬至或其他節(jié)氣時,小馀數(shù)也必然與《大衍歷》不同?!吨恋職v》所設(shè)通法與《大衍歷》是否相同,不得而知。按改歷的一般情況來看,應(yīng)該有所變化。此外還要考慮到,盡管當(dāng)時朝廷所頒《至德歷》也應(yīng)在蜀中實(shí)行,但其算法卻未必為眾人所知,而杜甫卻早在開元、天寶年間即研習(xí)過《大衍歷》。所以基本可以肯定,此文所作演算當(dāng)據(jù)《大衍歷》無疑。

那么,在朝廷行用《至德歷》背景下,使用《大衍歷》作此演算有何意義呢?我們在這里不必作太多的政治聯(lián)想,畢竟這只是一篇普通的應(yīng)景文字,但在文中直接給出大馀、小馀數(shù)確實(shí)不同尋常。大馀其實(shí)只是干支日的另一種表示,稍通歷法的人就可以據(jù)干支換算出大馀數(shù),或進(jìn)行相反計算,而且不管怎樣改歷,干支(大馀)都不會有變。但給出大馀數(shù)的結(jié)果是必然同時給出小馀數(shù),而小馀數(shù)則必須是經(jīng)過演算才能得出來的,是采用某一種歷法的確切表示。而且不通歷法的人,或者沒有經(jīng)過一番演算,根本就看不出這種表示的意義,不知道作者為何給出這兩個數(shù)據(jù)。這正是此文記述大馀、小馀數(shù)的深意所在。筆者認(rèn)為,這是杜甫表達(dá)他對開元盛世懷念的一種方式,與這一時期他的許多詩作的主題相通。而這種表達(dá)是專門寫給少數(shù)知音(唐興縣宰王潛或是其一?)以及內(nèi)行人士看的??上У氖牵捎跉v算之學(xué)太過專門,一般文人知之甚少,歷代注家竟然都沒有讀懂。

《傅璇琮先生八十壽慶論文集》,中華書局2012年

  1. 此詩《續(xù)古逸叢書》影印《宋本杜工部集》卷十六卷目有,正文缺。《錢注杜詩》在卷十五,上海古籍出版社1979年排印本,第557頁。
  2. 林繼中輯?!抖旁娳w次公先後解輯校》戊帙卷一,上海古籍出版社1994年,第874頁。
  3. 黃希、黃鶴《補(bǔ)注杜詩》卷三二,影印《四庫全書》本,第1069冊,第613頁。
  4. 王嗣奭《杜臆》,上海古籍出版社排印本1983年,第230頁。
  5. 朱鶴齡《杜工部詩集輯注》文集卷一,河北大學(xué)出版社2009年,第864頁。
  6. 仇兆鰲《杜詩詳注》卷二四,中華書局1979年,第2118頁。
  7. 《杜工部詩集輯注》,第879頁。
  8. 唐興縣即蜀州唐安縣?!对涂たh圖志》卷三一蜀州:“唐興縣,望。西北至州四十里。本漢江原縣地,后魏于此立犍為郡?!涞略暧趶U州置唐隆縣,屬益州,垂拱二年割入蜀州。先天元年以犯諱改為唐安,至德二年改為唐興縣?!毙屡f《唐書·地理志》蜀州唐安縣,皆未載其至德改名。舊注皆引東川遂州唐興縣,天寶元年改為蓬溪,謂此文及《逢唐興劉主簿弟》等詩沿舊稱,誤。
  9. 《杜詩詳注》卷二五,第2207頁。
  10. 楊倫《杜詩鏡銓》文集卷一,上海古籍出版社1981年,第1076頁。
  11. 《舊唐書·歷志三》作“九千六百六十六萬一千七百四十算”,誤。此據(jù)《新唐書》。
  12. 《舊唐書》卷三四《歷志三》,中華書局1975年,第1232頁。
  13. 《舊唐書》卷三四,第1232頁。
  14. 《舊唐書》卷三四,第1232頁。
  15. 參見張培瑜等《中國古代歷法》第八章大衍歷,中國科學(xué)技術(shù)出版社2008年,第487頁。
  16. 《全唐文》卷一七四《漏生夜睡不覺失明,天曉已后,仍少六刻不盡,鐘鼓既晚,官司失朝》,中華書局影印1982年,第1773頁。
  17. 專門討論歷法問題的不在此列,如傅仁均《對王孝通駁歷法議》(《全唐文》卷一三三)。元稹《景申秋八首》(《全唐詩》卷四一〇):“風(fēng)頭難著枕,病眼厭看書。無酒銷長夜,回?zé)粽招♀?。三元推廢王,九曜入乘除。廊廟應(yīng)多算,參差斡太虛?!笔窃姼柚袃H見用此語者。
  18. 《新唐書》卷二七《歷志三下》,中華書局1975年,第635頁。
  19. 朝廷所頒只能是日歷形式的歷書,算法必須另有專書?!缎绿茣に囄闹救窔v算類著錄《開元大衍歷》一卷、《寶應(yīng)五紀(jì)歷》四十卷、《建中正元?dú)v》二十八卷等皆是此類專書,但這類書必然流傳不廣。《至德歷》的算法書是否寫成,也不得而知。
  20. 《舊唐書·代宗紀(jì)》載:寶應(yīng)元年九月“甲午,秘書監(jiān)韓穎、中書舍人劉烜配流嶺表,尋賜死,坐狎昵李輔國也?!笔掠忠姟缎绿茣せ抡邆鳌贰臅r間上看,杜甫未必趕上與韓穎同朝處事。如果杜甫曾與聞其人,必是十分厭惡的。

上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號