辛佳岱 唐 泉
(西北大學(xué)科學(xué)史高等研究院,西安 710127)
自西漢《太初歷》起,行星理論就是歷法的重要內(nèi)容。隋代之前的歷法家根據(jù)行星和太陽(yáng)的平運(yùn)動(dòng)來(lái)推算行星的見(jiàn)、伏等特征天象發(fā)生的時(shí)刻及其位置。公元560年前后,張子信發(fā)現(xiàn)太陽(yáng)與行星運(yùn)動(dòng)不均勻現(xiàn)象之后,歷法家不斷探索行星不均勻運(yùn)動(dòng)修正算法,以達(dá)到提高行星位置計(jì)算精度的目的。劉焯的《皇極歷》(600)是現(xiàn)存中國(guó)第一部設(shè)計(jì)算法修正太陽(yáng)與行星不均勻運(yùn)動(dòng)的歷法,并且影響了隋代及初唐歷法中步五星術(shù)算法的編制,如張胄玄《大業(yè)歷》(607)、傅仁均《戊寅元?dú)v》(619)和李淳風(fēng)《麟德歷》(665)等三部歷法都沿襲了《皇極歷》中五星入氣加減差算法,以修正行星不均勻運(yùn)動(dòng)。僧一行在《大衍歷》(724)中,將《皇極歷》等歷法中的五星入氣加減差發(fā)展為五星爻象歷,基本奠定了中國(guó)古代行星不均勻運(yùn)動(dòng)修正算法的框架,這個(gè)算法在楚衍和宋行古等人編制的《崇天歷》(1023)中逐漸趨于成熟,此后一直到元代《授時(shí)歷》和明代《大統(tǒng)歷》,幾乎未發(fā)生實(shí)質(zhì)性變化。
現(xiàn)有研究涉及行星運(yùn)動(dòng)的理論模型[1,2]、隋代及初唐歷法中的“五星入氣加減差”算法及其精度[3—6]、行星理論中一些重要算法和天文數(shù)表[7—10],以及中印行星理論比較研究[11,12]等方面內(nèi)容。關(guān)于行星計(jì)算精度的研究主要集中于宋元?dú)v法[13—17],對(duì)明代《大統(tǒng)歷》和《回回歷法》也有相關(guān)考察[18],而對(duì)宋代之前諸歷的行星精度較少涉及[19,20]。這對(duì)我們?nèi)嬖u(píng)價(jià)中國(guó)古代行星計(jì)算精度造成了很大困難。
在中國(guó)古代行星理論發(fā)展史上,隋代劉焯所制《皇極歷》占據(jù)著重要地位,故本文以《皇極歷》行星算法為研究對(duì)象,在對(duì)算法術(shù)文全面解讀的基礎(chǔ)上,利用Python語(yǔ)言模擬其算法并討論行星視位置計(jì)算精度,試圖回答如下問(wèn)題:張子信發(fā)現(xiàn)太陽(yáng)視運(yùn)動(dòng)與行星公轉(zhuǎn)不均勻現(xiàn)象后,《皇極歷》是如何將這些天文發(fā)現(xiàn)融入行星運(yùn)動(dòng)理論中的?《皇極歷》推算行星視位置的誤差如何?
《皇極歷》記載了五星的天文常數(shù)、入氣加減差、動(dòng)態(tài)描述和五個(gè)推步算法([21],頁(yè)1963—1970),其行星理論的核心目標(biāo)是推算行星自始見(jiàn)至始伏期間每日的黃道宿度。隋代歷法中通常不考慮行星伏行段的運(yùn)行情況,這是因?yàn)榉卸蔚男行俏恢貌灰子^測(cè),無(wú)法準(zhǔn)確給出其運(yùn)動(dòng)狀態(tài),當(dāng)時(shí)歷法中有“伏不書(shū)度”或“伏不注度”等記載([21],頁(yè)1847、1919)。此外,隋代歷法家對(duì)內(nèi)行星運(yùn)動(dòng)規(guī)律掌握還不夠好,如《皇極歷》中水星的“入氣加減差”僅給出一些經(jīng)驗(yàn)觀測(cè)的描述性言語(yǔ)概述,沒(méi)有量化數(shù)據(jù),無(wú)法計(jì)算任意時(shí)刻內(nèi)行星的位置[3]。故本文的討論僅限于外行星,不涉及內(nèi)行星。
外行星包含五個(gè)天文常數(shù)。以土星為例,依次是土數(shù)、伏半平、復(fù)日及余、殘日及余和見(jiàn)去日。土數(shù)(H)意為土星的會(huì)合周期,單位為“分”;以“氣日法”(A=46644)除之得復(fù)日及余(h),即將其換算為以日為單位的會(huì)合周期;伏半平(F)意為土星伏行時(shí)間的一半,單位為“分”;殘日及余是土星會(huì)合周期與回歸年日數(shù)之差。見(jiàn)去日則是晨始見(jiàn)時(shí)刻土星與太陽(yáng)的角距(1)《皇極歷》記載木星見(jiàn)去日為14度,火星為16度,土星為16.5度。。
五個(gè)推步算法即“推星平見(jiàn)術(shù)”“求常見(jiàn)日”“求定見(jiàn)日”“求星見(jiàn)所在度”和“求次日”。其中,求常見(jiàn)日涉及修正行星不均勻運(yùn)動(dòng)的五星“入氣加減差”;求次日需要借助行星自晨始見(jiàn)至夕始伏的動(dòng)態(tài)描述(五星動(dòng)態(tài)表)。這五個(gè)算法是為了計(jì)算行星特征天象發(fā)生時(shí)刻和任意時(shí)刻的行星位置而設(shè)計(jì)。具體而言,前三個(gè)算法推算行星晨始見(jiàn)發(fā)生的時(shí)刻,后兩個(gè)算法推算在一個(gè)會(huì)合周期內(nèi)行星自始見(jiàn)至始伏的每日位置。下面對(duì)各個(gè)算法的名稱(chēng)、目的及其算法思路進(jìn)行釋讀。
(1)推星平見(jiàn)術(shù)。按照太陽(yáng)和行星的平運(yùn)動(dòng)推算行星平見(jiàn)時(shí)刻與其前一個(gè)冬至?xí)r刻之間的時(shí)距。
據(jù)術(shù)文,假設(shè)Nn為上元時(shí)刻距某一年的積年數(shù),t為回歸年的日數(shù),h為行星會(huì)合周期的日數(shù),f為行星伏行一半的日數(shù),則以會(huì)合周期推算行星平見(jiàn)時(shí)刻與其前一個(gè)冬至?xí)r刻的時(shí)距γ0,由下式得到:
tNn-f≡h-γ0(modh)
(1)
《皇極歷》定義上元O點(diǎn)起于五星與太陽(yáng)同度的合時(shí)刻,而該算法計(jì)算平見(jiàn)時(shí)刻距離其前一個(gè)冬至?xí)r刻的時(shí)距γ0。因此,從上元至所求年冬至?xí)r刻的積日數(shù)及余tNn中,減去行星伏行時(shí)間一半的日數(shù)f,余為A0P,即將起算點(diǎn)從上元行星的合時(shí)刻O(píng)點(diǎn)推后到上元之后的行星始見(jiàn)時(shí)刻A0點(diǎn)。再?gòu)腁0P中減去整數(shù)倍的行星會(huì)合周期日數(shù)h,不足部分為AnP,以行星會(huì)合周期AnAn+1減之,所得為PAn+1,即術(shù)文所求γ0。如圖1所示。
圖1 《皇極歷》行星平見(jiàn)時(shí)刻與所求年天正冬至?xí)r刻的時(shí)距
(2)求常見(jiàn)日。考慮行星中心差,對(duì)平見(jiàn)時(shí)刻進(jìn)行修正,得到修正后的行星常見(jiàn)時(shí)刻距離其前一個(gè)冬至?xí)r刻的時(shí)距。
如圖2,根據(jù)公式(1)推算出行星平見(jiàn)時(shí)刻與其前一個(gè)冬至?xí)r刻的時(shí)距γ0,該算法求經(jīng)行星中心差修正后的行星常見(jiàn)時(shí)刻距離其前一個(gè)冬至?xí)r刻的時(shí)距γ1,由下式得到:
(2)
圖2 《皇極歷》行星常見(jiàn)時(shí)刻與所求年天正冬至?xí)r刻的時(shí)距
平見(jiàn)時(shí)刻與常見(jiàn)時(shí)刻之間的修正值Δm,其數(shù)值及符號(hào)取決于行星平見(jiàn)時(shí)刻所入節(jié)氣。換言之,由于修正行星中心差的結(jié)果取決于“平見(jiàn)”所值節(jié)氣,故稱(chēng)為“入氣加減差”算法。
在隋代及初唐的一些歷法中,“入氣加減差”是為了修正行星中心差對(duì)五星始見(jiàn)時(shí)刻的影響而設(shè)計(jì)的算法。雖然五星“入氣加減差”算法帶有一定的經(jīng)驗(yàn)色彩,但對(duì)于外行星運(yùn)動(dòng)不均勻性的改正是有效的、科學(xué)的[3]?!痘蕵O歷》木星和土星的“入氣加減差”算法前人已解釋清楚[3—6],火星的“入氣加減差”術(shù)文記載如下:
平見(jiàn),在雨水前,以十九乘去大寒日;清明前,又十八乘去雨水日,增雨水所乘者;夏至后,以十六乘去處暑日;小滿后,又十五日;寒露前,以十八乘去白露日;小雪前,又十七乘去寒露所乘者(2)嚴(yán)敦杰承擔(dān)??薄端鍟?shū)·律歷志》工作時(shí),在《皇極歷》術(shù)文后的“??庇洝盵二三]指出:“又十七乘去寒露所乘者 當(dāng)作[又十七乘去寒露日,增寒露所乘者]?!眳⒁?jiàn)參考文獻(xiàn)[21],第1973頁(yè)。;大雪后,二十九乘去大寒日,為減,小雪至大雪減二十五日。([21],頁(yè)1964)
經(jīng)分析,這段文字應(yīng)該存有脫訛,陳美東也指出這一點(diǎn)(3)陳美東的??笔牵骸啊迕髑?,又十八乘去雨水日,增雨水所乘者;[清明至夏至加二十七日;]夏至后,以十六乘去處暑日;(小滿)[處暑]后,又(十五日)[二十八乘去白露日。減處暑所乘者];寒露前,……”參見(jiàn)參考文獻(xiàn)[3]。,然而筆者按照校勘改動(dòng)最少原則,對(duì)術(shù)文??比缦拢?/p>
平見(jiàn),在雨水前,以十九乘去大寒日;清明前,又十八乘去雨水日,增雨水所乘者;[清明至小滿加二十七日;]夏至后,以十六乘去處暑日;小滿后,又十五[乘去夏至]日;寒露前,以十八乘去白露日;小雪前,又十七乘去寒露日,增寒露所乘者;大雪后,二十九乘去大寒日,為減,小雪至大雪減二十五日。
上述文字表明,若依據(jù)火星會(huì)合周期推算的始見(jiàn)時(shí)刻“平見(jiàn)”所入節(jié)氣不同,則火星運(yùn)動(dòng)不均勻性影響的改正值就會(huì)改變?;鹦请S著“平見(jiàn)”所入節(jié)氣而引起時(shí)間提前或是滯后的改正曲線,如圖3所示。
圖3 《皇極歷》火星“平見(jiàn)日”至“常見(jiàn)日”的改正值曲線
圖3中橫坐標(biāo)為黃經(jīng)值,春分對(duì)應(yīng)黃經(jīng)0°,每經(jīng)過(guò)一氣黃經(jīng)值的改變量為15°,據(jù)此可換算到其余對(duì)應(yīng)的節(jié)氣??v坐標(biāo)為時(shí)間改正值,以“日”為單位,正值表示經(jīng)修正行星不均勻運(yùn)動(dòng)得到的“常見(jiàn)日”較“平見(jiàn)日”滯后(如圖2中的B″點(diǎn)),負(fù)值則表示提前(如圖2中的B′點(diǎn))。
(3)求定見(jiàn)日??紤]太陽(yáng)中心差,對(duì)常見(jiàn)時(shí)刻進(jìn)行修正,得到修正后的行星定見(jiàn)時(shí)刻距離其前一個(gè)冬至?xí)r刻的時(shí)距。
與“求常見(jiàn)日”類(lèi)似,此處要對(duì)γ1進(jìn)行太陽(yáng)中心差修正,求修正后的行星定見(jiàn)時(shí)刻距離其前一個(gè)冬至?xí)r刻的時(shí)距γ2,由下式得到:
(3)
常見(jiàn)時(shí)刻與定見(jiàn)時(shí)刻之間的修正值為太陽(yáng)中心差Cs,該算法在《皇極歷》步日躔術(shù)中記載([21],頁(yè)1937—1939)。其中,“先后數(shù)”即太陽(yáng)中心差,以“先后數(shù)”除以“轉(zhuǎn)法”(52)得到真太陽(yáng)與平太陽(yáng)的行度之差。日躔表中羅列二十四氣各氣初始時(shí)刻的太陽(yáng)先后數(shù),劉焯設(shè)計(jì)了等間距二次內(nèi)插算法以求每日先后數(shù)([22],頁(yè)152—155)。
(4)求星見(jiàn)所在度。由于外行星運(yùn)行速度較太陽(yáng)慢,故以定見(jiàn)時(shí)刻太陽(yáng)的位置減去“見(jiàn)去日”,即可得到定見(jiàn)時(shí)刻行星的位置。
術(shù)文中記載定見(jiàn)時(shí)刻太陽(yáng)位置的方法是:計(jì)算行星定見(jiàn)時(shí)刻所在晨前夜半的太陽(yáng)位置,再加上定見(jiàn)日余對(duì)應(yīng)的太陽(yáng)行度即可([21],頁(yè)1969—1970)。為了便于利用Python語(yǔ)言模擬其算法,此處以一種等價(jià)方法替換。根據(jù)《皇極歷》步月離中的“推日度術(shù)”([21],頁(yè)1950—1951),計(jì)算所求年冬至?xí)r刻的太陽(yáng)位置,再由公式(3)得到行星定見(jiàn)時(shí)刻距離所求年冬至?xí)r刻的時(shí)距γ2以步日躔中的太陽(yáng)中心差算法推算出在γ2內(nèi)太陽(yáng)運(yùn)行的度數(shù),即可得到定見(jiàn)時(shí)刻的太陽(yáng)位置。
以土星定見(jiàn)時(shí)刻的位置為例,若令λ0為太陽(yáng)在所求年冬至?xí)r刻的黃道宿度,d為在γ2內(nèi)太陽(yáng)的實(shí)際運(yùn)行度數(shù),并且根據(jù)土星“見(jiàn)去日”常數(shù)得知定見(jiàn)時(shí)刻土星落后太陽(yáng)16.5度。故土星定見(jiàn)時(shí)刻的黃道宿度λ土,由下式得到:
λ土=λ0+d-16.5
(4)
(5)求次日。計(jì)算行星在任意一日的位置。由公式(4)推算出行星定見(jiàn)時(shí)刻的位置,在此基礎(chǔ)上累加行星各日行度,即可得到行星定見(jiàn)之后至始伏期間每一日的位置。
《皇極歷》記載了行星在一個(gè)會(huì)合周期中自始見(jiàn)至始伏的逐日行度。根據(jù)土星的動(dòng)態(tài)描述([21],頁(yè)1966),羅列出土星自晨始見(jiàn)至夕始伏的運(yùn)動(dòng)狀態(tài),如表1所示。
表1 土星動(dòng)態(tài)表
由表1可見(jiàn),土星運(yùn)動(dòng)狀態(tài)劃分為五個(gè)段目:前順行、前留、逆行、后留和后順行(4)前順行段目以土星晨始見(jiàn)為起點(diǎn),后順行段目以土星夕始伏為結(jié)束?!痘蕵O歷》術(shù)文中并未出現(xiàn)“前順行、前留”等這些名稱(chēng),是我們?yōu)榱朔奖忝枋?,依?jù)唐代歷法五星動(dòng)態(tài)表中的名稱(chēng),結(jié)合《皇極歷》土星動(dòng)態(tài)描述給出相應(yīng)段目的名稱(chēng)。,并未給出伏行段目行星的動(dòng)態(tài)描述,僅以“伏半平”和“見(jiàn)去日”兩常數(shù)籠統(tǒng)刻畫(huà)行星伏行的時(shí)間和度數(shù)。木星的運(yùn)行狀態(tài)與土星類(lèi)似,相對(duì)容易理解。
《皇極歷》中火星的運(yùn)動(dòng)劃分為七個(gè)段目:前疾、前遲、前留、逆行、后留、后遲和后疾?;鹦窃谇凹才c后疾段目的動(dòng)態(tài)描述與以往歷法大有不同,表現(xiàn)為這兩段目的火星運(yùn)動(dòng)狀態(tài)并非直接給出,而是要先判斷火星前疾和后疾初日距離其前一個(gè)冬至的日數(shù),以此推算火星在該段目上的運(yùn)行時(shí)間(日率)和度數(shù)(度率)等([21],頁(yè)1964—1965)。這種處理方式與印度6世紀(jì)中葉《五大歷書(shū)匯編》(Pacasiddhāntikā)中的《寶莉莎歷數(shù)書(shū)》(Paulia)將火星動(dòng)態(tài)表與行星的黃經(jīng)相聯(lián)系的設(shè)計(jì)方案非常類(lèi)似[23]。
火星在前疾與后疾兩段目動(dòng)態(tài)描述首先根據(jù)火星晨始見(jiàn)時(shí)刻或后疾初始時(shí)刻所值節(jié)氣,對(duì)應(yīng)算出火星在前疾段或后疾段的日率和度率,之后在某些節(jié)氣上,還要對(duì)日率和度率進(jìn)行二次修正。其中,對(duì)某些節(jié)氣的日率、度率二次修正時(shí),有“半度之行”的說(shuō)法,如術(shù)文言“白露至寒露,初日行半度,四十日行二十度”([21],頁(yè)1964)。以往學(xué)者的理解是火星晨見(jiàn)初日運(yùn)動(dòng)速度均為半度(5)張培瑜等學(xué)者認(rèn)為白露至寒露時(shí),火星晨見(jiàn)初日運(yùn)動(dòng)速度均為半度,見(jiàn)參考文獻(xiàn)[24]。劉洪濤認(rèn)為火星在白露至寒露間初見(jiàn)的平均速度是日行半度,見(jiàn)后勻速行40日移20度,見(jiàn)參考文獻(xiàn)[25]。王應(yīng)偉認(rèn)為術(shù)文疑有脫字或脫句,見(jiàn)參考文獻(xiàn)[26]。。唐泉依據(jù)初唐《戊寅元?dú)v》《麟德歷》中對(duì)火星前疾段目的修正法則時(shí)的論述,認(rèn)為此處“半度之行”,并非火星晨始見(jiàn)在白露至寒露這個(gè)時(shí)段內(nèi),其初日視行速為0.5度/日,而是若在這個(gè)時(shí)段內(nèi)要對(duì)原有日率和度率進(jìn)行二次修正,即日率減去40日,度率減去20度[19]。
中國(guó)傳統(tǒng)歷法家計(jì)算行星位置的基本思路在《皇極歷》中已雛形初現(xiàn)。概言之,其五星推步的思路是:首先,依據(jù)行星會(huì)合周期推算平見(jiàn)日;其次,以行星中心差修正平見(jiàn)日,得到常見(jiàn)日,再以太陽(yáng)中心差對(duì)常見(jiàn)日加以修正,得到定見(jiàn)日;再次,推算定見(jiàn)時(shí)刻的行星位置;最后,在此基礎(chǔ)上再累加五星動(dòng)態(tài)表中的每日行度,得到行星的每日位置。
為了加深對(duì)《皇極歷》五星推步算法的理解,此處以公元600年冬至之后的土星在一個(gè)會(huì)合周期內(nèi)自晨始見(jiàn)至夕始伏每日夜半的極黃經(jīng)推算過(guò)程為例,給出計(jì)算實(shí)例。
《皇極歷》中與土星位置相關(guān)的基本天文常數(shù)包含:上元距開(kāi)皇二十年(600)積年數(shù)為N600=1008837年(6)此處的積年數(shù)包含所求年,歷法中通常稱(chēng)為“算上”。。歲數(shù)T=17036466.5,土數(shù)H=17635594,伏半平F=864995,它們均以氣日法A=46644為分母,由此得到:
(5)
參照上一節(jié)《皇極歷》計(jì)算行星位置的基本思路,為了得到土星每日夜半的歷取黃經(jīng)值,根據(jù)五星推步算法過(guò)程將其分為五個(gè)步驟執(zhí)行。具體如下:
第1步:求公元600年冬至?xí)r刻距離后一個(gè)土星平見(jiàn)時(shí)刻的時(shí)距γ0。
依據(jù)“推星平見(jiàn)術(shù)”,將上元積年N600、回歸年t、土星會(huì)合周期h等常數(shù)代入公式(1),即
由此得到γ0約是338.2460日。
第2步:求公元600年冬至?xí)r刻距離后一個(gè)土星常見(jiàn)時(shí)刻的時(shí)距γ1。
依據(jù)“求常見(jiàn)日”,可知平見(jiàn)與常見(jiàn)時(shí)刻之間的修正值取決于行星平見(jiàn)時(shí)刻所入節(jié)氣?!痘蕵O歷》平氣日數(shù)約為15.2185日,由第1步所得γ0推算土星平見(jiàn)時(shí)刻入于冬至后的第22氣,即入于小雪后約第3.4385日。按照土星入氣加減差修正并代入公式(2),即
由此得到γ1約是337.6508日。
第3步:求公元600年冬至?xí)r刻距離后一個(gè)土星定見(jiàn)時(shí)刻的時(shí)距γ2,以及定見(jiàn)日期。
依據(jù)“求定見(jiàn)日”,可知常見(jiàn)與定見(jiàn)時(shí)刻之間的修正值取決于行星常見(jiàn)時(shí)刻所入節(jié)氣。土星常見(jiàn)時(shí)刻入冬至后第22氣約第6.7417日,根據(jù)步日躔術(shù),計(jì)算出由于太陽(yáng)運(yùn)動(dòng)不均勻性而修正土星常見(jiàn)時(shí)刻的數(shù)值約是0.7765日。因此,結(jié)合公式(3),即
γ2=337.6508+0.7765(日)。
由此得到γ2約是338.4274日。
推算土星定見(jiàn)日期,需要得知公元600年歷取冬至?xí)r刻的日期。依據(jù)“推氣術(shù)”算法([21],頁(yè)1936—1937),以如下公式求得歷取冬至?xí)r刻:
tN600≡r(mod 60)
(6)
代入常數(shù),得到冬至大小余r:
《皇極歷》的上元起于甲子日,由上式得到冬至大余為29,可知公元600年歷取冬至日的日名為“癸巳”。這一年理論冬至?xí)r刻是600年12月18日21時(shí)36分,日名也是“癸巳”[27],將“21時(shí)36分”化為以日為單位是0.9日。由日名可知恰與歷取冬至在同一日,這一日的儒略日序號(hào)是1940560。上式算得歷取冬至不足一日的小余為0.8118日。因此,這一年的歷取冬至?xí)r刻是600年12月18日19時(shí)29分。
γ2不足整日數(shù)的部分為0.4274日,它與歷取冬至小余0.8118日兩者之和大于1日,則土星定見(jiàn)時(shí)刻與其前一個(gè)冬至所在日夜半的時(shí)距約是339.2391日。由此推算出土星定見(jiàn)日期是601年11月22日。
第4步:求公元600年冬至?xí)r刻之后的土星定見(jiàn)所在日夜半的黃經(jīng)。
(1)求公元600年歷取冬至?xí)r刻的太陽(yáng)黃經(jīng)
方法是在理論冬至?xí)r刻的太陽(yáng)黃經(jīng)270°的基礎(chǔ)上,增減在歷取與理論冬至?xí)r刻差期間太陽(yáng)運(yùn)行的度數(shù)?!痘蕵O歷》依據(jù)日行盈縮將回歸年以“二分”為界分為兩部分,“秋分后春分前為盈汎,春分后秋分前為虧總”([21],頁(yè)1936)。據(jù)術(shù)文得知冬至每氣日數(shù)是:
根據(jù)步日躔術(shù),得到冬至這一日太陽(yáng)的中心差值為:
因此,公元600年歷取冬至?xí)r刻的太陽(yáng)黃經(jīng)是:
(2)求公元600年冬至?xí)r刻之后的土星定見(jiàn)時(shí)刻的黃經(jīng)
依據(jù)“求星見(jiàn)所在度”,得知關(guān)鍵步驟是求太陽(yáng)在γ2內(nèi)實(shí)際運(yùn)行度數(shù)d。定見(jiàn)時(shí)刻入冬至后第22氣約第7.5183日,根據(jù)步日躔術(shù),得到在γ2內(nèi)太陽(yáng)實(shí)行度與平行度之差約為0.7518度。由于太陽(yáng)平行度為每日1度,所以太陽(yáng)從冬至?xí)r刻至定見(jiàn)時(shí)刻運(yùn)行的度數(shù)為:
d=γ2-0.7518=338.4274-0.7518=337.6755(度)。
將其結(jié)果代入公式(4),即
由此得知土星定見(jiàn)時(shí)刻的黃經(jīng)是226.4620°。
(3)求公元600年冬至?xí)r刻之后的土星定見(jiàn)所在日夜半的黃經(jīng)
(7)
根據(jù)第3步所得土星定見(jiàn)時(shí)刻與其前一個(gè)冬至所在日夜半時(shí)距約是339.2391日,可知土星定見(jiàn)小余r′約為0.2391日,且由表1得到土星的初日速度v0為4364/46644(度/日)。將其代入(7)式得到:
由此得知土星定見(jiàn)所在日夜半的黃經(jīng)是226.4400°。
第5步:求公元600年冬至?xí)r刻之后的土星定見(jiàn)所在日至夕始伏每日夜半的黃經(jīng)。
在第4步計(jì)算結(jié)果基礎(chǔ)上,累加表1土星動(dòng)態(tài)表中的自晨始見(jiàn)至夕始伏土星的每日行度,得到定見(jiàn)之后每一日夜半的土星黃經(jīng)值,其結(jié)果如下文表2中的“歷取黃經(jīng)”一欄所示。
上一節(jié)中我們以土星為例,利用《皇極歷》五星推步方法已得到公元600年冬至之后的土星一個(gè)會(huì)合周期自晨始見(jiàn)至夕始伏每日夜半的歷取極黃經(jīng),所以將其與理論黃經(jīng)求差值的做法(歷取黃經(jīng)-理論黃經(jīng)),即可算得土星這個(gè)周期的黃經(jīng)絕對(duì)誤差(8)行星視位置的極黃經(jīng)和真黃經(jīng)的確有一些差別,但由于外行星運(yùn)行軌道與黃道的夾角較小,因此這兩者的差別就非常小,且與行星理論的系統(tǒng)誤差比較,外行星的這些誤差目前可以暫時(shí)忽略。參見(jiàn)參考文獻(xiàn)[1]。。
土星的理論黃經(jīng)結(jié)果可以通過(guò)天文軟件Skymap提取并計(jì)算得出,寧曉玉的研究表明Skymap軟件滿足古天文研究數(shù)據(jù)的精確度和穩(wěn)定性,是準(zhǔn)確可靠的天文軟件[28]。所提取的理論數(shù)據(jù)是土星自601年11月22日定見(jiàn)之后341日的每日夜半時(shí)刻赤經(jīng)和赤緯值,需要將其換算到對(duì)應(yīng)的黃經(jīng)值,其結(jié)果如表2中的“理論黃經(jīng)”一欄所示。
表2 《皇極歷》以601年11月22日為土星定見(jiàn)的會(huì)合周期晨始見(jiàn)至夕始伏位置精度
上一節(jié)已得到公元600年冬至之后的土星定見(jiàn)日期是601年11月22日,其儒略日序號(hào)數(shù)是1940899。這里限于篇幅僅給出該會(huì)合周期自晨始見(jiàn)至夕始伏每間隔20日的土星黃經(jīng)數(shù)值。將《皇極歷》五星推步算法得到的歷取黃經(jīng)與理論黃經(jīng)求差值,以推算土星這個(gè)周期的黃經(jīng)絕對(duì)誤差,如表2所示。
根據(jù)表2最后一欄“黃經(jīng)誤差”,以每日結(jié)果繪制土星黃經(jīng)絕對(duì)誤差散點(diǎn)圖,如圖4所示。經(jīng)統(tǒng)計(jì)分析,土星數(shù)據(jù)量有341個(gè),黃經(jīng)誤差絕對(duì)值的平均值為1.46°,誤差絕對(duì)值的最大值為2.51°。
圖4 601年11月22日定見(jiàn)至始伏土星黃經(jīng)絕對(duì)誤差散點(diǎn)圖
以同樣方式分別計(jì)算出木星開(kāi)皇二十年冬至后定見(jiàn)發(fā)生于601年6月2日,火星定見(jiàn)發(fā)生于601年11月29日。分別繪制出木星和火星在這個(gè)會(huì)合周期內(nèi)自晨始見(jiàn)至夕始伏期間的黃經(jīng)絕對(duì)誤差散點(diǎn)圖,如圖5和圖6所示。
圖5 601年6月2日定見(jiàn)至始伏木星黃經(jīng)絕對(duì)誤差散點(diǎn)圖
圖6 601年11月29日定見(jiàn)至始伏火星黃經(jīng)絕對(duì)誤差散點(diǎn)圖
經(jīng)統(tǒng)計(jì),木星數(shù)據(jù)量有363個(gè),黃經(jīng)誤差絕對(duì)值的平均值為1.83°,誤差絕對(duì)值的最大值為3.12°;火星數(shù)據(jù)量有624個(gè),黃經(jīng)誤差絕對(duì)值的平均值為4.21°,誤差絕對(duì)值的最大值為8.67°。
為了更深入全面探討《皇極歷》外行星計(jì)算精度,接下來(lái)將推算《皇極歷》制成之后約30年長(zhǎng)時(shí)段內(nèi)木星、火星和土星在每日夜半的黃經(jīng),并將其與行星理論黃經(jīng)比較,以得到絕對(duì)誤差結(jié)果。對(duì)于木星,計(jì)算了開(kāi)皇二十年冬至后的28個(gè)完整會(huì)合周期自晨始見(jiàn)至夕始伏的每日夜半位置,數(shù)據(jù)量為10165個(gè);對(duì)于火星,計(jì)算了15個(gè)完整會(huì)合周期的每日夜半位置,數(shù)據(jù)量為9204個(gè);對(duì)于土星,計(jì)算了29個(gè)完整會(huì)合周期的每日夜半位置,數(shù)據(jù)量為10231個(gè)。
根據(jù)計(jì)算結(jié)果分別繪制出木星、火星和土星的黃經(jīng)絕對(duì)誤差散點(diǎn)圖,如圖7—9所示。圖中的縱坐標(biāo)表示行星黃經(jīng)絕對(duì)誤差,單位為“°”;橫坐標(biāo)表示從公元600年冬至之后外行星首次定見(jiàn)所在日的夜半起算的日數(shù),單位為“日”。圖7中的橫坐標(biāo)始于601年6月2日夜半,圖8始于601年11月29日夜半,圖9始于601年11月22日夜半。
圖7 《皇極歷》木星黃經(jīng)絕對(duì)誤差散點(diǎn)圖
圖8 《皇極歷》火星黃經(jīng)絕對(duì)誤差散點(diǎn)圖
圖9 《皇極歷》土星黃經(jīng)絕對(duì)誤差散點(diǎn)圖
從圖7—9可以看出,外行星的黃經(jīng)絕對(duì)誤差在約30年內(nèi)呈現(xiàn)出周期性的變化。然而,在此之中火星有兩個(gè)會(huì)合周期的誤差比較反常。通過(guò)查驗(yàn),這兩個(gè)周期的晨始見(jiàn)分別處于白露、秋分兩氣,處于這兩氣的修正方案是“白露至寒露,初日行半度,四十日行二十度”。已在第1章中論述火星動(dòng)態(tài)描述時(shí),指出此處“半度之行”是對(duì)火星晨始見(jiàn)位于“白露至寒露”段內(nèi)的二次修正,日率減去40日,度率減去20度。若不考慮術(shù)文中的“初日行半度”的修正,可繪制出火星黃經(jīng)絕對(duì)誤差散點(diǎn)圖,如圖10所示。
圖10 《皇極歷》火星黃經(jīng)絕對(duì)誤差散點(diǎn)圖(不修正“初日行半度”)
如圖10,若不考慮火星晨始見(jiàn)位于“白露至寒露”段內(nèi)“初日行半度”的修正,這兩個(gè)反常周期(圖8)的誤差會(huì)大幅度減小,且與前后會(huì)合周期的誤差銜接度更好。
因此,根據(jù)以上分析,《皇極歷》外行星計(jì)算精度可由表3中的相關(guān)數(shù)據(jù)反映。
表3 《皇極歷》601—630年外行星計(jì)算精度(9)表3中火星計(jì)算精度結(jié)果均為不考慮“初日行半度”情況下所得。
印度天文學(xué)著作《五大歷書(shū)匯編》成書(shū)于6世紀(jì)中葉,其中的《寶莉莎歷數(shù)書(shū)》與中國(guó)傳統(tǒng)歷法處理行星運(yùn)動(dòng)的方式相同,即以代數(shù)方法計(jì)算行星的位置。唐泉對(duì)《寶莉莎歷數(shù)書(shū)》中的行星運(yùn)動(dòng)作了深入研究并給出外行星及金星的計(jì)算精度[11],外行星計(jì)算精度數(shù)據(jù)摘錄于表4。通過(guò)比較,《皇極歷》中推算外行星黃經(jīng)誤差精度相比《寶莉莎歷數(shù)書(shū)》要稍微高一些。
表4 《寶莉莎歷數(shù)書(shū)》行星計(jì)算精度
根據(jù)上述對(duì)《皇極歷》行星推步算法的解讀分析,不難看出,定見(jiàn)時(shí)刻被視為行星在一個(gè)會(huì)合周期上的關(guān)節(jié)點(diǎn),再由太陽(yáng)位置及見(jiàn)去日推算行星定見(jiàn)時(shí)刻的位置,最后以行星每日的行度累加,即可得到行星任意一日的位置。可見(jiàn),行星定見(jiàn)時(shí)刻的推算,以及行星在一個(gè)會(huì)合周期內(nèi)自晨始見(jiàn)至夕始伏的每日行度都有可能影響到《皇極歷》外行星位置計(jì)算精度。接下來(lái),從這兩方面展開(kāi)探討。
一方面,有必要對(duì)行星在約30年時(shí)段內(nèi)每次定見(jiàn)時(shí)刻的精度進(jìn)行分析。依據(jù)《皇極歷》行星推步算法得到開(kāi)皇二十年冬至后約30年內(nèi)木星、火星和土星各完整會(huì)合周期的歷取定見(jiàn)日期,以及由中國(guó)黃道星空天文軟件所得理論定見(jiàn)日期(10)“中國(guó)黃道星空”是劉次沅專(zhuān)門(mén)為研究中國(guó)古代天象記錄而開(kāi)發(fā)的一款天文軟件,它可以計(jì)算并演示日、月、五星在黃道天區(qū)的位置和運(yùn)動(dòng)。此處的“理論定見(jiàn)日期”就是通過(guò)《皇極歷》所給外行星“見(jiàn)去日”常數(shù),進(jìn)而借助該軟件推算這一天象發(fā)生的日期。,如表5所示。
表5 《皇極歷》601—630年木星、火星和土星定見(jiàn)日期
表5中結(jié)果表明木星歷取定見(jiàn)日期與理論定見(jiàn)日期的最大誤差是6日,平均誤差約為2日;火星的最大誤差是41日,平均誤差約為21日;土星的最大誤差是5日,平均誤差約為3日。可見(jiàn),《皇極歷》推算外行星定見(jiàn)時(shí)刻的計(jì)算誤差中火星最大,木星和土星基本相當(dāng)。
另一方面,我們對(duì)外行星在一個(gè)會(huì)合周期內(nèi)自晨始見(jiàn)至夕始伏的速度進(jìn)行分析。根據(jù)表2的計(jì)算結(jié)果,可繪制以600年11月22日為土星定見(jiàn)的一個(gè)會(huì)合周期內(nèi)的理論速度與歷取速度,即呈現(xiàn)出開(kāi)皇二十年冬至之后土星在一個(gè)會(huì)合周期內(nèi)的運(yùn)動(dòng)狀態(tài)。如圖11所示。
圖11 土星理論速度與歷取速度圖示
《皇極歷》中的土星在一個(gè)周期內(nèi)的運(yùn)動(dòng)狀態(tài)被分為前順行、前留、逆行、后留和后順行這五個(gè)段目,且順行與逆行的歷取速度均以勻速運(yùn)動(dòng)給出,如圖11所示。對(duì)比理論速度曲線可以看出,土星的理論速度實(shí)際在每時(shí)每刻都是改變的。歷取速度劃分的段目較少,很難達(dá)到與理論速度較好擬合。此外,歷取速度在前留、后留這兩段目各占39日,而實(shí)際理論速度中“留”卻僅是存有一瞬間的狀態(tài)。因此,《皇極歷》對(duì)土星一個(gè)周期內(nèi)各段目的運(yùn)行狀態(tài)描述也是影響土星計(jì)算精度誤差的一個(gè)重要因素。
以同樣的方式,繪制出開(kāi)皇二十年冬至之后木星和火星在一個(gè)會(huì)合周期內(nèi)的理論速度與歷取速度,如圖12和圖13所示。
圖12 木星理論速度與歷取速度圖示
圖13 火星理論速度與歷取速度圖示
值得注意的是,與木星和土星不同,圖13中所呈現(xiàn)的火星在一個(gè)會(huì)合周期內(nèi)的理論速度與歷取速度并不對(duì)稱(chēng),換言之,其晨始見(jiàn)的速度與該會(huì)合周期夕始伏的速度不相等。從理論速度曲線上同樣反映出這一現(xiàn)象,且歷取速度與之?dāng)M合較好。如圖14所示,我們給出更大的時(shí)間范圍內(nèi)速度擬合曲線,即約公元600—630年火星15個(gè)會(huì)合周期內(nèi)晨始見(jiàn)至夕始伏期間運(yùn)行理論速度與歷取速度圖示。
圖14 《皇極歷》火星公元601年11月29日夜半后每日理論速度與歷取速度圖示
《皇極歷》的火星歷取速度之所以能達(dá)到這樣好的效果,其原因在于它設(shè)計(jì)火星前疾段和后疾段運(yùn)動(dòng)狀態(tài)時(shí)的巧妙算法,以一個(gè)會(huì)合周期中前疾初日與后疾初日所值節(jié)氣,來(lái)分別規(guī)定火星在這兩個(gè)段目運(yùn)行的日率和度率。
本文通過(guò)對(duì)《皇極歷》外行星入氣加減差、動(dòng)態(tài)描述及五星推步算法構(gòu)建思路的解讀,并結(jié)合上述分析討論,得出下面幾點(diǎn)結(jié)論:
(1)根據(jù)表3中的數(shù)據(jù),得知對(duì)《皇極歷》外行星而言,木星和土星黃經(jīng)誤差絕對(duì)值的最大值分別是5.27°和5.10°,誤差絕對(duì)值的平均值分別是1.94°和2.61°。這表明《皇極歷》中木星和土星的計(jì)算精度大體相當(dāng),而火星黃經(jīng)計(jì)算誤差要比木星和土星大得多。火星黃經(jīng)誤差絕對(duì)值的最大值是17.67°,約是木星和土星黃經(jīng)最大誤差的3倍還要多,誤差絕對(duì)值的平均值也達(dá)到4.80°。此外,通過(guò)對(duì)外行星約30年中的每個(gè)定見(jiàn)日期的誤差分析,如表5,同樣得到火星的定見(jiàn)日期誤差最大,木星和土星誤差相當(dāng)且較火星小很多。這是因?yàn)榛鹦窃谌齻€(gè)外行星中,它的軌道偏心率最大、周期長(zhǎng)、速度快,因而火星的計(jì)算相對(duì)木星和土星要更困難一些。
(2)《皇極歷》討論火星“前疾”段的日率和度率時(shí),附加修正法則所提到的“半度之行”,這一項(xiàng)修正對(duì)火星黃經(jīng)計(jì)算精度的提高似乎沒(méi)有發(fā)揮正面作用,如圖8和圖10所示。引入“半度之行”修正的火星黃經(jīng)誤差絕對(duì)值的最大值高達(dá)31.49°,誤差絕對(duì)值的平均值是6.65°;而未考慮“半度之行”修正的火星黃經(jīng)誤差絕對(duì)值的最大值是17.67°,誤差絕對(duì)值的平均值是4.80°??煽闯鰪木确矫婵疾?,這個(gè)算法顯得多余。但是從初唐《戊寅元?dú)v》《麟德歷》這兩部歷法對(duì)“半度之行”的論述分析而言,其涵義就是對(duì)原有日率和度率的二次修正,理解上無(wú)誤。因而關(guān)于“半度之行”的合理性問(wèn)題還需要作進(jìn)一步探討。
(3)《皇極歷》外行星黃經(jīng)絕對(duì)誤差散點(diǎn)圖呈現(xiàn)周期性變化的規(guī)律,與其公轉(zhuǎn)周期基本吻合,如圖7—10所示。文章中所討論自公元600年冬至之后首次始見(jiàn)的當(dāng)日夜半起算約12000日時(shí)間段內(nèi),大約包含了2.7個(gè)木星公轉(zhuǎn)周期、1.1個(gè)土星公轉(zhuǎn)周期、17.5個(gè)火星公轉(zhuǎn)周期。木星和土星黃經(jīng)絕對(duì)誤差的變化規(guī)律與它們的公轉(zhuǎn)周期比較吻合,而火星由于其公轉(zhuǎn)周期較短,其黃經(jīng)絕對(duì)誤差變化不太容易與公轉(zhuǎn)周期對(duì)應(yīng)。然而,火星呈現(xiàn)出七個(gè)會(huì)合周期循環(huán)規(guī)律性的波動(dòng)趨勢(shì),這與火星的大沖周期更為匹配。
(4)由于目前隋代之前的歷法行星計(jì)算精度的研究甚少,本人所在項(xiàng)目組的其他成員提供了一些未發(fā)表的魏晉南北朝時(shí)期歷法中外行星誤差計(jì)算精度的初步結(jié)果,得知這時(shí)期木星和土星的黃經(jīng)誤差絕對(duì)值的最大值達(dá)到十幾二十多度,火星更是有高達(dá)四五十度的誤差??梢?jiàn),《皇極歷》在引入太陽(yáng)和行星不均勻運(yùn)動(dòng)修正算法之后,確實(shí)在很大程度上改善了其行星計(jì)算水平。雖然隋代及唐初時(shí)期歷法中的“入氣加減差”和“五星動(dòng)態(tài)表”均屬于基于經(jīng)驗(yàn)性觀測(cè)的數(shù)值算法系統(tǒng),但是這項(xiàng)研究也進(jìn)一步表明古代歷法家在探索行星運(yùn)動(dòng)理論、設(shè)計(jì)數(shù)值算法逐漸逼近真值的過(guò)程中,不懈努力的精神是值得肯定和學(xué)習(xí)的。
致 謝感謝兩位匿名審稿專(zhuān)家提出寶貴的修改建議。論文寫(xiě)作過(guò)程中還得到了北京天文館古觀象臺(tái)楊帆老師提供的材料和幫助,在此表示衷心感謝!