摘要:從觀象授時發(fā)展到推步制歷的漫長歲月中存在一種過渡形態(tài)的歷法。本文以《史記·龜策列傳》宋元王占夢為線索,以眾多出土文獻和傳世文獻為依據(jù),通過大六壬“日在加時”占法的追溯,挖掘出觀象授時歷向推步歷過渡的形態(tài)——“月宿歷”,并重新解讀了《龜策列傳》,糾正了錢大昕等先賢的錯誤。
關(guān)鍵詞:月宿歷? 日在加時? 龜策列傳? 夢占
作者冉景中,中央民族大學(xué)道教與數(shù)術(shù)學(xué)研究中心研究員、哲學(xué)博士(北京? ?100081)。
學(xué)界一致認(rèn)為推步歷的前身是觀象授時歷,觀象授時的方法在《尚書·堯典》中有詳細(xì)介紹,推步歷即后來的四分歷及其各種變形,如古六歷、太初歷、三統(tǒng)歷等。而從觀象授時到推步制歷有一個漫長的過渡期,其間是否存在一種中間形態(tài)的歷法呢?筆者發(fā)現(xiàn)答案隱藏在數(shù)術(shù)文獻中,先來看看《史記·龜策列傳》記載的一例神奇的夢占:
宋元王二年,江使神龜使于河……夜半,龜來見夢于宋元王……元王惕然而悟。乃召博士衛(wèi)平而問之……衛(wèi)平乃援式而起,仰天而視月之光,觀斗所指,定日處鄉(xiāng)……乃對元王曰:“今昔壬子,宿在牽?!瓭h正南北……南風(fēng)新至……斗柄指日,使者當(dāng)囚?!?/p>
文中的占法該如何解釋?學(xué)者看法不一。
清代大儒錢大昕說:“此遁甲式也。日在牽牛,冬至之侯,蓋冬至后壬子日,庚子時?!鼻迦藦埼幕⒄J(rèn)為是六壬式,也認(rèn)為時間在冬至之后。嚴(yán)敦杰先生也認(rèn)為是六壬式,“觀斗所指,定日處鄉(xiāng)”是定十二神將,這是六壬式子時丑將(冬至后)。觀點與張氏相近。
判斷為六壬式是對的,但是三位先生都將式占的時間定為冬至后子月,這值得商榷。如果夢占發(fā)生在冬至?xí)r節(jié),烏龜已經(jīng)冬眠;就算神龜不冬眠,但是彼時黃河結(jié)冰深厚,萬物蕭條,漁民一般處于修漁期;即使一定要打魚,也不大可能在又冷又黑的半夜時分去做這樣的事。然而占文中明確寫道“宿在牽牛”,其時不在冬至又在何時?除非其含義并不是“日在牽?!薄?磥泶颂幋笥形恼?,本文試圖作一番深究,就從大六壬的基本占法“日在加時”之月將說起吧。
一、月將與日躔 [見英文版第18頁,下同]
何謂“日在加時”?“日在”即日躔,指太陽的視運動在一個回歸年沿黃道逆時針繞行,經(jīng)過二十四節(jié)氣時的位置?!皶r”即時辰,指太陽每天東升西落,它經(jīng)過某個地平方位所對應(yīng)的時間。在大六壬占法中,日躔用天盤表示,時辰用地盤表示。在某個確定的時間,太陽在天盤上有一個確定的位置,在地盤上也有一個確定的位置,旋轉(zhuǎn)天盤,使這兩個位置相重疊,得到的時空組合便是“日在加時”。
六壬式占管日躔區(qū)間叫月將,按照二十四節(jié)氣起止點不同分成十二位,分別叫作徵明、天魁、從魁、傳送、小吉、勝光、太乙、天罡、太沖、功曹、大吉、神后。
根據(jù)北宋司天監(jiān)官員、天文學(xué)家楊惟德撰寫的《景祐六壬神定經(jīng)》有關(guān)章節(jié)《釋月將》《釋璧度》《釋日度》的記載,可以知道至少在西漢末東漢初,大六壬十二月將是以立春、驚蟄、清明、立夏、芒種等十二節(jié)為起止點的,對應(yīng)的星次以《三統(tǒng)歷》為準(zhǔn)。筆者將相關(guān)信息整理如表1所示。
現(xiàn)今出土的一件東漢初年的六壬式盤恰好可以印證這一結(jié)論。
其天盤和地盤的外圍環(huán)繞二十八宿,二十八宿的外圍都刻有小圓點,嚴(yán)敦杰先生認(rèn)為大約都是182個,一點代表2度,即相當(dāng)于365.25度。天盤中心是北斗,斗杓指天罡次列十二神將(月將)。十二神將的名字以及對應(yīng)的星宿名稱基本可辨,現(xiàn)在整理如表2所示。
式盤上的月將位置正好位于《三統(tǒng)歷》十二次起止度數(shù)的中間,順序無誤,名稱略有差異,天罡、徵明、天魁、太乙在式盤上分別為天岡、登明、魁、太一。這應(yīng)該是流傳過程中的通假字、異體字或者避諱字,本質(zhì)上并無不同。顯然,出土實物的形制與傳世文獻的記載以及它們曾經(jīng)流行的時代若合符契,可證楊惟德所言不虛。
事實上,在那個時代斗柄所建(月建)與日躔星次的這種對應(yīng)關(guān)系便是傳統(tǒng)術(shù)數(shù)學(xué)地支六合原理之所在,如表1第二列、第三列所示:子丑、寅亥、卯戌、辰酉、巳申、午未六組地支相合,簡稱“六合”。
今天的學(xué)者大概誤認(rèn)為大六壬的十二月將有兩種排法。李學(xué)勤先生認(rèn)為這是兩種次第顛倒的十二神排列。李零先生說:“上述各例中的十二神都是以徵明(正月)主亥,同于《五行大義·論諸神》引《玄女拭經(jīng)》,但《景祐六壬神定經(jīng)·釋月將》引《金匱經(jīng)》卻是徵明主寅。前者沿用秦正,而后者是漢武帝以后改的正朔,則為后世六壬家所本?!崩顚W(xué)勤先生的說法比較含糊,而李零先生的解釋就錯得很遠(yuǎn)了。兩位先生著述甚豐,后學(xué)獲益匪淺。但是對于他們在個別地方的不當(dāng)見解,筆者大膽指出,以防止錯誤繼續(xù)擴散。
二、西漢“六壬”式盤“月將”之考查 [20]
出土的六壬式盤中最古老的一件是西漢初年的,如圖2所示。其形制與前面介紹的東漢初六壬式盤基本相同,但是天盤上沒有十二月將的名稱,只在相關(guān)星宿上逆時針列了“正”“二”“三”等十二個數(shù)字。嚴(yán)敦杰先生研究認(rèn)為十二月將的名稱出現(xiàn)在西漢末或稍前。其說可從。
式盤上數(shù)字與星宿的對應(yīng)關(guān)系清晰可見,整理如表3所示。這十二個數(shù)字顯然是指月份,很像是朔望月。通過上一節(jié)的討論我們知道十二月將的演算是以二十四節(jié)氣為基礎(chǔ)的。但是,西漢式盤上的月份究竟是朔望月還是節(jié)氣月呢?這個問題涉及西漢時期大六壬月將的運算規(guī)則,也為我們研究早期歷法提供了線索,需要認(rèn)真做一番考證。
筆者在傳世文獻和出土文獻中尋找,發(fā)現(xiàn)支持朔望月的證據(jù)似乎更多。
宋代壬占大家邵彥和著《大六壬斷案》記有一則案例,收入清人程樹勛輯錄的《壬占匯選》中:
庚辰年浙江大旱,八月癸丑日辰將辰時占雨澤……
邵彥和曰:“……太陰,月宿,十五日在戌,十六、十七日在酉,乃是月宿離于畢,畢在酉宮也?!迷滤薜浇袢眨磁R在酉,則是月離于畢也?!?/p>
這里的“太陰,月宿,十五日在戌,十六、十七日在酉,乃是月宿離于畢,畢在酉宮也”,顯然是一種以月亮運行到二十八宿的某個位置來占卜吉兇的方法,本文將其稱之為“月宿占法”,將其運算的基礎(chǔ)稱為“月宿歷法”。
如何計算月宿呢?唐代《大六壬心鏡》卷三《二煩課》(以下簡稱《心鏡》)說:“正月室,二月奎,三月胃,四月畢,五月參,六月鬼,七月張,八月角,九月氐,十月心,十一月斗,十二月虛?!敝该吭滤匪蕖S终f“每月初一日移宿起,加值奎井張翼,氐宿,皆留一日”,指出計算月宿的方法:從朔宿開始按日順數(shù),遇到奎、井、張、翼、氐宿,則重復(fù)一日。
更早期的大六壬經(jīng)典《黃帝龍首經(jīng)·占月宿何星法》(以下簡稱《龍首經(jīng)》)明確規(guī)定每月朔日所在之宿,正月室,二月奎,三月胃,四月畢,五月井,六月柳,七月張,八月角,九月氐,十月心,十一月斗,十二月女,與西漢六壬式盤上的標(biāo)記完全相同。此處還規(guī)定閏月的朔日為宿后一宿,比如正月朔在營室,那么閏正月朔在營室后一宿壁,但沒有“加值奎井張翼,氐宿,皆留一日”的說法。
近年出土的戰(zhàn)國、秦漢間的簡帛上也有很多類似的記載,比如睡虎地秦簡甲種《除篇》、乙種《官篇》、隨州孔家坡漢簡《星官篇》、九店楚簡《日書》等等(以下依次簡稱為《睡甲除》《睡甲星》《睡乙官》《孔簡星官》《九店日書》)。學(xué)者們認(rèn)為這是一種“二十八宿紀(jì)日法”,劉樂賢先生對此做了概括總結(jié),并認(rèn)為:“大概古代的日躔記錄廣為人知,日者在選定哪些星宿作為各月的朔宿時,很可能沿用了這些日躔紀(jì)錄?!保üP者案:實際情況要復(fù)雜得多)孔慶典則認(rèn)為:“二十八宿紀(jì)日由實際天文歷法而來,但歲差的作用會導(dǎo)致實際日躔漸漸偏離各月值宿。這大概就是二十八宿紀(jì)日最終成為選擇術(shù)的原因之一。”(筆者案:二十八宿紀(jì)日來源于早期精度比較粗疏的月宿歷,后來在此基礎(chǔ)上形成一種占法,與歲差無關(guān))
值得一提的是,《九店日書》明確有“朔于”二字,原文殘缺,劉樂賢將其中楚月名轉(zhuǎn)換成秦月名并將缺文補釋完全,整理為:正月朔于營室,二月奎,三月胃,四月畢,五月東井,六月柳,七月張,八月角,九月氐,十月心,十一月斗,十二月須女。
現(xiàn)將以上文獻中月份及星宿對應(yīng)的情況詳列如表4所示。
以上羅列的這些證據(jù)似乎都在指認(rèn)一件事實,那便是:西漢初六壬式盤上“正、二、三……十二”這十二個數(shù)字指的是朔望月,每個數(shù)字對應(yīng)的宿名為當(dāng)月朔日所在之星宿。
不過,支持節(jié)氣月的證據(jù)也有,最具分量的有三條。
一是學(xué)界普遍認(rèn)為二十四節(jié)氣在戰(zhàn)國時期已經(jīng)形成,這從側(cè)面說明,以當(dāng)時的天文觀測技術(shù),比較精確地確定日躔并非困難的事。事實上,古人通過觀察昏旦中星或者觀察偕日升和偕日落的星辰來推算日躔的歷史相當(dāng)悠久,筆者曾經(jīng)討論過,至少7500年前的先民就已經(jīng)懂得冬至前后日躔奎宿。
在《禮記·月令》中有每月日躔及昏旦中星的完整記載,如:“孟春之月,日在營室,昏參中,旦尾中……仲春之月,日在奎,昏弧中,旦建星中……”這里孟春、仲春、季春等等顯然是指節(jié)氣月,每月日躔與西漢初六壬式盤所記基本相同。不同之處在于《月令》孟秋之月日在翼,季秋之月日在房,孟冬之月日在尾,而式盤上相應(yīng)的月份分別標(biāo)注在張宿、氐宿、心宿之上。歲差使冬至點逐年西退,則顯然《月令》所記日躔的年代比西漢式盤要早,其觀測年代最遲在戰(zhàn)國晚期是可以肯定的?!秴问洗呵铩なo(jì)》也有類似記載。
第二條理由是,與西漢六壬式盤同時出土的還有一個觀測天象的儀器,上有二十八宿距度(見圖3)。我們知道中國古人以太陽沿黃道運行一周為365又1/4度,每天行1度。這個儀器以實物形式展示了當(dāng)時的天文測量已經(jīng)達(dá)到了以日躔來確定二十八宿度數(shù)的水平。把這兩件同墓出土的物件放在一起比較,我們當(dāng)然會首先考慮式盤上的數(shù)字是指節(jié)氣月。
放馬灘秦簡也有月份與日躔星度相配的實物記載。
角十二,亢十二:□□八月;
氐十一,房十:□□九月;
心十一、十二,尾九,箕十:? 十月;
斗二十二,?!骸酢跏辉?
婺女……,虛十四:□□十二月;
?!瑺I室……,東壁……:正月;
奎十五,婁十三:□□二月;
胃十四、十三,昴十五:□三月;
畢十五,觜巂六,參九:□四月;
東井……,輿鬼……:□五月;
柳……,七星十三:□□六月;
張十三,翼十三,軫十五:□七月。
這個材料充分證明在那個時代可以用朔望月的月序來表示節(jié)氣月。
第三條理由是,如果西漢六壬式盤上標(biāo)注的月份是朔望月,怎么保證歷年歷月的朔日能夠固定在某宿上呢?筆者按照四分歷十九年七閏的編制規(guī)則對秦歷(閏月為后九月)做了簡單推算,結(jié)果表明,某月的朔日并不能固定在某宿,前后跨越了30度。其實古人早已論述過這個道理。《后漢書·律歷志》引《月令章句》:“孟春以立春為節(jié),驚蟄為中。中必在其月,節(jié)不必在其月。據(jù)孟春之驚蟄在十六日以后,立春在正月;驚蟄在十五日以前,立春在往年十二月?!睂O希旦撰《禮記集解》:“然朔日有定,而節(jié)氣先后不同,則合朔所在不可定指為何宮何宿。以正月言之,如立春在朔日以前,日月固會于亥宮矣。如在二日以后,則合朔仍在前宮玄枵之次,固《記》(指《禮記》,筆者注)不言辰但言日也。”
以上三條理由可以證明西漢式盤上的月份是指節(jié)氣月而非朔望月,這是以節(jié)氣月為基礎(chǔ)的“日在加時”占法。彼時雖然沒有形成十二月將的名稱,但是其內(nèi)核已經(jīng)具備了。
正反雙方的證據(jù)旗鼓相當(dāng),反復(fù)考量之后筆者判斷西漢六壬式盤上的月序既是朔望月,也是節(jié)氣月;進一步說,西漢太初改歷之前存在一種月宿歷法,其朔宿即是該節(jié)氣之日躔,由月宿可知朔宿,由朔宿可知月序,若某月朔宿度數(shù)提前該節(jié)氣之日躔超過一定限度則置閏,顯然這種閏法既不是無中氣置閏也不是后九月置閏。
三、先秦歷法演變概況 [21]
先民通過立表測影和觀察星象,知道了一個回歸年(太陽年)大約366天;通過觀察月亮的圓缺,知道了一個月是29至30天,一個太陰年大約355天,太陽年與太陰年相差大約10至11天。當(dāng)四個仲月來臨之時,在黃昏觀測南中天,如果發(fā)現(xiàn)當(dāng)月所對應(yīng)的中星(鳥、火、虛、昴)明顯落后,則設(shè)置一個閏月,以使星象和歷法相符?!渡袝虻洹罚骸叭罩行区B,以殷仲春……日永星火,以正仲夏……宵中星虛,以殷仲秋……日短星昴,以正仲冬……期三百有六旬有六日,以閏月定四時,成歲?!边@段話生動地記載了先民觀象授時的方法,其粗疏是難以想象的。
至殷商,殷歷尚處于觀象制歷向推步歷法過渡的階段,此時紀(jì)日以干支,紀(jì)月以朔望,紀(jì)年以四氣,年分平閏,月有大小,閏法的創(chuàng)制以端正四氣為原則;至西周,其歷法是在殷歷的基礎(chǔ)上發(fā)展起來的陰陽合歷,在根本上與殷歷并無不同。但是,周代歷法獨重月相,這一點與殷歷明顯不同。
這些月相的名稱有旁死霸、哉死霸、既死霸、旁生霸、生霸、既生霸、既望等等。圍繞這些名稱的含義,產(chǎn)生了月相四分說、月相定點說,筆者認(rèn)為后者更符合實際。但是,月相與歷日(初一朔、初三朏、十五望、月末晦等等)如何對應(yīng),學(xué)者的觀點并不統(tǒng)一。
另外,殷商和西周早期的歷法,月首為“朔”還是“朏”呢?馮時先生根據(jù)殷商乙酉月食之年一至八月的歷譜分析,認(rèn)為殷歷的歷月只能始于朔而不始于朏,殷歷和西周早期的歷法都以朔為月首,可能是通過觀察殘月和新月而取其中間的時刻而得到的。顯然,這種方法認(rèn)識的朔與現(xiàn)代天文學(xué)意義上的朔并不具有相同的概念,后者是指日月黃經(jīng)差為零的時刻,這一現(xiàn)象顯然無法看到,只能靠推步獲得。然而當(dāng)時的推步歷并不精確,月首與實朔之間誤差一兩天并不奇怪。
對春秋時代的魯歷,張培瑜先生通過對《春秋經(jīng)》記載的37次日食的研究,認(rèn)為有32次屬于觀測實錄,并得出“魯國歷法月相完全合天,步朔相當(dāng)準(zhǔn)確”的結(jié)論。張先生認(rèn)為:“春秋時期,由觀象授時發(fā)展到先期推步制定歷法的階段還為時不久,尚未形成如古六歷、三統(tǒng)歷、四分歷等完整統(tǒng)一的年月日朔閏氣的嚴(yán)格推步體系。斯時日至測量還不夠準(zhǔn)確,閏月設(shè)置尚欠規(guī)范。因此相應(yīng)的歲首建正并非十分固定?!贝呵镌缙跉q首基本建丑,但是到魯成公以后就大致建子了。大約在公元前七世紀(jì)中后期的魯僖公、文公時代基本上掌握了十九年七閏的章法,在能夠比較準(zhǔn)確的測定日至的日期后,就有意識地以含冬至之月作為歲首。不過,春秋魯國后期的歷法設(shè)置閏月還有一定的隨意性,有超過十分之一的年份歲首有一個月的出入。可能是日至測影還不夠精密,且不能排除氣候、氣象等因素。到戰(zhàn)國時期,學(xué)者已經(jīng)掌握了日躔月離的推步,“千里之日至可坐而致也”,但春秋或更早期的學(xué)者或許還做不到這一點。
以上,簡要梳理了由殷商至戰(zhàn)國以前的天文歷法由觀象授時向推步過渡的情況,這個過程也體現(xiàn)了人們對星空的熟悉程度的加深和觀測技術(shù)的日趨精密。而推步歷的標(biāo)志除了冬至的更精確測定之外,還有二十八宿體系的建立以及各宿距度的測定。
四、二十八宿傳統(tǒng)距度與古度 [22]
二十八宿距度分為兩種,《淮南子》和《漢書·律歷志》所記以及《開元占經(jīng)》中記錄的石氏宿度為傳統(tǒng)距度,《開元占經(jīng)》記載的劉向《洪范傳》宿度、西漢汝陰侯墓出土的天文盤宿度以及放馬灘秦簡《日書》所記宿度均為古度(以下簡稱《洪范傳》古度、汝陰侯占盤古度、放簡古度)。
現(xiàn)將傳統(tǒng)距度、《洪范傳》、汝陰侯占盤、放簡古度整理如表5所示。
潘鼐先生以古度考察了《禮記·月令》《呂氏春秋·十二紀(jì)》《逸周書·月令解》日躔及昏旦中星的記載,認(rèn)為在不拘泥于距星和宿度的情況下,基本適合春秋時期,彼時日躔二十八宿只能看作大略位置?!翱梢源_證《禮記·月令》的天象,系春秋中后期所觀測;當(dāng)以公元前620±100年為十二個月日躔二十八宿的時期。”
結(jié)合魯國的歷法在春秋中后期的變化,潘先生說:“周正歷法的使用年代,與《禮記·月令》觀測年代平均為公元前620年,即魯文公七年亦正相合。這時,約當(dāng)二十八宿已經(jīng)成立的年代的下限?!彼终f:“古度實為我國最早的科學(xué)的恒星觀測資料。石氏度則為公元前五世紀(jì)中葉繼之而起的較精確的觀測結(jié)果,已是進一步發(fā)展的科學(xué)成果了?!迸讼壬€計算了以牽牛上星為距,冬至點在牽牛一度或一度余的測定年代下限為公元前510年左右,應(yīng)用于顓頊歷,采用二十八宿古度。
近年來考古學(xué)上的新發(fā)現(xiàn)中的確有證據(jù)表明春秋晚期已經(jīng)形成了完善的二十八宿距度體系。2006年12月至2008年8月發(fā)掘的安徽蚌埠雙墩一號春秋晚期鐘離國君墓葬第三層是自中央圓形區(qū)域向外輻射的二十條寬窄不均的放射遺跡(圖4),馮時先生考證認(rèn)為這是二十八宿按照龍(角、亢、氐、房、心、尾)、箕、斗、牛、女、虛、危、定(營室、東壁)、奎、婁、胃、昴、畢、虎(觜、參)、井、鬼、柳、星、鳥(張、翼)、軫二十象合并宿度所形成的天區(qū)投影,并指出,“墓中二十個放射區(qū)域如果是以‘象及二十八宿距星為標(biāo)準(zhǔn)所建立的天區(qū),那么這將意味著至少在西元前六世紀(jì)春秋晚期以前,二十八宿體系顯然已經(jīng)相當(dāng)完善,而且作為一個恒星觀測體系,無疑已具有了明確的距度劃分?!?/p>
另,2006年底在河南南陽徐家?guī)X墓葬區(qū)發(fā)掘出土的夫人鼎,經(jīng)專家考證此鼎鑄于公元前507年,其上銘文考釋為:“唯正月初吉,歲在涒灘,孟春在奎之際……”銘文的意義重大,首先是太歲紀(jì)年的行用年代大為提前至春秋晚期,其次說明二十八宿體系在當(dāng)時已經(jīng)形成而且具有完善的距度劃分,可用于系統(tǒng)地觀測和紀(jì)時。
針對前人的研究,有關(guān)問題需要進一步探討。
首先,潘先生認(rèn)為“可以確證《禮記·月令》的天象,系春秋中后期所觀測;當(dāng)以公元前620±100年為十二個月日躔二十八宿的時期”,這個結(jié)論是以節(jié)氣月為標(biāo)準(zhǔn)得出的嗎?從潘先生介紹的計算方法看,“以孟春之月的月初,太陽位于營室為起點,取二十八宿按石氏宿度從室宿、壁宿依次排到虛宿、危宿,排滿365.25度,再將太陽行程按每月30.4375日,一日行一度,亦按十二個月,順序排列同周天二十八宿位置做對比”,這顯然是節(jié)氣月(平氣)的計算方法。然而,春秋時期存在二十四節(jié)氣嗎?潘先生沒有說。進而可以提出疑問,在沒有二十四節(jié)氣的時代會存在節(jié)氣月嗎?
筆者認(rèn)為,不管春秋晚期有沒有形成二十四節(jié)氣的名稱,但是已經(jīng)有了節(jié)氣月的實質(zhì)。
理由之一是, 夫人鼎銘文“孟春在奎之際”表明當(dāng)時的確存在節(jié)氣月的日躔記錄,雖然我們僅僅憑這一句話無法了解十二個月日躔的全貌,但至少可以判斷這與《呂氏春秋·十二紀(jì)》《禮記·月令》上的日躔屬于同一種類型。
理由之二,夫人鼎太歲紀(jì)年的銘文“歲在涒灘”表明當(dāng)時早已存在歲星紀(jì)年了(因為歲星紀(jì)年比太歲紀(jì)年更早),那么十二次也應(yīng)該已經(jīng)產(chǎn)生,彼時的天算家用十二辰來標(biāo)注這十二個區(qū)域并以此來標(biāo)記日躔,邏輯上完全成立。
理由之三,公元前590年以后,魯歷基本建子并出現(xiàn)十九年七閏的規(guī)律,這說明已經(jīng)出現(xiàn)了四分歷的雛形,冬至點的測定已經(jīng)比較準(zhǔn)確,并以冬至點為基準(zhǔn),把太陽的視運動軌跡按照一周天365.25度平均分成十二份,使冬至、夏至、春分、秋分居于所在節(jié)氣月的中點上,實際步算是類似于《淮南子·天文訓(xùn)》介紹的方法:“斗指子則冬至……加十五日指癸則小寒……加十五日指丑是大寒……加十五日指報德之維,則越陰在地,故曰距日冬至四十六日而立春……”這樣形成的十二個月的日躔其實是算出來的,只有冬至點是借助了立表測影技術(shù)測出來的。
另外,二十八宿古度是指《開元占經(jīng)》記載的劉向《洪范傳》宿度、西漢汝陰侯墓出土的天文盤宿度以及放馬灘秦簡《日書》記載的宿度,三者有一些差別(參見表4)。那么,古度從建立之初至西漢初年是不是處于演變之中呢?筆者認(rèn)為答案是肯定的,筆者甚至認(rèn)為古度之前可能還存在更古的度數(shù),相關(guān)問題還需要作進一步研究。
概言之,春秋早期歲首基本建丑,但是到魯成公(公元前590年)以后歲首就大致建子,并形成了十九年七閏的規(guī)律,這說明當(dāng)時已經(jīng)能夠比較準(zhǔn)確的測定冬至了。本文據(jù)此認(rèn)為,四分歷的雛形正是形成在這個時期,當(dāng)時的天算家完全具備能力以冬至點為基準(zhǔn)計算出各“節(jié)氣月”(姑且這樣稱呼)的日躔。因此,二十八宿距度體系的建立應(yīng)該是以公元前590年為下限。
五、“月宿歷”之來源 [23]
前面梳理了早期歷法的演變,可以看到這是一個由粗疏漸至精密的過程?!霸滤逇v”兼具觀象授時歷與推步歷的性質(zhì),只能產(chǎn)生在兩者之間的過渡期。在那樣的年代,既不能比較準(zhǔn)確地確定冬至日躔,也不能將月首精確到一日之內(nèi),也即月首與實朔之間的誤差比較大。后來,雖然觀測精度提高了,產(chǎn)生了新的歷法、占法,但是那些古老的形式并沒有徹底消失,而是一直流傳到后世。
月宿歷法產(chǎn)生的首要條件是:編制者需要理解“日月交會”這件事。日月在恒星背景中逐日東行,一年中交會12次形成12個朔望月。雖然不能用肉眼觀察到日月交會,但是有證據(jù)表明,至遲5000年前的先民已經(jīng)理解了這件事。在距今5000年前的鄭州大河村兩件復(fù)原的彩陶上畫著12個太陽,這12個太陽顯然不能理解為按照日躔軌跡均分的節(jié)氣月(或太陽月),因為直到春秋晚期人們才具備這樣的能力。而眾多的考古材料顯示,從7000年前以來,中國農(nóng)歷便是陰陽合歷。那么,這12個太陽只能理解為一年中日月12次交會在黃道上的示意圖。商代用什么詞匯來描述日月交會尚不清楚,但是今天所用的“朔”實際上在《詩經(jīng)》中已經(jīng)出現(xiàn)了。《小雅·十月之交》“十月之交,朔月辛卯。日有食之,亦孔之丑”,這是公元前8世紀(jì)辛卯日發(fā)生的日食。這是傳世文獻中人們已經(jīng)懂得日月交會的確鑿證據(jù)。
編制月宿歷法的第二個條件是:彼時已經(jīng)形成了二十八宿。甚至可以認(rèn)為二十八宿與月宿歷是相伴而生的,而二十八宿產(chǎn)生在何時,至今尚未有定論,或許在西周,或許更早。
月宿歷法得以形成的第三個條件是:觀月相而知日序,觀月宿而可以逆推朔宿以確定月序。西周初期的歷法獨重月相,筆者認(rèn)為這種月相的細(xì)分表明當(dāng)時人們迫切想確定月首和日序,從而確定日躔(月序),這樣做正是“月宿歷法”的編制所必需?!秴问洗呵铩べF因》所說“推步者,視月行而知晦朔也”即是此意。
綜上,筆者認(rèn)為月宿歷的編制不會早于西周初期,不會晚于西周末期。但事實上,并不能排除西周以前就存在月宿歷的可能,正如不能斷定西周以前不存在二十八宿。若是,其粗疏程度只能比西周更甚。
“月宿歷”形成以來沿用了很長時間。到公元前590年左右,古人通過觀測確定了冬至,確定了一年的長度是365.25天,掌握了十九年七閏的規(guī)律,形成了最初的四分歷。此時,月首、歲首以及日躔的測定都還在摸索和完善之中。由于計算的需要,二十八宿距度體系(古度)應(yīng)運而生。由于當(dāng)時還不能準(zhǔn)確觀測各節(jié)氣月的日躔,所以用月宿歷間接推算日躔的誤差并不能被發(fā)現(xiàn),一直沿用了下去。因此,月宿歷并未消失。
再后來,隨著觀測精度和計算能力的逐步提高,終于在戰(zhàn)國時期,石申夫用當(dāng)時的先進手段重新整理了二十八宿體系,形成了傳統(tǒng)距度。
中國農(nóng)歷實行無中氣置閏是從西漢太初歷開始的,春秋晚期至秦以來的諸侯國歷法雖然同屬四分歷,但其歲首和閏月的編制五花八門。前面提到的那些戰(zhàn)國秦漢時期的出土日書和式盤告訴我們:
其一,春秋晚期以來直至西漢太初改歷之前產(chǎn)生的眾多歷法中,有一種月宿歷與四分歷結(jié)合的產(chǎn)物,其朔望月與節(jié)氣月的月序相同,朔日在節(jié)氣之后。
其二,若朔日提前節(jié)氣超過月亮一日之行程(13古度),則設(shè)置一個閏月(這與無中氣置閏、后九月置閏顯著不同)。這一條是筆者的推測,論證工作非常復(fù)雜,筆者將另立專題研究。
戰(zhàn)國時期形成的廣狹過于懸殊的二十八宿傳統(tǒng)距度體系并不適合編制月宿歷,所以春秋時期形成的古度體系一直沿用到西漢初期,這就是戰(zhàn)國秦漢時期的出土式盤和日書還在記錄二十八宿古度體系的原因。但筆者非常懷疑在古度之前還有更古老的距度體系,二十八宿的寬窄會更平均,基本上可以保證月亮日行一宿的目測需要。
六、宋元王夢占之解析 [26]
月宿占法雖然看上去是通過計算某日月亮位于某宿來占卜吉兇,但其實它暗含了求日躔的方法。也即,通過觀察月相以及月離某宿,便可以推算出當(dāng)時日躔的位置,即朔宿。然后通過“日在加時”占法來推算事情的吉兇。在那個觀測精度不高的時代,這種方法是智慧的。因此,月宿占法不過是“日在加時”占法的變形而已,或者更準(zhǔn)確的說,前者是后者的早期形式,二者具有淵源關(guān)系,屬于同一個數(shù)術(shù)門類,所以在后期的大六壬文獻中依然可以找到月宿占法的材料。
成書于東漢末期的《吳越春秋》記載的幾例發(fā)生在春秋晚期的式占,雖然我們認(rèn)為彼時沒有那樣復(fù)雜的占法,但是當(dāng)時存在比較原始的式占形式,這些形式流傳到后世作為文人作文章的素材,又在原始占法的基礎(chǔ)上揉入了漢代的高級成分,這是合乎情理的。
而《龜策列傳》所載宋元王夢占也屬于類似情況,其中既有月宿占法,也有“日在加時”占法,下面筆者就對與本論題關(guān)系密切的語句作一番解讀。
仰天而視月之光,觀斗所指,定日處鄉(xiāng)。規(guī)矩為輔,副以權(quán)衡。四維已定,八卦相望。視其吉兇,介蟲先見……今昔壬子,宿在牽牛。河水大會,鬼神相謀。漢正南北,江河固期,南風(fēng)新至,江使先來。白云壅漢,萬物盡留。斗柄指日,使者當(dāng)囚。
原文已知宋元王做夢的時間在夜半,驚醒之后便將衛(wèi)平博士請來占夢。本文開篇已討論這個夢占不會發(fā)生在冬至?xí)r節(jié),因為彼時烏龜已經(jīng)冬眠,漁民也很少外出打魚,即使打魚也不大可能選擇在半夜作業(yè)。
故事發(fā)生的季節(jié)和月份沒有明說,其實暗含在占文中:“漢正南北,江河固期,南風(fēng)新至,江使先來。”一說到漢正南北,只有兩種可能,一是日躔斗宿附近,一是日躔井宿附近,在春秋末期至西漢年間只有巳(孟夏)、亥(孟冬)兩月的中下旬的夜半才有銀河在頭頂橫亙南北的天象,后面又說南風(fēng)新至,顯然是孟夏。
那么“仰天而視月之光”的含義就清楚了,這是說通過觀察月相和月亮處于哪一個星宿的位置,可以推算當(dāng)時的日躔,即朔宿。文中說“宿在牽?!?,也即月離牽牛,并非日躔牽牛。因此,清人錢大昕、張文虎和近人嚴(yán)敦杰三位先生都將式占的時間定為冬至后子月是錯誤的。根據(jù)日躔月離的位置可以反過來推算這一天大概是農(nóng)歷十六或十七。
“觀斗所指”既可以定日躔,也可以定時辰。知道日躔、時辰、斗杓所指三者之二,就可以推算其余?,F(xiàn)在我們知道日躔井宿、夜半兩個因素,當(dāng)然可以推算出斗杓指昴宿。
“規(guī)矩為輔,副以權(quán)衡”,規(guī)矩指方形的地盤,權(quán)衡代表北斗,指天盤。衛(wèi)平觀察了月相和北斗之后,便用式盤來輔助演算?!八木S已定,八卦相望”,這是說將式盤擺好,東西南北對正,天地人鬼四門無差錯,八卦的方位不偏倚。
“介蟲先見”大概是指事情發(fā)生在壬子日夜半子時,正是北方玄武所值,玄武即是烏龜(介蟲)和騰蛇的合稱。
“今昔壬子,宿在牽牛。河水大會,鬼神相謀”,這是說壬子日五行屬水,月宿牽牛在銀河,所以叫“河水大會”。此時此刻,“我們”來占夢(與鬼神相謀)。
“白云壅漢,萬物盡留”,這是說此時(占夢的這個時間)有白云飄過來,好像堵塞了銀河,萬物不流通,暗示烏龜被劫持了。這屬于以外應(yīng)取象定吉兇。
后文又說“斗柄指日,使者當(dāng)囚”,斗柄指日,是說斗杓指向地盤上壬子日之天干壬寄宮的亥支(營室、東壁兩宿的位置),這是衛(wèi)平占夢的時間,那么很容易推算出太陽已經(jīng)運行到了地盤的尾、箕兩宿,正當(dāng)寅時。
后文還說宋元王立馬派人去泉陽尋龜,在打魚人豫且家將其找到,回返途中“出于泉陽之門。正晝無見,風(fēng)雨晦冥”,此時已經(jīng)天亮了,但烏云密布,風(fēng)雨飄搖。注意,這里用的是“風(fēng)雨”,而不是“風(fēng)雪”,也證明當(dāng)時并非寒冬之際。整個故事的發(fā)生、發(fā)展緊湊有序、精彩傳神。
七、小結(jié) [27]
本文以《史記·龜策列傳》宋元王占夢為線索,以眾多出土文獻和傳世文獻為依據(jù),追溯了大六壬“日在加時”占法的起源,挖掘出觀象授時歷向推步歷過渡的形態(tài):月宿歷。新石器時代的先民就已經(jīng)關(guān)注日月的運行,西周初期人們已經(jīng)可以比較準(zhǔn)確的分辨月相,彼時形成了月相與二十八宿相結(jié)合的月宿歷法,人們已經(jīng)懂得用月宿紀(jì)日,以朔宿紀(jì)月,隨后形成了“月宿占法”,這是“日在加時”占法的原始形式。公元前590年前后能夠比較準(zhǔn)確地測定冬至,并形成了最早的二十八宿矩度體系,彼時古人可能借用歲星十二次對逐月日躔進行過粗略計算,并形成了十九年七閏的四分歷的雛形。隨著觀測精度提高,到戰(zhàn)國初期,石申夫?qū)Χ怂蘧喽冗M行過修正并得到傳統(tǒng)距度體系。至遲在此時,二十四節(jié)氣已經(jīng)形成。至西漢太初改歷,“日在加時”占法逐步完善。在這個過程中,月宿歷的精度逐步提升,其朔望月與節(jié)氣月的月序相同,朔日在節(jié)氣之后,其置閏規(guī)則與無中氣置閏、后九月置閏顯著不同。從月宿占法的演變,我們可以看到中國古代天文學(xué)發(fā)展的脈絡(luò),并對數(shù)術(shù)學(xué)的思想有所體會。
(責(zé)任編輯:陳 真? ?責(zé)任校對:楊翌琳)