正文 第2章 古四分曆解說——晚秦漢初曆法探原(1 / 3)

中國是世界文明發達最早的國家之一。古代中國的天文曆法曾經達到了很高的水平。西漢武帝時期行用《太初曆》,已經認識到對日、月、年進行係統地協調,並且也考慮到和日食的周期相配合。從此以後,各代曆法改革都有相當清楚的記錄,因此,可以較為容易地複製出太初以來二千多年的朔閏表。但對太初以前的製曆情況,過去雖然進行過許多研究,可是由於資料不足和曆法發展本身的複雜性,至今卻仍然無法得出令人完全滿意的結果。近年來,相繼出土了大量的秦漢簡牘,其中包含著不少有助於研究曆法的極為可貴的資料。這些資料給我們許多新啟示,使我們現在有可能對戰國秦漢間的曆法做一次新的研究,並複製出準確可靠的長曆表。這就是本文的宗旨。

一、《顓頊曆》的基本數據和曆元

西漢武帝太初元年(公元前104年)以前,行用的曆法叫做《顓頊曆》。漢初的《顓頊曆》是沿用的秦的曆法。“漢興,方綱紀大基,庶事草創,襲秦正朔。以北平侯張蒼言,用《顓頊曆》。”[1]由此可見,至少在戰國晚秦以後,《顓頊曆》曾經是每年製定曆譜的依據。

《顓頊曆》是古四分曆的一種。四分曆的得名是因為它把一年的長度規定為三百六十五日又四分之一日。為了使季節和年度協調,當時使用十九年七閏法。十九年七閏,在戰國中後期,已經是製曆者早就掌握了的規律。

由此,《顓頊曆》的兩項基本關係是:

一年(指回歸年,古稱歲實)為365日。

每年十二個月,十九年中增加七個閏月。

從這兩項基本關係出發,可以推演出以下幾個數據:

(1)十九年中共有:

19×12 7=235月

(2)一月(指朔望月,古稱朔策)有:

(3)每十九年(古稱一章)中共有:

(4)每四個十九年,即七十六年(古稱一蔀)有:

古代,每一種曆法都要從一個標準的時刻開始來編製曆譜。這個標準的時刻叫做曆元。清曆算家梅文鼎說:“造曆者必有起算之瑞,是謂曆元”,[2]正是這個意思。根據上麵得出的幾個數據,把某一個原始的標準點即曆元,作為“起算之端”,按照六十幹支的順序,就可以排列出來無限期的長曆表。

關於《顓頊曆》的曆元有種種相近但不相同的記載,其中以後漢蔡邕的說法最為明確可靠。蔡邕在《月令論》中說:“《顓頊曆術》曰:‘天元正月己巳朔旦立春。’”[3]這就是說《顓頊曆》的原始標準點是某一年的正月朔日(初一)半夜零時零分,恰為立春,這一天的幹支是己巳。按照“正月己巳朔旦立春”為曆元編製《顓頊曆》的長曆表,若幹年以後還會出現“正月己巳朔旦立春”,它的周期是一千五百二十年。這個循環周期是由十九年一章和七十六年一蔀積累而成的。

從曆元開始,經過十九年以後,也就等於經過二百三十五個月以後,新的一年的開始也正是新的月分的開始,立春和合朔在同一點上,因此每一章開始的每一天都是正月朔日立春。所以,十九年構成一個小循環周期。十九年共有日,有小餘四分之三日,立春合朔的時刻由前一章的半夜零時,移到了這一天的四分之三日,即十八時(今時,下同)。

每四章一蔀,共有27759日,沒有尾數。因此,每蔀的開始都是正月朔旦立春,即正月初一半夜零時零分合朔,又正好立春。所以七十六年構成一個中循環周期。但是曆元是己巳日,按照六十幹支的排列,經過一蔀以後,新的一蔀開始不再是己巳日。因27759日不能被60整除。它的關係是:

27759-n·60=39(設n=任意正整數,下同。)

這就是說第一蔀以己巳為蔀首日,第二蔀的蔀首日在幹支表上己巳以後的第39位,查幹支順序表為戊申。以此類推,經二十蔀,又為己巳。因此,構成“正月己巳朔旦立春”的大循環周期為:

76×20=1520年

由此可以知道,《顓頊曆》以“正月己巳朔旦立春”為曆元,可以排出1520年不同的朔閏表。1520年以後,周而複始,永無止期。[4]

