標籤:

歷術寶典《歷術甲子篇》解讀

     序  言

    司馬遷巨制《史記》中有一篇,也是唯一的一篇與眾不同的奇文。奇文之奇,除了滿紙數碼,用的全是行業術語之外,還夾著一組有音無義需要破譯的「密碼」。暴看起來這本書像數命玄書,又像不讓世人輕易破讀的武功秘籍。其書名曰:《歷術甲子篇》。 近世學者張汝舟苦守「二毋」書齋,潛心古代曆法,集成果於其遺著《二毋室古代曆法論叢》。張氏研究揭示:《歷術甲子篇》竟然是由司馬遷悉心、原貌、完整保存,幸得以留長傳遠的,屬於古四分曆的歷術寶典。張氏稱之為「遺世寶書」。 茲再為文,實因張氏遺著付梓之時,知識尚不被尊重,正如《西遊》借佛祖言:這「經」當日賤賣了。余曾一睹張氏文,心動怦然,經久縈懷。久之亦有參悟,希冀一吐為快。或以能繼承經世之絕學,宏揚國故精粹,引為快慰。本文立足點於容易為人忽視,且常不為見及之處,道鮮為道及之語,另涉及一些與名家定論相左的另見。

  從《殷歷》說起 中國傳統曆法中,對於「殷歷」從來就包含兩個不同的含意。其一是夏、商、周三代中屬於殷代使用的歷譜或是曆書。但是這樣的歷譜或是曆書至今尚未發現(寄希望於考古新發掘!);因為所有關於那一時期曆紀的史料雖然有一些,但只能算是由觀象留下來的授時記錄。另一則是由《漢書·律曆志》明確記載的《殷歷》。這是一份成文的曆書或是兼有歷譜性質的曆書。其書雖然現在已經失傳,但存於《漢書·律曆志》,由劉歆錄於其著作《三統曆譜》中,系統引用而且點明是《殷歷》的處所不少,其史料是極其珍貴的。研討先秦曆法,解讀《歷術甲子篇》奇文,必要求對其有一個較全面的了解。 先說《殷歷》書名的確有。據《漢書·律曆志》記載,漢武帝頒行《太初曆》以後二十七年的元鳳三年(西元前78年),太史令張壽王上書對《太初曆》發難。由於大多數參加者堅持「曆本之驗在於天」,由實踐檢驗《太初曆》頒行二十多年來(比其它曆書)更符合於天象,經過歷時三年的大討論,「是非堅定」,太史令張壽王以「下課」告終。在討論中,眾人提到張壽王持在手中的「乃太史官《殷歷》也。」說明先秦存於史官確實有一本名為《殷歷》的歷譜或曆書。 上書接著說:「至孝成之世,劉向總六歷,列是非,作《五紀論》。子劉歆究其微眇,作《三統曆》及《譜》以說《春秋》。」《三統曆·三統曆譜·世經》就是在總結太初制訂歷並法以「歷」帶「史」的一部大著作。 三統曆譜的一元歲為4617歲。一元歲分為三統歲。於是每統歲則為1539歲。為了適合太初元年(西元前104年)作為「本元歲」一元復始之年的要求,劉歆令距離西元前104年1539年的那一年,為上元歲的「孟統」即第三統的開端。又以19歲為一(閏)章之歲,即從104 +1539 = 前1643年為始,共編81章歲首子月朔日干支作為歷譜。 本文用序碼1-60與「六十甲子」的甲子至癸亥相對應。如:1表甲子,60表癸亥,等。用六十甲子順序數碼錶示的「孟統」譜的干支碼列於附表一:

     表一 《三統曆》孟統八十一章歲歷譜 21——60—40—20—60※⑴39—19—59— 39※⑵18—58—38—18※⑶57—37—17— 57※⑷36—16—46—36※⑸15—55—35— 15※⑹54—34—14—54※⑺33—13—53— 33※⑻12—52—32—12※⑼51—31—11— 51※⑽30—10—50—30※⑾09—49—29— 09※⑿48—28—08—48※⒀57—07—47— 27※⒁06—46—26—06※⒂45—25—05— 45※⒃24—04—44—24※⒄03—43—23— 03※⒅42—22—02—42※⒆21—01—41     — 21※⒇→入太初本元首章-01…(前104年:太初元年)。

