滕艷輝,馬俊青
(咸陽師范學院 數(shù)學與信息科學學院,陜西 咸陽 712000)
中國古代大量的歷日和天象記錄是現(xiàn)代地球科學、天文學和歷史學重要的研究資料,而這些記錄的可靠性問題就是非常值得研究的。因為有些記錄不是真實的觀測記錄,可能是用當時歷法推算的結(jié)果,也可能是故意捏造的天象,而即使是真實的觀察記錄,也存在觀測精度的問題[1-2]。古代歷日和天象記錄的研究,一直是學者們長期關注的問題,他們在這方面取得了一系列成果[1-9]。然而,仍然有很多問題需要討論和澄清,有很多史載的記錄需要進一步考證。
史料中記載有用古代歷法推算的天象結(jié)果。特別是在歷法改革或評議中,經(jīng)常出現(xiàn)由當時人陳述的歷法推算的結(jié)果,用以說明某種歷法推算的優(yōu)劣。那么,這些實際陳述是不是準確的呢,需要我們重新對其進行驗證。這個工作的第一步就是要根據(jù)當時的歷法重新計算,復原史料中所描述的天象。然而這方面的工作量是巨大的,首先要確定天象發(fā)生的真實時間和所使用的歷法,然后要理解當時歷法的具體推算過程,并依照所用歷法進行復原,最后比較復原結(jié)果與記錄結(jié)果之間的差異。本文僅對《宋史》中記載的部分推算平氣和定朔的記錄進行分析。其他史料中的記錄也可以使用本文的研究方法。
宋代歷法中的氣朔算法,已有很多相關研究[10-14]。本文為了計算和復原的方便,將氣朔的計算公式綜合起來,作為一套完整的數(shù)值算法系統(tǒng)進行展示。宋代歷法求冬至及各氣時刻的算法基本相同,若設A為日法,表示一日所包含的日分數(shù),t=T/A為回歸年常數(shù),Nn是所求年(n年)到上元的積年數(shù),則所求年冬至后第l個節(jié)氣的具體時刻Tpq可由式(1)表示。
設u=U/A為朔望月常數(shù),則所求年天正經(jīng)朔后第k個朔的具體時刻Tpm(單位是日)由式(2)求得。
式中rsm表示冬至時刻與天正十一月經(jīng)朔時刻的時間差,歷法中一般稱之為天正閏日及余。定朔的計算要復雜一些,是在經(jīng)朔上加入太陽和月亮不均勻性的修正項,具體計算方法如公式(3)所示,計算結(jié)果單位是日。
式中g=G/A是近點月常數(shù);t 24表示一個氣的長度,歷法中一般稱為氣策;rs和rm分別表示所求經(jīng)朔到最近一個氣和最近一個近地點(或遠地點)的時間(或距離),歷法中一般稱為入氣日及余和入轉(zhuǎn)日及余,它們不足一日的部分轉(zhuǎn)換成日分數(shù)就是εs和εm;Δs和Δm即太陽和月亮的修正項;ys和ym分別是日躔表和月離表中的“朒胐積”(或“脁朒積”),φs和φm分別是日躔表和月離表中的“損益率”;k和l的意義與式(1)和(2)相同;Trm就是所求的定朔時刻。需要說明的是,ym和φm可以直接根據(jù)rm的整數(shù)值查找相應日數(shù)的數(shù)據(jù),而ys和φs則根據(jù)歷法中所給的每氣的日躔數(shù)據(jù)通過插值算法計算得到每一氣每一天的數(shù)值,然后用l確定查哪氣的表,用rs的整數(shù)值查找相應日數(shù)的日躔數(shù)據(jù)。關于每一天日躔數(shù)據(jù)的計算,可參考文獻[12]。
宋史中的天象記錄很多,但明確記載使用當時歷法進行推算且有詳細推算結(jié)果的記錄相對較少?!端问贰分杏涊d使用歷法推算氣朔的記錄,目前僅發(fā)現(xiàn)6處。我們對這6條記錄進行重新計算,復原當時歷法推算的情況。
這些記錄中,有些明確給出使用哪部歷法進行計算,個別則沒有明確說明。特別是在改歷前后,進行驗歷的過程中,那當時用以推算的歷法不好確定。對此,在必要時我們選擇改歷前后可能使用推算的幾部歷法同時進行復原推算。為了更清楚各部歷法的基本天文常數(shù),方便計算過程中隨時使用,我們將這6條記錄可能涉及的歷法的基本信息和常數(shù)列于表1中。
《宋史》記載歷法推算節(jié)氣的記錄有兩條。第一條是:“今年十一月冬至,日景表當在十九日壬午,《會元歷》注乃在二十日癸未,系差一日?!冻缣鞖v》癸未日冬至加時在酉初[二刻]七十六分,《紀元歷》在丑初一刻六十七分,《統(tǒng)元歷》在丑初二刻二分,《會元歷》在丑初一刻三百四十分?!盵15]2890
表1宋代歷法基本常數(shù)
在討論《會元歷》推算紹熙四年(1193)冬至時刻的精度時,歷家利用歷法推算結(jié)果與實測結(jié)果相比較。實測冬至應該在十一月十九壬午日,而四部歷法都推算得癸未日。歷法推算紹熙四年的冬至實際上使用1194年的數(shù)據(jù),即公式(1)中n=1 194。以下計算中的積年選取方式與此同。N1194的計算方法是用歷法的上元積年加上歷法行用年份與1194年的差值。例如,《崇天歷》的計算方法是十一年歷,稱成永祥等依《開禧》新歷推算,辛亥歲十二月[二]十七日立春在酉正一刻,今所頒歷乃相師堯等依《淳祐新歷》推算,到壬子歲立春日在申正三刻?!盵15]2896
這是在用《開禧歷》和《淳祐歷》推算1252年的立春氣時刻。由于《淳祐歷》已經(jīng)失傳,我們僅能使用《開禧歷》進行復原?!堕_禧歷》上元到1152年積年為N1252=N1208+(1252-1208)=7848184+44=7848228,由于立春為冬至后第3氣,則l=3,代入公
其他歷法與此類似??傻谩都o元歷》的N1194=28 613 554,《統(tǒng)元歷》的 N1194=94 251 650,《會元歷》的N1194=25 494 770。
癸未日丑初一刻340.5分。需要說明的是,我們復原的結(jié)果在由日分轉(zhuǎn)換為辰刻時,日法除以12得到一辰的日分數(shù),日法除以100得到一刻的日分數(shù)。每一日以子正起算,每辰由初刻、一刻、二刻順序計算,即每辰時刻為初刻。下面其他記錄復原時,計算方式與此同。
通過比較,我們發(fā)現(xiàn)史載的記錄是我們復原結(jié)果取整后的數(shù)值,可以說,我們的復原與史料相合。而通過現(xiàn)代計算得,1193年冬至時刻在12月14日(壬午)14時49分[16]。
第二條節(jié)氣推算記錄是:“今淳祐十年冬所頒正一刻325分,與史載記錄相合。而現(xiàn)代計算的結(jié)果是1152年立春在1月28日(癸卯)7時13分[16]。
《宋史》記載歷法推算定朔的記錄有四條。
朒積ys(2)=54.1①《紀元歷》的日躔數(shù)據(jù)采用文獻[12]已經(jīng)復原的結(jié)果,其余歷法的日躔數(shù)據(jù)系作者根據(jù)歷法進行插值計算的結(jié)果。。由此得入氣腓朒定數(shù)
《紀元歷》入轉(zhuǎn)日求法是得到紹興四年十二月定朔為乙亥日5 466.596 2日分,日分除以日法7 290乘以10 000得7 499。按照《紀元歷》月份安排規(guī)則,在秋分后定朔小余超過四分之三日才要進朔,而我們復原的結(jié)果不足7 500,因此太史不進朔是正確的。本次復原過程中必要的變量結(jié)果列于表2中。
使用《崇天歷》和《統(tǒng)元歷》推算本次定朔的過程與上面過程類似,我們不再重復寫出這些計算過程,僅是將公式(2)和(3)中的中間變量的計算結(jié)果和最終復原結(jié)果列于表2中。后面幾條記錄的推算,我們也不再重復寫出推算過程,僅將計算結(jié)果列出在表2中。要說明的是,《崇天歷》入轉(zhuǎn)日從遠地點起算,與其余歷法不一樣;入轉(zhuǎn)胐朒定數(shù)計算時如果入轉(zhuǎn)日是七日、十四日、二十一日和二十八日時,算法會略有不同,具體算法參考文獻[12]。復原的結(jié)果是,《崇天歷》和《統(tǒng)元歷》定朔日分8 111.575 4和5 315.058 3分別除以各自日法乘以10 000得7 660和7 670,那么,按照這兩部歷法推得的定朔確實要進朔的,而且數(shù)值與史載的7 680也更接近些。
第二條記錄是接著第一條的,陳得一繼續(xù)指出:“今年(紹興五年)五月小余七千一百八十,少三百二十,乃為進朔,四月大盡。”[15]2869他認為用歷法推算紹興五年五月定朔小余為7 180,結(jié)果太史進朔了,這是不應該的。因紹興五年閏二月,五月相當于天正經(jīng)朔后第7個朔。計算結(jié)果表明,《紀元歷》定朔5 367.466 0日分,合小余7 363,《崇天歷》定朔7 736.919 3日分,合小余7 306,《統(tǒng)元歷》定朔5 028.635 5日分,合小余7 256。三歷結(jié)果都不是7 180,但確實小余都不到7 500,至于其中的原因,還有待于更深入的討論。
表2各部歷法計算定朔時刻的過程和結(jié)果
第三條記錄是:“乾道二年,日官以《紀元歷》推三年丁亥歲十一月甲子朔,將頒行,裴伯壽詣禮部陳《統(tǒng)元歷》法當進作乙丑朔,于是依《統(tǒng)元歷》法正之。”[15]2870當時行用《統(tǒng)元歷》,但是歷官經(jīng)常使用《紀元歷》推算,推算乾道三年十一月的朔(1167年12月13日),裴伯壽認為不當。我們復原的結(jié)果表明,歷法推的定朔日都在甲子日,《紀元歷》定朔5 461.743 3日分,合小余7 492,此朔不進;《統(tǒng)元歷》定朔5 218.094 1日分,合小余7 530,此朔當進。由此看來,裴伯壽所說的與我們復原的一致,符合事實。
最后一條記錄是:“乾道十年頒賜歷日,其中十二月已定作小盡,乾道十一年正月一日注:癸未朔,畢乾道十一年正月一日?!冻缣臁贰ⅰ督y(tǒng)元》二歷算得甲申朔,《紀元》、《乾道》二歷算得癸未朔,今《乾道歷》正朔小余,約得不及進限四十二分,是為疑朔?!盵15]2882乾道十一年(1175)正月朔,四部歷法推算結(jié)果不盡相同,當時行用的《乾道歷》推算失誤,不當進朔而進朔。我們復原的結(jié)果是,四歷定朔都在癸未日,《乾道歷》定朔22 371.077 0日分,合小余7 457,《崇天歷》定朔7 884.689 0日分,合小余7 445,《統(tǒng)元歷》定朔5 111.969 5日分,合小余73 77,《紀元歷》定朔5 397.484 3日分,合小余7 401。四歷結(jié)果都達不到進限,乾道歷小余不及進限43分,與史載相吻合①《乾道歷》定朔小余7 457后面還有小數(shù)部分,減7 500,實際結(jié)果不足43,按照古代歷法計算經(jīng)常取整的做法,可得不及進限應該是42分。。
我們完全按照歷法的計算過程復原了《宋史》中六條氣朔記錄。我們完整地給出兩條平氣推算記錄和一條定朔推算記錄的復原計算過程,由于篇幅所限,其余的計算只給出了推算中涉及的中間變量的數(shù)值和復原的結(jié)果。對于史料中出現(xiàn)的其他關于氣朔的記錄,我們可以按照給出的公式和復原的算例進行復原計算,同時,關于宋代朔閏考證,本文的公式和計算過程,也具有一定的參考價值。
兩條節(jié)氣記錄的史載結(jié)果與復原結(jié)果一致,這不但能夠證明史料記載的正確性,也可間接說明我們對歷法理解是正確的。而對于4條定朔記錄,其中兩條與復原結(jié)果一致,另兩條記錄與復原結(jié)果有一定差距,但不明顯。紹興四年十二月的記錄,使用《紀元歷》推算應該不進朔,而使用《統(tǒng)元》和《崇天》則都要進朔,記錄中沒有明確使用了哪部歷法,因此,我們推測陳得一可能使用《統(tǒng)元歷》進行推算,與太史所用歷法不同。紹興五年五月的記錄,三部歷法推算的定朔小余都在7 500以下,結(jié)果都應該不進朔。復原結(jié)果與史載的7 180不合。這可能與我們復原計算中運算的順序及小數(shù)的取舍與當時歷家的操作不同有關,也可能另有其他原因,至于真相是什么,將是我們下一步認真研究的問題。
參考文獻:
[1]黃一農(nóng).星占、事實與偽造天象——以“熒惑守心”為例[J].自然科學史研究,1991,10(2):120-132.
[2]薄樹人.古代日食觀測模擬實驗報告[M]//薄樹人文集.合肥:中國科學技術大學出版社,2003:320-325.
[3]邢鋼,石云里.漢代日食記錄的可靠性分析——兼用日食對漢代歷法的精度進行校驗[J].中國科技史雜志,2005,26(2):107-121.
[4]李勇.兩漢《五行志》中的日食記錄研究[J].天文學報,2015,56(5):491-505.
[5]劉次沅.二十五史天象記錄??迸e隅[J].文史,2014(1):123-136.
[6]劉次沅,竇忠,莊威風.明代大食分日食記錄考證[J].陜西天文臺臺刊,1998(1):84-98.
[7]LIU CY.The regular records of solar eclipse in ancient China and a computer readable table[J].Achieve for History of Exact Science,2005,59(2):157-168.
[8]張培瑜.中國古代月食記錄的證認和精度研究[J].天文學報,1993(1):63-79.
[9]黃一農(nóng).中國史歷表朔閏正舉隅——以唐《麟德歷》行用時期為例[J].漢學研究,1992,10(2):305-332.
[10]劉金沂,趙澄秋.《麟德歷》定朔計算法[M]//薄樹人,劉金沂.中國天文學史文集:第3集.北京:科學出版社,1984:36-88.
[11]李勇,張培瑜.中國古歷定朔推步綜述[J].天文學進展,1996,14(1):66-76.
[12]薄樹人.《紀元歷》解[M]//薄樹人文集.合肥:中國科學技術大學出版社,2003:369-405.
[13]滕艷輝,王鵬云.《紀元歷》等8部宋代歷法的定朔推步及精度分析[J].中國科技史雜志,2009,30(1):55-64.
[14]滕艷輝,王鵬云.《紀元歷》定朔算法模型及分析[J].西北大學學報(自然科學版),2008,38(5):855-858.
[15]脫脫,帖睦爾達世,賀惟一,等.宋史·律歷志[M]//中華書局編輯部.歷代天文律歷等志匯編:第8冊.北京:中華書局,1976.
[16]張培瑜.三千五百年歷日天象[M].鄭州:河南教育出版社,1990:940-941.
[17]滕艷輝.宋代朔閏與交食研究[D].西安:西北大學,2012:144-145.