以上所述是相對的時間概念,它能夠解決曆表的排列次序。但要複製出晚秦漢初行用過的曆表,還必須推求出絕對的時間概念。因此,《顓頊曆》的某一入蔀年究竟相當於曆史上的某一年,必須準確無誤,才能符合我們提出的要求。

據《新唐書·曆誌·大衍曆議》所述:“魯宣公十五年丁卯歲,《顓頊曆》第十三蔀首,與《麟德曆》俱以丁巳平旦立春,至始皇三十三年丁亥,凡三百八十歲,得《顓頊曆》壬申蔀首,是歲秦曆以壬申寅初立春。”[5]《新唐書·曆誌》的記載,把《顓頊曆》的排列次序和曆史年代結合起來,這就解決了絕對年代的問題。當然,這個完整的《顓頊曆》二十蔀循環周期,是把它的行用期上推下衍的結果。顯然,《顓頊曆》的開始實行絕不會早到公元前1506年。在戰國秦漢間,製曆者大約是從公元前366年甲寅蔀開始計算的。《淮南子·天文訓》就說:“凡二十紀一千五百二十年,大終,日月星辰複始甲寅元。”實際上,隻要絕對年代吻合,從這二十蔀的任何一點開始計算,其結果也都必然是相同的。為和《顓頊曆》行用期間接近,並結合曆史記載,本文即采用從甲寅蔀開始計算的方法。

上述的推論是依據可靠的曆史資料和基本的計算,自然不誤。前人的研究已認識到並采用過上述的方法。那麼,按理用這個方法排出長年曆表,應該和曆史上真正實行過的曆表一致,應該和曆史記載以及出土資料中的記日幹支符合。然而事出所料,簡單地用這個方法編製朔閏表,仍然會遇到許多難題,常常和已有的資料相矛盾。這是因為在《顓頊曆》行用的過程中,還有一些曲折複雜的情節。從來恢複《顓頊曆》的曆表沒有獲得完全成功的症結,正是因為對這個曲折複雜的情節認識不足的緣故。

山東臨沂銀雀山出土的《元光曆譜》[6]告訴我們,漢初的曆譜包括置閏、連大月、分至點(節氣)、歲首等項目。以下對這幾個項目分別進行討論,最後再根據研究的結果來編製長年曆表。

二、閏年設置法

《顓頊曆》歲實為日,朔策為日,每一年相當於十二個月還多一些:

這就是說,每年設十二個月,還有日的尾數[7],稱為大餘。為了使季節和年度相適應,平均二年多需要加一個閏月,加閏月的年度稱為閏年,為方便起見,我們稱這十九年的單位為閏章,以區別於前文所述十九年一章的朔章。在一個閏章中,閏年的安排有一定的規律,即:“三歲一閏,六歲二閏,九歲三閏,十一歲四閏,十四歲五閏,十七歲六閏,十九歲七閏。”[8]這就是說,在一個閏章中,第三、六、九、十一、十四、十七、十九年為閏年,因為在這七個年度大餘累積超過朔策。其餘則為平年,平年積餘小於朔策。

1,故凡積餘在日以上者,加本年大餘必然超過朔策,所以該年必置閏。

2、置閏以後大餘必在10日以下,故凡積餘在日以下者,即以十月為歲首的《顓頊曆》冬至在十一月十一日以前,上一年必定是閏年。

《顓頊曆》的歲實是以立春為標誌,即從第一年的立春到第二年的立春為一個回歸年。但置閏始終是以冬至為標誌,因為置閏的目的是為了調節季節,而隻有冬至是實測季節的標準時刻,其它節氣是由冬至推算出來的。閏章從十一月朔旦冬至開始計算,朔章從正月朔旦立春開始計算,兩者不可能始於同一年,這就使《顓頊曆》的置閏關係複雜化了。

另外,據《漢書·武帝紀》、《郊祀誌》記載,武帝元鼎五年(前112年)“十一月辛巳朔旦冬至”,據《漢書·武帝紀》、《律曆誌》記載,“武帝元封七年(前104年)十一月甲子朔旦冬至”。按表三所得第二項規律,這兩個年度的積餘為零,[13]小於日,可知這兩年的前一年必為閏年。因此,元鼎五年的前一年元鼎四年(前113年)和元封七年的前一年元封六年(前105年)都是閏年。合上表,共得十七個有絕對年代的置閏年。

