二、國歷換算為公歷
1.換算公式的導(dǎo)出
公歷每年365.242 199074075 日 (簡化為365.2422日),而回歷每年為354.367074375日(簡化為354.36707日),所以回歷一年只相當(dāng)354.36707/365.2422=0.970223或0.970224個公歷年。又回歷元年元旦定在公元622年7月16日,由于當(dāng)時歷法在推算上的誤差,致當(dāng)時的7月16日,按現(xiàn)代的公歷應(yīng)改為7月19日,自公元某年元旦至該年7月19日已達(dá)200日.相200/365.2422=0.5476公歷年;又因到回歷二年元旦才達(dá)到0.970224個公歷年,故自回歷紀(jì)年元旦換算為公歷的算式即為:
(回歷紀(jì)年一1)× 0.970224+622.5476年
=所求公歷年月日……………………………………………………………………………(1)
或 回歷紀(jì)年 × 0.970224+621.5774年
=所求公歷年月日……………………………………………………………………………(2)
式中621.5774來自622.5476-0.970224。
如所求某一歷史事實不在回歷元旦時,可將事實經(jīng)過本年的總?cè)諗?shù)化為回歷年,加人回歷紀(jì)年總數(shù)中即可。
然而上列公歷一年的總?cè)諗?shù),實際上是一回歸年的實測數(shù),因現(xiàn)用公歷每年的日數(shù)實為365.2425日,它與一回歸年的日數(shù)只能是基本相符,到公元四千多年后會再出現(xiàn)一日之差。
實際上在明萬歷十年九月十八日,回歷990年9月16日,公元1582年10月4日前(包括4日)的公歷稱儒略歷,儒略歷每年365.25日,它每年與一回歸年的差值遠(yuǎn)大于格列高利歷即現(xiàn)代的公歷,大約歷128年就需多閏去一日,至萬歷十年已經(jīng)多閏出十日了。因此,對于儒略歷時期的回、公兩歷換算,不能仍采用(l)、(2)兩式,而需依儒略歷的年實際日數(shù)將上列二式略加修正即可,結(jié)果如下:
(回歷紀(jì)年一l)× 0.9702+622.5393
= 所求公歷年月日……………………………………………………………………………(3)
回歷紀(jì)年 × 0.9702+621.5691
= 所求公歷年月日…………………………………………………………………………(4)
式中0.9702為354.36707/365.25所得結(jié)果,而0.5393則系公歷某年元旦至其7月16日的總?cè)諗?shù)197被365.25日除之所得,622.5393-0.9702= 621.5691。
現(xiàn)將兩種算式自回歷第52年起,每隔百年所算得的公歷年月日列人下表:
表1 國歷換算為公歷
<img src=/wenxian/lunwen/images/002-2-p128.gif>
自表列計算結(jié)果得知,歷法不同不能用同一算式,否則誤差大大。萬歷十年前即已發(fā)現(xiàn)儒略歷的春分所在日期與實測結(jié)果相差較大,至萬歷十年已差十日,因此格列高利第十三就決心修改儒略歷,改革內(nèi)容有兩點,其一,將公歷1582年10月4日之后一日原應(yīng)為10月5日而改為10月15日,而星期序數(shù)不變,即該年10月4日為星期四,10月15日理應(yīng)為星期一,實為星期五;其二,儒略歷每四年有一個閏年,四百年有百閏,格列高利歷仍保持儒歷四年一閏的傳統(tǒng),但每四百年僅安排九十七個閏年,四百年中逢百年不閏,到第四百年加一個閏年[6]。儒歷與格歷的歲實分別為:
儒歷(365 ×300+366 ×00)÷ 400年=365.25日/年
格歷(365 × 303+366×97)÷ 400年=365.2425日/年而《明史·歷志》所載的回回宮分歷(太陽歷),一百二十八年閏三十一日,其歲實:
(128 × 365+31)日÷ 128年= 365.2421875日/年
可見共置閏精度遠(yuǎn)高于現(xiàn)代的公歷。
2.換算中一日誤差之訂正
《歷法叢談》以回歷1387年為例,求算合公歷之年月日。
解1:1387 × 0.970224+621.5774=1967.278088年
0.278088年 × 365.2422日=101.569日公歷累計日數(shù)為101.57日可視為4月11日或4月12日。究竟是哪一日,當(dāng)依兩歷在公歷4月11日或12日間所具有同一的星期序數(shù)以訂正。
依回歷歲首星期序數(shù)計算公式:
[(138-1)×131+164] ÷30=6057,余20
6057÷7=865,余 2
故回歷1387年元旦為星期2。(表)
<img src=/wenxian/lunwen/images/00-2-p129.gif>
按公歷自1583年元旦(星期六)至1967年4月11日,共歷:
1967-1583=384年,在這384年中依格列高利歷四年一閏,百年不閏,四百年加一閏日的規(guī)則共歷93個閏日,又1967年元旦后一日起至4月11日又需加 100日,則
(384 × 365+93+100+6)÷ 7=140359+7=2001,余 2余2即星期2,故回歷1387年元旦在公歷1967年4月11日。
因公歷計算星期日數(shù)采用數(shù)據(jù)較多,計算時難免有所遺漏,現(xiàn)引人公歷日期與星期推算表阿),供參考。
應(yīng)用此表查找公元1967年4月11日星期序數(shù)步驟如下:
先在本表年份表前二位數(shù)字欄目中,查到19二字所在的位置;
再在年份表后二位數(shù)字欄目中查到67二字所在位置,自19二字處平行右移,67二字處垂直下移,二者在英文大寫字母欄目中相交于字母G處;
再自月份表欄目中查到4月,自4月所在位置平行左移,查到G在4月欄目所在位置;
自日期欄目查到11日所在位置,自此位置平行右移,使與4月份欄目G在星期表相交處知為星期二,結(jié)果與回歷計算所得相同。故知回歷 1387年元旦確為公歷1967年4月11日,而不是12日。
在換算中所得公歷日數(shù)常多于31日,甚至常在200—300日或更多,需要將此數(shù)化為該年的月日時,可用下列兩表。
表3 公歷月份及其累計日數(shù)
<img src=/wenxian/lunwen/images/00-2-p130.gif>
三 公歷換算為回歷
將回歷換算為公歷的算式移項,整理,即可得到公歷換算為國歷的算式
(公歷紀(jì)年一621.5691)÷0.9702=回歷年月日(儒略歷)……………………………………………(5)
(公歷紀(jì)年一621.5774)÷0.970224=回歷年月日(格氏歷)…………………………………………(6)
無論回歷換算為公歷或相反,大體都有一日之差,以星期序數(shù)訂正時,回歷換算為公歷,以回歷的星期序數(shù)為準(zhǔn);相反,以公歷的星期序數(shù)為準(zhǔn)。
四 國歷或公歷換算為中國農(nóng)歷
1.回歷換算為農(nóng)歷
僅管中國農(nóng)歷各年在年內(nèi)月數(shù)日數(shù)都不是一個相對的穩(wěn)定值,給回歷與公歷換算為農(nóng)歷上帶來較多的困難,但仍然可以換算。中國農(nóng)歷為陰陽合歷,在月份上與回歷同屬太陰歷,惟回歷每月以見新月為一月之始,其日約遲于農(nóng)歷合朔(初一日)1—2日乃至3日,因此只要查清二者在月份上關(guān)系,便可將回歷換算為中國農(nóng)歷。馬以愚先生稱:“回教紀(jì)年及齋戒之月,均依太陰歷。中國昔用夏正(即農(nóng)歷),有閏之年,年為十三月。故齋戒之月,遇閏則連退。如今歲齋戒值夏正之九月,歲逢閏,改歲當(dāng)以八月為齋?!盵8]故若求得積年及所歷大陰歷的月數(shù),即可依農(nóng)歷十九年而有七個閏月的規(guī)律,將農(nóng)歷換算為回歷,其日當(dāng)有l(wèi)——2日之差。
計算舉例:已知西域魯穆馬依澤公于宋太祖建隆二年(961)應(yīng)召人華編修《應(yīng)天歷》,并將伊斯蘭天文傳人中國,他的事跡已收人《中國伊斯蘭百科全書》[9]與《中國回族大詞典》[10]等,被列為伊斯蘭與中國回族之大事。據(jù)《懷寧馬氏宗譜》記載,依澤公應(yīng)召人華時年已四十,生于回歷勒比阿立勿里月(拉比爾·奧沃勒月,即回歷三月)第二十日,故于宋真宗景德二年(1005)五月初十日。宋太祖乾德四年(966)八月十三日奉旨授世襲候爵兼司天監(jiān)。求依澤公生于公歷與農(nóng)歷的年月日。
解:馬依澤于宋建隆二年五月后來到中國時年已四句,已知建隆二年二月初三日為回歷310年元旦。由此可知馬依澤公生于回歷310年3月20日,合公歷
310×0.9702+621.5691=922.3311年
0.3311 ×365.25=120.934275日回歷 310年元月1日合公歷922年5月1日,再加 78日為回歷3月20日,公歷7月18日。
又據(jù)農(nóng)歷19年而有7個閏月,并依齋戒之月遇閏則遞退一月的規(guī)則,求算出回歷310年元旦約合農(nóng)歷之月份為:
(922-622)=300年
300 ÷19 ×7=15.7895 ×7=110.53個月又每閏12個月為一年除去不算
110.53÷12=9余2.53,即后退2月自武德五年六月初三日退后 2月為四月,即依澤公生于梁龍德二年四月二日再加 78日合六月二十一日或二十日。
2.公歷換算為農(nóng)歷
張家驥稱:“《瀧岡阡表》中最末一段:‘(宋)熙寧三年,歲次庚戌四月辛酉朔,十有五日乙亥,男修表’。試算為陽歷日期”。
他又說:“已知二十四節(jié)氣在黃道上的位置是固定的,但各年有平年和閏年之分,就使得回歸年天數(shù)與實際天數(shù)不等,每年在日歷上可差一天。這樣可以將陰歷經(jīng)過任意整回歸年在現(xiàn)在的日歷上查到陽歷(陽歷一年相當(dāng)陰歷的月數(shù)為 365.2422/29.530588=12.36827個月)。例如,可先在1995年的日歷上查得與(該年)陰歷對應(yīng)的陽歷日期,這樣就找到了臨時落腳點,也就是找到了陰陽互換的關(guān)鍵。例如,可先以陰歷四月初一(日)為引數(shù),在1995年日歷上查到對應(yīng)的陽歷為4月30日。由于已經(jīng)計算出經(jīng)過的月數(shù),將經(jīng)過的月數(shù)的尾數(shù)(小數(shù))化為日,加在4月30日上,就得到經(jīng)過(1995-1070)整年數(shù)的陽歷日期,也就是起始陰歷日期對應(yīng)的陽歷日期,即得到了待查的日期為4月30日加上0.64957×29.530588得到(1070年)5月19.1821840日。這樣就得到了所給例子的陰陽歷日期換算結(jié)果……”。
0.64957月的由來,
(1995-1070)×12.36827=11440.64957月
已知依澤公生于梁龍德二年(922)六月二十一日,依下表提供的2099年各月初一日的公歷月日數(shù),可以算出龍德二年六月二十一日的公歷月日數(shù)
表5 公元2099年農(nóng)歷各月初一日的公歷月日
<img src=/wenxian/lunwen/images/00-2-p131.gif>
(2099-922)× 12.36827=1455.45379月
余數(shù)為 0.45379月 × 29.530588日=13.4O日
因2099年五月初一日(包括該年闖二月)在公歷6月19日,加上計算所得的13日為龍德二年六月初一日的公歷月日,即該年7月2日,則該年農(nóng)歷六月二十一日為該年7月22日。
公元1995年六月初一日合公歷該年6月28日,代人以上計算程序亦得到上列相同或相近的結(jié)果。計算中發(fā)現(xiàn)農(nóng)歷因閏月關(guān)系,其正月(如 1996年)常在該年公歷2月,此時可換用下表的公歷月日
表6 公元2100年農(nóng)歷各月初一日與公歷的月日
<img src=/wenxian/lunwen/images/00-2-p132.gif>
3.計算結(jié)果的訂正
實際上上列公歷換算為農(nóng)歷時常有較大的誤差,如熙寧三年四月初一日為公歷1070年5月13日,而不是5月19日。通過中國歷法所用的于支記日法求算所用兩歷的干支,對所求結(jié)果加以訂正。
如,馬依澤公生于回歷310年3月20日,自回歷歷元起算共歷日數(shù)為:
自回歷元旦至其3月20日,共歷79日。
自回歷元年元旦至309年元旦,共歷113個閏年196個平年。又回歷歷元在公歷622年7月16日,已知該日的干支序數(shù)為50,癸丑日,減1(因自甲子起算),余49應(yīng)加入下列算式中,
(309 × 354+113+79+49)÷60=1827.116667
0.116667 ×60=7
干支序數(shù)為7,即庚午日。
求公歷922年7月18日的干支,儒略歷900年的干支序數(shù)為:
900 ×365.25÷60=5478.75
余數(shù)為,0.75 ×60=45;
22年的于支序數(shù)為,
(22 × 365.25+7)÷ 60=134,余2.5按3計,式中的7,為儒略歷元年元旦的干支序數(shù);
又7月 1日自該年元旦起算共歷182日,干支序數(shù)為2,再加17日為7月18日
(45+3+2+17)÷60=1,余7,
結(jié)果與回歷計算所得相符,即依澤公生于回歷310年3月20日,中歷庚戌日。
4 求首朔干支[11]
以上計算所得的中歷干支應(yīng)為所求月內(nèi)的幾日,如對所求月首(即月初一日)的干支尚不清楚,則求得的干支不能算出它在月內(nèi)的日數(shù)。
首朔是指農(nóng)歷每年冬至(平冬至)后第一個朔日,冬至都在農(nóng)歷年前的十一月,故首朔就是所求該年前的十二月初一日的干支。(歷象考成后編》以雍正元年(172)冬至起算,其干支系數(shù)為32.12253,干支為丙申,而冬至后的 15.12633日為首朔,干支為壬子(33+15.12633)。自此可求算出 922年 7月即農(nóng)歷六月初一日的干支,以確定本文四·3節(jié)中所求的干支為該年六月第幾日。求算過程如下:
先以1722減921所得之?dāng)?shù)稱積年,積年乘歲實之積為經(jīng)此積年所歷日數(shù),所歷日數(shù)減32.12254之差被o后的余數(shù)再為o所減,所得之差就是922年冬至的干支(計算中向上推算或上考往古要用60減)。所歷總?cè)諗?shù)減0.12254,再加上922年冬至之余數(shù)將所歷總?cè)諗?shù)化為整數(shù)后,加上15.12633日所得之和用29.530588除之,除之所得余數(shù),再加上龍德二年冬至干支,得首朔干支,首朔干支再加上 6 × 29.530588后,累減60而得的余數(shù),為龍德二年六月初一日的干支,六月一日與月內(nèi)干支差即為六月內(nèi)的日數(shù)。計算過程如下:[(1722-921)× 365.2423442-32.12254]÷60=4875.449784
0.44784 ×60=33.01269,干支序數(shù)已過33。當(dāng)為34,丁西日,經(jīng)與《中西回史日歷》對照無誤。再求922年首朔干支,
292 59.1O99一0.12254十0.01269=292559
(292559+15.12633)÷ 29.530588=990.4948
0.49498 ×29.530588=14.1510,再加34,合49,干支為壬子,所得與史書所載相同。[12]因首朔再過六個月方是龍德二年六月初一日,故
(49+6 ×29.530588)÷60=3,余46月83528,干支序數(shù)41為庚戌日,為六月初一日干支,再過二十日為六月二十一日,即馬依澤公出生之日,
(47+20)÷60=1,余7,庚午日結(jié)果與回歷、公歷推算所得相同,即馬依澤公出生于回歷 310年 3月20日,農(nóng)歷梁龍德二年六月二十一日,公歷922年7月18日。
計算中沒有采用定朔與定氣,可能有數(shù)時之差。
因?qū)⒒貧v,公歷換算成農(nóng)歷時需用干支以訂正,特將于支次序列表如下:
表7 干支次序表
<img src=/wenxian/lunwen/images/00-2-p133.gif>
參考文獻(xiàn)
[1] 馬堅:《回歷綱要》,中華書局,1955年版。
[2] 鄭天杰:《歷法叢談》,臺灣華同出版社,1977年版。
[3] 鞠德源:《萬年歷譜》,山西人民出版社,1989年版。
[4] 陳久金:《回回天文學(xué)史研究》,廣西科技出版社,1996年版。
[5] 張家驥:“陰陽歷日期互換的計算”,《北京大學(xué)學(xué)報》(自然科學(xué)版),1998年第 4期。
[6] 馬以愚:《回回歷》,商務(wù)印書館,1947年版;《歷法考證》手稿,1956年。
[7] 唐漢良:《歷法問答》,陜西科技出版社,1980年版。
[8] 馬以愚:《中國回教史鑒》,商務(wù)印書館,1947年版。
[9] 宛耀賓、楊克禮等:《中國伊斯蘭百科全書》,四川辭書出版社,1994年版。
[10]邱樹森:《中國回族大詞典》,江蘇古籍出版社,1992年版。
[11]樂吾氏:《歷算須知》,1935年編印,馬以愚先生抄錄;欽定《歷象考成后編》,文淵閣《四庫全書》, 臺灣商務(wù)印書館重印。
[12]陳 垣:《二十史朔問表》,中華書局,1926年版。
「收稿日期」1999-10-13
「作者簡介」馬肇曾 北京科技大學(xué)化學(xué)系。北京100083