表中數碼符※之後帶括弧的數字,是劉歆在其《三統曆譜· 世經》上附註的《殷歷》的「蔀」歲序,並且逐一標上了《殷歷》同一天的日干支。因為其干支碼正好是《三統曆譜》干支順序碼加「1」,所以可以省去再標的手續。也就等於由劉歆為後人留下了《殷歷》的一份同期歷譜表。從上面的數據中,將屬於《殷歷》的曆數,即每蔀歲首日干支和相應的西元年份,逐一摘出,可得另一專屬《殷歷》的曆數表,列於表二:

    表二 《殷歷》二十蔀歲首日干支表  ( 西元前年號·蔀歲序號 · 首月朔日干支)年號蔀序干支 年號蔀序干支 年號蔀序干支 年號蔀序干支 1567·01·01 1491·02·40 1415·03·19 1339·04·58 1263·05·37 1187·06·16 1111·07·55 1035·08·34 0959·09·13 0883·10·52 0807·11·31 0731·12·10 0655·13·49 0579·14·28 0503·15·07 0427·16·46 0351·17·25 0275·18·04 0199·19·43 0123·20·22

   由表二摘出的《殷歷》曆數列表,可以窺測出: 1、本蔀歲首日干支序碼,就是上一蔀歲首日的干支序碼加39之後除以60的餘數。用傳統的「六十甲子」表達方式可以敘述為:本蔀歲首日干支由上蔀歲首日干支往下推三十九位。 2、已知「古四分曆」蔀歲的日參數取為27759平太陽日。27759÷60=462…39。上面的結果變句話表述:古四分曆一蔀歲長462甲子另39日。兩者比較,可以看出《殷歷》推歷的根據與「古四分曆」一致,《殷歷》的歷算根據用的正是「古四分曆」。據此,可以初步認定:《殷歷》不是完成於殷代,也更不是殷代帝王使用的「時王之術」。因為在殷代,憑肉眼觀察天象,即或能夠達到如此的高精度,也沒有證據證明在一千多年的時間長度里,能同時達到與「古四分曆」規則如此合步的程度。 下一步,我們用現代的知識將《殷歷》數據距密近天象的程度,列出上面20個歷點的誤差(以天為單位)如附表三: 表三 《殷歷》二十個曆日歷點誤差  (單位:天) 01 -3.75, 02 -3.50, 03 -3.25, 04 -3.00, 05 -2.75, 06 -2.50, 07 -2.25, 08 -2.00, 09 -1.75, 10 -1.50, 11 -1.25, 12 -1.00, 13 -0.75, 14 -0.50, 15 -0.25, 16 ±0.00, 17 +0.25, 18 +0.50, 19 +0.75, 20 +1.00。

     如果用定朔概念來分析《殷歷》的誤差,其結果可能略有不同,但無關以下結論: 1、《殷歷》的誤差呈線性; 2、曆數與天象的誤差值,有,且只有一個交點。交點在《殷歷》第十六蔀蔀首,即西元前427年; 3、前於交點的誤差帶負號,後於交點的誤差則帶正號。 從上面說的三條關於誤差的「結論」,可作如下的分析:《殷歷》的誤差是有規律而不是呈零亂帶偶然性的。它與密近天象的冬朔時間有唯一的交點,說明這一時間極可能是《殷歷》文獻完成的年代,至少也是以此期間天象完成的著作;而其誤差呈前負而後正,則給予了《殷歷》正是完成於這一時期的充份證明。由以上分析,可以完全確定,借名殷代而實際完成並實施《殷歷》的時間當是在第十六蔀首歲的年代,合西元前427年。其時為周考王(前440—426)十四年。因此,可以肯定:《殷歷》是完成於戰國初年用於授時的中國第一部成文曆法文獻。

      一 《歷術甲子篇》曆數表 《歷術甲子篇》主文為時間長度一蔀歲,即76歲的歷算數據,含其每歲首月(夏曆歲前十一月)交朔和冬至的具體交節時分。今按現代的表述方式,譯其「曆數」列於表四:

   表四 《歷術甲子篇》甲子蔀曆數表

   序號 Ⅰ章歲 Ⅱ章歲 Ⅲ章歲 Ⅳ章歲 01— 01.000 40.705 20.470 60.235 02— 55.348 35.113 14.818 54.583 閏Ⅰ 49.696 29.461 09.226 48.931 04— 13.603 53.368 33.133 12.838 05— 08.011 47.716 27.481 07.246 閏Ⅱ 02.359 42.124 21.829 01.594 07— 26.266 06.031 45.736 25.501 08— 20.614 60.379 40.144 19.849 閏Ⅲ 15.022 54.727 34.492 14.257 10— 38.869 18.634 58.399 38.164 閏Ⅳ 33.277 13.042 52.747 32.512 12— 57.184 36.889 16.654 56.419 13— 51.532 31.297 11.062 50.767 閏Ⅴ 45.880 25.645 05.410 45.175 15— 09.787 49.552 29.317 09.082 16— 04.195 43.900 23.665 03.430 閏Ⅵ 58.543 38.308 18.073 57.778 18— 22.450 02.215 41.920 21.685 閏Ⅶ 16.798 56.563 36.328 16.093

    說 明 :

    1、上表共四章歲,每章歲1 9歲,每歲列其建子之月(夏曆歲前十一月)歷朔數一個。共7 6個數據,為一蔀歲的冬朔曆數表。表左示冬朔數在章歲中的序次。其中夾著帶「閏Ⅰ、閏Ⅱ、閏Ⅲ、閏Ⅳ、閏Ⅴ、閏Ⅵ、閏Ⅶ」示橫行四年都是該章歲的閏序之年,羅馬數字表其為一章歲中的第幾閏年。 2、每個數由兩部分合成:間隔點前面數1至6 0,為了整齊,1至9書為「0 1」、「0 2」…等,稱為「大余」;意思是日期的「余」數,即是以序數表示的朔日干支。對應於六十甲子順序。間隔點後面的數稱為「小余」,是以日9 4 0分為分母時的日分。中間的間隔點,也可以呼為「小數點」,但須記住,其「小數」是9 4 0進位的,在計算時,足9 4 0分,才向前「進」大餘1。 3、表上數字,為了照顧今人的閱讀習慣,除了將原書「六十甲子」的順序,依次如甲子「0」升為「1」,乙丑「1」升為「2」等之外,其餘數字與原書核對無誤。

    二 《歷術甲子篇》歷理為古四分曆 1、蔀策:由表四推《歷術甲子篇》「蔀策」:表上第一個數表示的是「甲子蔀」首日的日干支和交朔時分,為1. 000,即甲子日夜半子時零分。表上最末位,即序號17(閏Ⅶ)與縱行第Ⅳ章歲交點上數為16. 093,表示本蔀歲第76年首日於己卯日93分交朔。若能推出這一年的下一年的同月交朔日時,則本蔀歲76年的天數也就推出來了。 本蔀歲末年在章歲的第七閏上,是值閏年。這一年有多少天?表四序號1 1(閏Ⅳ)與縱行第 Ⅱ 章歲交點上的曆數13.042,以此作對比參照。查13.042數的下一年為36.889,以36.889-13.042 = 23. 847。借用此數與前述16. 093相加,則得知甲子蔀下一蔀歲交朔首日為40. 000。本結果與表二對照,(01/1567· 01;0 2/1491 · 4 0;)可得《歷術甲子篇》蔀策,一蔀歲循環462甲子零3 9日,即蔀策為6 0×4 6 2+39 = 2 7 7 5 9天。 2、年策 :《歷術甲子篇》「蔀策」既為27759天,以7 6除之,可得年策為3 6 5 . 2 5天。 3、月策:因為一蔀歲含正(正副的正)月1 2×7 6=9 1 2(月),另外,加上四章(閏)歲7×4=2 8(閏月),相加可得一蔀歲有9 1 2 + 2 8 = 9 4 0(月)。以9 4 0除以其天數27759(天),得月策為2 9. 4 9 9天(2 9 . 4 9 9/9 4 0天)。 4、日分:為了便於推歷計算,日分數以9 4 0為分母;也就是說,古歷家在《歷術甲子篇》中的「陰曆」部份,是以日分為9 4 0分為日分量「小余」的計量單位。由以上四個推算結果可知,保存於司馬遷《史記》中的奇文《歷術甲子篇》和《殷歷》同是以西元前4 2 7年實際天象的數據完成的,是同一曆法文獻的不同用途的兩份文件。其歷理同為古四分曆,《歷術甲子篇》為歷術的數表,《殷歷》為歷譜和用於授時的曆書。三者一體,互為里表。 以上引出研討的只是《歷術甲子篇》一半「歷術數」,只屬於古四分曆的「陰曆」部分。其另一半數據為同歲冬至的日干支和交節的日分量,是古四分曆的「陽曆」部份。古四分曆的歷理認定,每章歲的歲首,冬至與交朔不但同日,而且同時,稱為「朔旦至」。粗略計之,一章歲首為甲子日的子時;二章歲首為癸卯日的酉時;三章歲首為癸未日的午時;四章歲首為癸亥日的卯時。精確表示則依次為0 1. 0 0;4 0 . 2 4;2 0. 1 6;6 0. 0 8。請注意,這兒的「小余」即冬至交節的日分量是以3 2為分母的。來源於一歲有二十四節氣,其兩個節氣間的平氣間距為:365.25÷2 4 = 1 5日7/3 2分。由此可知,古四分曆的日分量是以9 4 0為分量還是以3 2為分量,完全出於方便於實際計算的需要。由上也知,按古四分曆安排,歲中每個中氣的「氣距」為30. 14/3 2天,而且從章歲首日往下,每加冬至數5天另8/3 2日分,即依次可得其每一歲的冬至交節日干支和交節日分。是個定數,因此,表上從略。 古四分曆大於年的時間單位有章、蔀、紀、元。以1 9歲為一章歲,因為1 9年安排7閏,以1 9年為一閏輪往複循環,所以又稱之為「閏章之歲」。四章歲為一蔀歲。蔀策27759日,為古四分曆的基礎。以下以20蔀歲為一紀歲。一紀歲為1520歲。再以三紀歲為一元歲。一元歲4560歲,等於56400朔望月,等於1665540天,以上三數,都沒有日分量,而且都是6 0甲子的倍數。因此,按古四分曆的推算,設由甲子年甲子月甲子日甲子時起始,經過一元歲即歷4560歲之後,將仍復回到以上的甲子年甲子月甲子日甲子時,說明古四分曆是自圓其說的,故有「一元復始」的說法。《殷歷》是從甲寅年甲子月甲子日甲子時開始,(西元前1567年歲前十一月朔日甲子夜半子時),所以《殷歷》和《歷術甲子篇》都稱之為「甲寅元」。按以上說法,要到西元2994年,才是舊一元歲的一元復始之年!

    三 用《歷術甲子篇》數據推歷 中華文明積累的知識成果,向例看重師承授受。在處理文字書寫不便,或是為了保護成果利益的需要,往往將其精髓真諦留在心志口說,傳承點化。中華曆法自傳說中的黃帝以降,分出部份人「勤勞心力耳目」(司馬遷語)以來,即有家世相傳的「疇人」「咸正曆紀」,也就是歷人以職業世襲。保存於《史記》中的《歷術甲子篇》,就明顯有上面所說的特色,至少不是一篇完整的「論文」;因既稱為「歷術」,卻只有一份完整數據,而缺「術要」,也就是沒有具體使用數據的方法。不過,老祖宗(我猜想流落民間的歷家落下閎功居第一,司馬遷功並列第一!)既將一份數據完整地傳了下來,今人就憑這張完整的數據,不難全數破讀開來。張汝舟氏即作了全文破譯。茲再重述,亦加新得: (一)蔀 法表四數據中的「小余」,7 6年周而復始,即間隔號後面的小數部份是過了7 6年再重複使用的。說起來,該曆數表有點像三角函數表只列角度9 0度以內而通用於任意角一樣。但其「大余」數,即曆數的整數部份,卻只適用於其「甲子蔀」,所以文題《歷術甲子篇》。若這麼一份表,只能適用於一「蔀」歲,又何得稱為「歷術」?既要通行於推歷,先得知「蔀法」。蔀法其實非常簡捷。對錶二的《殷歷》數據分析為:「本蔀歲首日干支由上一歲首日干支往下推三十九位」即得;此數「39」,為定數。若需將表四的數表用於哪一蔀一年限,只需將該蔀首日干支減去1遍加在表四的所有大餘數上,就成了新的蔀歲的歷算數表。 例題1 試編西元前199—前124年歷朔數表? 查此年限屬於表二中的第1 9蔀,數為「1 9/0 19 9·4 3」,知其首日干支為丙午(4 3)。由4 3 - 1=4 2,知4 2為丙午蔀的「蔀餘數」。將表四的「大餘數」通加4 2,則可得第1 9蔀7 6年的曆數了。(參見文後附件一的歷表4) 下附蔀法歌訣一首,以助記憶。 蔀策二七七五九,朔、至夜半逢蔀首。紀首起歷甲子一,蔀 尾 壬寅三十九。三九定數立蔀余,首 余 相加往下走。一元三紀六十蔀,一 元 復始重頭數。 (二)月 法 設本月曆朔數為R0  ,推下一個月的曆數R1 ,可由下式表示: R1=R0 + 29.499 僅須注意,此曆數的「整數」是用60循環制,而「小數」採用的是940進位制,就可以方便地進入程式了。 ● 今人學古人進行歷算「推步」,仍然「遵古炮製」,要分三步「走」:1)、先看本月交朔日分的時間,並且要先以日分441分界定本月月大還是月小。2)、若本月交朔的日分不足441分,確定本月為月小,只有29天。推步時,則「大余」加29,小余加499分,得數為下一個月的交朔日的曆數。3)、若本月交朔的日分等於或大於441分,確定本月月大,有30天。推步時,大余加30 (即朔日干支往下移30位 ),小余則減 441分,得數亦為下一個月的曆數 。上面己 「走完了」 三推步 ,還得再加一個 4)、頗費唇舌來詳細解說為什麼要用441分來「規定」為月大30天和月小29天的「界限」?用文字來解說,左想右想也只好一邊執行,一邊領悟。 引入的進位概念,使用上面公式,不必先看本月交朔「小余」的日分,判定本月有多少天,「推步」程式化,計算一步到位。理由簡明。至於本月有多少天,對照先後兩個月的朔日干支,就一目了然了。 由於月平均曆日只29天半(29日470日分),與月策相較,餘29分;因此每積十五個月左右,積分夠半日,其月將連著兩個月月30日,稱之為「連大月」。例如某月曆朔數小余等於或大於882分時,比如正好是882日分:第一次加日分499分,得1381分,日分進位以後成為1.441。下個月的日干支加29再加1,也就是向後推移了三十位,本月該月大。餘下的日分441分,加499分,進第三個月,得940分,進位後就成為1.000。如是第三個月的日干支加29再加1,也同樣向後移三十位,第二個月也連著月大。就造成了兩個月月大的「連大月」的條件了。按古四分曆歷理,有兩個月連著30天之後,不可能連著再次出現第三次30天。這是古四分曆與定朔定月大與月小最大的區別之一。進一步分析上面提供的公式,還可以肯定一條:古四分曆不會連著有兩個月都是29天的機會。這也是與定朔定月大與月小的區別。 今人對古歷有兩個誤會。其一是以為古歷月大月小相間,往複循環;其二是因古歷以大餘29日小餘499分為月策,以為這就是月大或月小的「標準」。由上分析知其否。再則,有一個古人大概也不甚明確交待的「模糊數」:這「小余」數如果是「0」,這「零點」的時間是置於夜半十一時,還是十二時?以今之世人(包括對漢文化有興趣的外國人)咸以午夜十二時為0點,今歷也以此為標準定交朔、交節的日期。古人「子時」,包括甲子、丙子、戊子、庚子、壬子五個子時,當都是從今人標準的夜半十一時開始的。 還有一個連歷家們也不甚瞭然的詞義:即「朔旦冬至」一語,歷家們也多以「朔旦」為日出生光之時為日之始。就用古四分曆的曆數核之,當以甲子0分時刻為宜。至於古四分曆理論未確立之前,古人以「何時為日之始?」則又當別論! 下附月法歌訣,作玩味消遣。 日法九百四十分,月策四百九十九。大余月加二九日,小余月加四九九。兩月相加五八日,歷月余分二十九。積足余分連大月,推十五月知其有。 例題2 試以上面交待的月法推漢惠帝元年(前194年)的月朔歷譜? 分析:由附件一表4(丙午蔀)查西元前194年為丙午蔀第一章歲的第六年,表上第一欄與「閏Ⅱ」交點上,得其曆法首月(夏正歲前十一月)曆數為4 4. 3 5 9。漢初用秦歷,以夏正十月為歲首,但月名仍為十月、十一月不變。其時閏月均排在其歲末,稱「後九月」。因此本題只推月朔,不涉及「閏法」。為合「漢歷」,需用44.359先反推出其年十月的歷朔數,為44.359-30.000+0.441 = 14.800. 有了漢惠帝元年十月的歷朔數14.800,可以依「月訣」排表如下: 十月/14.800(丁丑);十一/44.359(丁未);十二/13.858(丙子);一月/43.417(丙午);二月/12.916(乙亥);三月/42.475(乙巳);四月/12.034(乙亥);五月/41.533(甲辰);六月/11.092(甲戌);七月/40.591(癸卯);八月/10.150(癸酉);九月/39.649(壬寅);後九/09.268(壬申)。 十三個月月大月小依次為:大、小、大、小、大、大、小、大、小、大、小、大、小。本年二月12. 916(乙亥)、三月42. 475(乙巳),由916 - 441 = 475 得來。二月朔乙亥,三月朔乙巳,四月朔乙亥,連著二、三兩個月都有30天,故本年二、三月為連大月。 上推與江陵張家山新出土竹簡載漢惠帝元年「八月癸酉朔」,「九月壬寅朔」,「後九月壬申朔」一致。 (三) 閏 法 推閏法以劉歆說的較簡捷。他的說法是,從章首歲始,歲給「閏分」7分,歲初積閏分12分及以上,本歲值「閏」;月閏分為7÷1 2 = 0. 5 8 3…分,加上歲初的「閏分」,滿1 9分後安排閏月。這是曆法置閏於「沒有中氣月份」的開始。按上面的辦法,可以逐一排出章歲序的第三、六、九、十一、十四、十七、十九共七個年份為值閏年,如表四和表六。此結果與用古四分曆理詳推的閏月值閏年份一致。故從略。為節省文字,下續閏法歌訣,供詳參: 七閏十九成章歲,三六九一四七九。歲給閏余加七分,十九排閏銷十九。當值閏年閏何月?十二除七補差數。若問閏年多少天?九十三分看曆數。
推薦閱讀:

後457時代如何轉永居? 457 移民三大途徑傾囊解讀,不得不看!
《明通賦》解讀(三)
房市解讀(23):資料及印象碎片無助分析問題│脫苦海
女命訣解讀(二)
解讀:為什麼越來越多的老夫少妻

TAG:解讀 |