因為每一個閏章中,閏年的次序是固定的,所以用已知的閏年可以推出其它閏章的未知的的閏年。公式如下:

已知閏年±n·19=閏年

按公式,前105年是已知閏年,那麼:

前105 1·19=前124年

前105 2·19=前143年

前105 3·19=前162年

前105 4·19=前181年

前105 5·19=前200年

……

據上麵的公式推算的結果,前124、143、162、181、200各年都應該是閏年。但是把這個推算的結果和表四所列的資料對照考察,可以發現是有矛盾的。據表四第五、第九項記載,前199、180年是閏年,推算結果前200、181年是閏年。如果兩者都對,那就出現了連續兩年置閏的情況,而這在當時是絕對不可能的。產生這個矛盾的原因是因為在前162年的時候,閏章有了改變。為了易於區別,我們稱改變前的閏章為第一式,改變後的閏章為第二式。除用前105年這個閏年,其它已知閏年推出的未知閏年都符合閏年排列的次序。

閏章和朔章相比較,第一式第十三年是朔章第一年,第二式第五年是朔章第一年。這個改變隻需把第一式第九年置閏改為第八年置閏就行了。具體說來,把原應在前161年的置閏提前一年,改在前162年置閏,就形成了改變閏章的結果。

何以在公元前162年發生改變閏章的現象呢?這是一個頗為費解的問題。原來這和漢文帝時期發生的關於製度改革的一場爭論大有關係。

漢朝初年,在製定法令製度方麵,張蒼曾起過不小的作用。他曾做過秦朝的柱下禦史,對秦的各項製度都很熟悉。張蒼本人對曆法也深有研究,沿用秦的《顓頊曆》就是他的主張,《漢書·張蒼傳讚》載“張蒼文好律曆,為漢名相,而專遵用秦之《顓頊曆》”。到了漢文帝十年四(前166年),有人提出“宜改正朔,服色上黃”,[14]用土德代替秦的水德,全麵改變製度。曆法家公孫臣便是激烈的倡導者之一。改曆之議,遭到張蒼的強烈反對。兩個曆法流派經過了幾年的論爭,公孫臣一派終於占了上風,到文帝十六年(前164年,)“召公孫臣以為博士,草立土德時曆製度,更元年。”[15]為了表示實行新的製度,文帝在前163年改元,次年即前162年提前一年置閏。這些顯然是公孫臣製定的新的“時曆製度”的內容。本來文帝是要大大改革一番的,但這個改革又因為別的原因沒有再搞下去,結果除了更元年和減朔餘25分(見下文)以外,就隻是在曆法方麵留下了改變閏章這個痕跡而已。

這是閏章改變的曆史背景。至於說在曆法史上,這一改革究竟有什麼意義,當然還需要做進一步的說明。張蒼是《顓頊曆》的擁護者,公孫臣反對張蒼,當屬於和《顓頊曆》相對立的另一個曆法家的派別。閏章第二式即是後來完整化的《殷曆》的閏章,可見公孫臣是屬於《殷曆》一派。《殷曆》也是古四分曆之一,歲實和朔策與《顓頊曆》並無差別。《殷曆》以十一月甲子朔旦冬至為曆元,這和《顓頊曆》以立春為曆元是不同的。在《顓頊曆》實行期間,由於閏章和朔章的交錯,實際存在著兩個曆法上的冬至,一個是《顓頊曆》以立春為標準計算出來的朔章的冬至,一個是作為置閏標準的閏章的冬至。閏章由第一式改為第二式以後,閏章的冬至便可以恒定在十一月了,但朔章的冬至便不能恒定在十一月。因此,閏章的改變在曆法史上意味著閏章的冬至和朔章的冬至爭奪恒定在十一月的位置,這也就意味著以十一月朔旦冬至為曆元的曆法要取代以正月朔旦立春為曆元的曆法,實即《殷曆》對《顓頊曆》進行的衝擊。這正是公孫臣和張蒼論爭的實際內容。根據《元光曆譜》來看,後來社會上通用的仍然是朔章的分至點(參看下文四),正是因為文帝中止了改革的緣故。這一次除了閏章的改變以外,公孫臣一派並沒有獲得更大的成績。但以十一月朔旦冬至為曆元畢竟是先進的和優越的,因而終於在武帝太初年間實行新曆時,成為《太初曆》的標準。