公元721年9月乙巳朔,太史局裏人來人往。大家雖然忙,但沒有什麼聲音,因為根據《麟德曆》的推算,這一天要發生日食,但不知是否如預推的那樣準確。大家在做著觀測前的準備工作:有的在較準漏刻,有的準備記錄簿,有的準備油盆……預報的時刻終於到來了,在油盆裏,耀眼的太陽隻顯現出一個光亮的圓輪,日食情況可以清楚地看到。實際觀測的結果表明,預報同實際有較大的差別。這說明《麟德曆》已同實際有了較大的偏差。觀測報告送到了皇帝那裏,唐玄宗下令:命一行(張遂)製定新曆,以代替不準確的舊曆。一行辛苦工作了6年,新曆製成,他也與世長辭了。他製定的就是《大衍曆》。唐玄宗命張說和陳玄景等人把他的遺稿收集整理,寫成《大衍曆術》和《大衍曆議》兩部分,今載在新舊唐書的曆誌裏。
《大衍曆》是我國曆法上優秀的曆法之一,內容分?個方麵,既繼承了前代曆法的成績,又為後代各曆所依照。計有:推算朔望的方法;推算二十四節氣各日的中午影長及白天黑夜長短;推算太陽運動、月亮運動,七十二侯和六十四卦;推算日月交食,五大行星運動等內容。
大衍曆的基本數據是:
通法三千四十--即每天由3040分組成,全曆中每一
數據都以此數為分母
策實百一十一萬三百四十三--即1年的長度為
11103433030=3652444,天
揲法八萬九千七百七十三--即1朔望月的長度為
897733040=2953059天
乾實百一十一萬三百七十九太--即一周天度數為
1110379343040=365779343040
歲差三十六太--為36343040度,約82年半差1度
轉終日二十七餘千六百八十五秒七十九--即一近點月為
27168579803040=2755460天
交終日二十七餘六百四十五秒千三百二十二--即交點月為
27168513221000030432721221天
五大行星的會合周期為:
水星一百一十五日餘二千六百七十九秒七十二,即
1152679721003040=115881天
金星五百八十三日餘二千七百一十一秒十二,即
5832679121003040=583892天
火星七百七十九日餘二千八百四十三秒八十六,即
7792843861003040=770935天
木星三百九十八日餘二千六百五十九秒六,即
398265961003040=398875天
土星三百七十八日餘二百七十九秒九十八,即
378279981003040=378921天
根據這些基本數據,再按照一定的法則就可以安排年的日曆,推算交食和五星出沒。中國古代曆法中這些本數據所用的名稱很古怪,這給我們研究古曆中的計算法帶來了麻煩,但弄清了這些名字的天文含義,其中計方法是不難的。現在有些同誌稱古代曆法著作為“天書”主要是因為弄不清這些古怪名字的意思而難於理解。
《十二氣曆》和《天曆》
古代的100多種曆法中,絕大多數是陰陽合曆,即太陽的視運動周期為年的單位,以月亮圓缺周期為月的位。由於兩者沒有整數倍數,所以要采用一定的調整措施這是陰陽合曆不可避免的問題。但曆史上有兩種曆法是純陽曆設計,避開了這個問題。其中一個是沈括提出的《十二氣曆》,一個是太平天國頒行的《天曆》。著名的科學家沈括晚年在風景宜人的夢溪園裏,記錄他自己一生中對各種問題進行研究的心得和收獲,寫成著名的《夢溪筆談》。書中提出了我國曆史上第1個陽曆方案:每年12個月,大月31天,小月30天,大小月相間。二十四節氣分成兩組,立春、驚蟄、清明、立夏、芒種……稱為節氣,置於每月的開頭;雨水、春分、穀雨、小滿、夏至……稱為中氣,置於月中。這樣每年的日期和節氣都固定不變,也不用設置閏月,推算很簡便。沈括的陽曆方案在曆史上是無先例的,他明知會遭到攻擊,但還是堅信以後總會使用這種設計的。
事情真如沈括所預言的,800年之後的太平天國起義軍頒布了《天曆》。
《天曆》的基本結構,以366為1年,沒有閏月。單月31日,雙月30日,節氣為月首,中氣為月中。大月中氣從每月的十七日開始,小月從十六日開始。這樣除立春、清明、芒種、立秋、寒露、大雪6個節氣為16日外,其餘都為15日,所以非常簡明整齊,幾乎人人都能用它的推算方法來推算曆譜。《天曆》保留了古代的幹支紀年、記日、記月的方法,並且使用星期周法。它是以立春為歲首的。《天曆》1852年立春與清朝的《時憲曆》一致,大約就是以此年立春作為曆元。
《天曆》將回歸年取為366整,大概是為了從整齊完滿和推算方便著想的,但這個數值與真值相差較大,4年就差了3天。考慮到這一缺點,太平天國的一位領導人洪仁殲於1859年對天曆作了每40年一斡旋的修正。具體地說:每逢40的年份,改用每月28天;每個節氣都恒定為14天。經過這次改定以後,天曆的回歸年長度相當於世界上通用的《儒略曆》或我國古代的《四分曆》。
農曆的閏月
注意一下農曆每年所包含的月數,容易發現有的年是12個月,有的年是13個月。這究竟是怎麼一回事呢?
我們在前麵曾經提到,我國的農曆是一種陰陽曆,同時把回歸年和朔望月的長度做為製曆的基本周期。回歸年的長度是3652422日,朔望月的長度是295306日,這兩者不能通約。如果規定12個朔望月構成1個農曆年,這個農曆年的長度就是295306×12=3543672日,比回歸年的長度少11天左右;如果規定13個朔望月構成一個農曆年,那麼295306×13=3838978日,又比回歸年多了18天多。顯而易見,按照這兩種規定製定曆法都會出現天時與曆法不合,時序錯亂顛倒的怪現象。比如,按前者規定,某年春節在大雪紛飛的冬天,過了1個農曆年,下一個春節就要比前一個春節在季節上提前11天出現,這樣過了16個農曆年以後,春節就會提前到赤日炎炎的盛夏了。春節可以發生在一年的任何季節裏,這樣的曆法又有什麼可用的價值呢?
為了克服這個缺點,同時兼顧到太陽和月亮的運動,我們的祖先在辛勤的天文實踐基礎上,至遲在春秋時代就創造了“十九年七閏法”,相當完滿地把我國的曆法建築在堅實的科學基礎之上,遠遠地走在當時世界各國的最前列。“十九年七閏法”,就是在19個農曆年中設12個平年,每1平年為12個朔望月;設7個閏年;每1閏年為13個朔望月。這就是說,19年中總共有12×19+7=235個朔望月,總共的日數為235×295306=69396910日。另一方麵,19個回歸年的總日數為3652422×19=69396018日。比較這兩個總日數,相差僅為00892日。這表明按照“十九年七閏法”可以把太陽和月亮的運動很好地協調起來,就能製定出精度相當高並與天象密切符合的陰陽曆。
由此我們可以明白,農曆年有時是12個月,有時是13個月,並不是雜亂無章的,而是有著嚴格的科學規律的。
古曆的“三正”之說
古曆的“三正”之說曆史悠久,其實就是曆法的歲首問題。歲首,顧名思義就是一年的開頭。現在大家都很明白,陽曆的歲首是元旦,農曆的歲首是春節,但在曆史上卻不是這樣的。在漫長的觀象授時時代,那時還沒有曆法,是按照物候的變遷和天體的運轉判斷新的一年的到來,談不上是從哪一天開始的。後來產生出曆法,東周統治者所頒行的曆書規定新的1年從子月開始,即現在農曆的十一月,包含冬至的那1個月,後代稱為周正;春秋時代的鄭國、宋國、齊國,它們的曆法歲首在醜月,即現在農曆的十二月,包含大寒的月分,傳說殷代曆法的歲首與此相同,故稱為殷正;而晉國、秦國以及春秋時代的小國,它們的曆法與今天農曆一致,以寅月為歲首,傳說夏朝的曆法歲首與此相同,這就是夏正。正因為這個原因,所以有人把我們現在行用的農曆稱為夏曆。
周正、殷正、夏正的三正之說是表示不同歲首的幾種曆法。當然曆史上還有其他歲首的曆法,例如秦和漢初的曆法就是以亥月(現在農曆的十月)為歲首的。不同的歲首隻是一個習慣問題,各個民族也不一致,有的曾將一年的開始設在春分,有的在冬至,有的在潑水節(相當清明左右)。就是目前也還存在各種不同的歲首之說:例如學年的歲首目前統一在秋季的9月份左右,新生人學,舊生升級都在秋季;有的國家的財政年度的歲首放在7月1日,到下年6月30日結束,這是便於財政統計,這也是一種不同歲首的實例。
大月和小月的安排
月大30天,月小29天,可認為是古代曆日製度上最巧妙的安排之一。朔望月的長度不是整數天,大約是29天半,客觀存在使生活在不同地區的各族人民互相獨立地做出了這樣巧妙的安排。
朔望月的周期由月亮的圓缺變化明顯地體現出來,它周而複始地變化著,圓了又缺,缺了又圓,以它的周期作為一月也有個從什麼狀態開始的問題。我國有的少數民族曾經以月圓至月圓作為1個月,以月圓作為1個月的開始。至今藏曆、傣曆還是先確定月望,規定日落時月亮正從東方地平線升起的那1天為十五日,由此再推定初一,這就是以月圓作為月首的遺留;漢族人民古代以月牙兒初見於西方的1天為一月的開始,西周初年稱這一天為“肌”。後來懂得了以間接方法推算日月合朔的時刻,就取那個時刻為1月的開始,稱為朔。這顯然前進了一大步,這個時代大約在西周末年。
日月合朔是看不到的,因為那時月亮以太陽照不到的半邊對著我們。我國古代以觀測太陽、月亮在恒星間的位置變化來推算日月合朔的時刻,以發生日食來檢驗這個時刻。當測得某一個合朔時刻之後,就以加上1個朔望月長度的方法推得下一個合朔時刻。逐次相推,可以確定各月初一的日子,用這種方法推算出來的月份大都是大小月相間的。由於一個朔望月比29天半還多一點,每隔17個月安排一個連大月,連續兩個月都是30天的大月,這種方法古代稱做平朔法。是取朔望月長度的平均值來推算的。
事實上,月亮公轉的軌道是橢圓而不是正圓,這就決定了它的運動速度是不等的,用以上方法推出的日月合朔時刻與實際有出入,所以日食有時出現在晦,有時出現在初二。月亮運動的不均勻性,在西漢末年就已經發現,所以劉向和東漢的賈逵、張衡等多次提出用九道術來推算,東漢末的劉洪,第一次在他的《乾象曆》中提出推算真朔的方法。他實測月亮在一個近點月內每日實際運行的數值,用一次內插法推算真朔發生的時刻,這就比平朔法推算的結果準確。推算合朔時刻要同時算出太陽月亮的位置,而實際上太陽的運動也是不均勻的,這一事實到南北朝的張子信才發現。隋朝的劉焯在推算日月合朔時第一次考慮到太陽運動的變化。從此各家曆法在推算日月合朔時,都同時考慮到日月運動的不均勻性。在推算中劉焯用了二次差的內插法。唐朝的一行用了不等間距的二次差內插法,元朝的郭守敬用到三次差的不等間距內插法,所得結果越來越精確。考慮到日月運行不均勻性而推算合朔時刻的方法稱做定朔法。按照定朔法的安排,月份的大小就不老是大小月相間,這就是現在農曆上會出現連大月或連小月的原因。