徐澤林
(東華大學(xué)人文學(xué)院,上海 201620)
中國傳統(tǒng)科學(xué)因注重實(shí)用而帶有技術(shù)化特征,忽視對原理的清晰闡述,加之天文歷法又是古代社會中的帝王之學(xué),具有絕對的權(quán)威性和神秘性,所以正史“歷志”通常只載推步之法,不敘其原理,這給后世解讀增添困難。行星運(yùn)動理論是西方傳統(tǒng)天文學(xué)的核心內(nèi)容,影響著西方天文學(xué)的發(fā)展。對五大行星視運(yùn)動的推算也是中國傳統(tǒng)歷法的重要內(nèi)容,但其精度不及日月運(yùn)動的推算,數(shù)理科學(xué)水平較高的《授時(shí)歷》(1280)也沒有對五星運(yùn)動推算的原理給出清晰的闡述。學(xué)術(shù)界對中國古代天文歷學(xué)中五星運(yùn)動推算的精度與理論問題展開了一系列研究,藪內(nèi)清(1906~2000)、劉金沂(1942~1987)、宮島一彥、陳美東(1942~2008)分別對隋唐歷法中五星推步算法進(jìn)行了疏解和數(shù)理研究[1-4],張健、李勇分析了《授時(shí)歷》和《大統(tǒng)歷》中五星推步算法的精度問題[5-6],陳美東討論了中國古代對五星近日點(diǎn)黃經(jīng)及其進(jìn)動值的測算問題[7],鈕衛(wèi)星與武田時(shí)昌通過文獻(xiàn)考證和數(shù)理分析探討了早期歷法和一些天文材料中有關(guān)內(nèi)行星運(yùn)動數(shù)值的來源問題[8-9]。曲安京、中山茂(1928~2014)以《授時(shí)歷》為中心,探討了五星推步算法的構(gòu)建原理以及古代行星運(yùn)動理論問題[10-11]。最近幾年,唐泉在研究古代歷法中五星運(yùn)動方面用力最多,他在總結(jié)回顧學(xué)術(shù)界關(guān)于五星運(yùn)動研究成果的基礎(chǔ)上[12],對古代歷法中五星推步算法的歷史沿革做了梳理[13-14],并且還分析了唐、宋、元時(shí)代一些重要?dú)v法中五星盈縮差算法的構(gòu)造與數(shù)值精度問題[15-20]。以上這些豐富而深刻的研究成果有助于我們認(rèn)識中國古代行星運(yùn)動計(jì)算方法的歷史發(fā)展及其科學(xué)意義。但是仍然存在一些問題值得進(jìn)一步探討,如五星推步算法的構(gòu)建原理問題,特別是如何解釋《授時(shí)歷》中的“限度”概念,以及內(nèi)行星盈縮差公式中系數(shù)來源及其天文意義等問題。
考察日本江戶時(shí)代關(guān)于《授時(shí)歷》的注解書可以發(fā)現(xiàn),日本學(xué)者對這些問題早有討論。中西敬房在其《歷學(xué)法數(shù)原》(1787)中,引用清初黃鼎《天文大成管窺輯要》的說法,解釋了五星運(yùn)動的成因,質(zhì)疑五星推步算法引入“限度”概念不合行星視運(yùn)動的實(shí)際狀態(tài),并懷疑行星推算精度不高可能與引入“限度”這個(gè)參數(shù)有關(guān)。在其前,著名和算家建部賢弘(1664~1739)在其《授時(shí)歷術(shù)解》中對“限度”意義已給出了解釋,同時(shí)解釋了五星盈縮差算法公式的數(shù)學(xué)意義,特別是內(nèi)行星公式中系數(shù)的數(shù)學(xué)意義。約19世紀(jì)初,大野正辰在《授時(shí)歷秘訣》(19世紀(jì)初)對內(nèi)行星公式中系數(shù)的意義也給出數(shù)學(xué)解釋。江戶時(shí)代的這些注解有助于我們對中國古代行星運(yùn)動理論以及數(shù)理科學(xué)的認(rèn)識。本文首先論述分析這些注解內(nèi)容,并在這些注解以及前人相關(guān)研究工作的基礎(chǔ)上,再次分析《授時(shí)歷》五星推步算法的構(gòu)造原理,旨在復(fù)原中國天文歷學(xué)家構(gòu)造五星運(yùn)動算法的思路,由此揭示中國傳統(tǒng)數(shù)理科學(xué)的特點(diǎn)。
《授時(shí)歷》的五星推步內(nèi)容基本沿襲《重修大明歷》(1127),只是一些天文常數(shù)做了改進(jìn),其算法上的進(jìn)步主要反映在引進(jìn)了平立定三差法以計(jì)算五星運(yùn)動盈縮差,但算法整體結(jié)構(gòu)沒有發(fā)生變化。圍繞推求行星視運(yùn)動過程中合、伏、見的時(shí)刻與真黃經(jīng),《授時(shí)歷經(jīng)》給出五星動態(tài)表以及18個(gè)推步之術(shù)。為便于說明其算法構(gòu)建原理,這里再次以符號代數(shù)語言概述其算法。
如圖1,規(guī)定公元1280年冬至?xí)r刻(歷元O0)為歷法推算起點(diǎn),記回歸年長度(歲實(shí))為T=365.2425日,周天度數(shù)(歷度)為C=365.2575度,行星與太陽的會合周期(周率)為H,行星公轉(zhuǎn)周期(歷率)為S,行星運(yùn)行1度所需要的日數(shù)(度率)為?=H/(H-T),歷元(O0)前最近距的平合點(diǎn)(H1)到歷元的時(shí)間間隔(合應(yīng))為Δh,歷元(O0)前最近距的入歷點(diǎn)T0(稱作盈初)到歷元的時(shí)間間隔(歷應(yīng))為Δp,行星盈縮差公式的三項(xiàng)系數(shù)分別為a、b、c,即行星盈縮差y=f(λ)=[a±(b±cλ)λ]λ(λ為入歷限數(shù)),太陽盈縮差公式的三項(xiàng)系數(shù)分別為e、f、g,即太陽盈縮差cs=p(z)=[e±(f±gz)z]z(z為入歷限數(shù))。
圖1 五星推步算法背景示意圖
在一個(gè)會合周期內(nèi),行星經(jīng)歷合伏、順行、留、逆行、留、順行、合伏的運(yùn)動狀態(tài),為此將五星運(yùn)動狀態(tài)構(gòu)建成五星動態(tài)表(各星運(yùn)動狀態(tài)劃分不等的若干個(gè)階段,木星分14段,火星分18段、土星分12段,金星分20段、木星分10段)。例如木星動態(tài)表(表1):
表1 《授時(shí)歷》外行星運(yùn)動動態(tài)表(木星)
表1中,段目(i)指該段的名稱;段日(di)為行星處于該段的平均時(shí)長;平度(αi)指在該段日數(shù)內(nèi)之行星平行的積度,也就是行星處在該段的平均角度;限度(μi)是用于計(jì)算行星處于該段的入歷度與盈縮差的參數(shù);初行率(vi)是行星處于該段的初始速度。動態(tài)表描述了五星處于各段的初始時(shí)間與位置狀態(tài),相當(dāng)于給出其對應(yīng)的平時(shí)間與平位置,其精確的實(shí)際值則根據(jù)推步之術(shù)計(jì)算獲得。
《授時(shí)歷》中由18個(gè)術(shù)構(gòu)成的五星推步算法可以歸納為四個(gè)計(jì)算過程:首先推求所求年的冬至?xí)r刻以及冬至后平合的平時(shí)刻與平黃經(jīng);其次借助五星動態(tài)表,推求諸段的平時(shí)與平黃經(jīng);再次進(jìn)行行星運(yùn)動改正(五星盈縮差);最后進(jìn)行太陽運(yùn)動改正(距合差度與太陽盈縮差)而獲得確定的位置。將其進(jìn)一步概括為三個(gè)核心步驟:
(1)首先推求所求年冬至后平合及諸段的中積與中星,也就是推求從所求年冬至(O)后的平合(A0)及諸動態(tài)階段(Am)分別到所求年冬至(O)的平時(shí)γm(稱作中積)與平黃經(jīng)ωm(稱作中星)。假設(shè)所求年冬至(O)至歷元(O0)共積Nn年,那么由Nn×T+Δh≡hk(modH)與hk+1=H-hk,求出前合分hk與后合分hk+1,后合分hk+1除以日周(10000分/日或10000分/度),得到后平合的中積γ0(以日為單位)與后平合的中星ω0(以度為單位)。于是,在此數(shù)值上分別累加段日di與平度αi,就分別得到諸段的中積為γm=γ0+x和諸段的中星為ωm=ω0+β(x=Σdi,β=Σαi)。
第二步,推求平合及諸段第一日的行差的σ,也就是求行星與太陽的初始速度差。一般情況下,該段第一日行差σ為該段初日行星行分va與太陽行分vs之差,即σ=|va-vs|。但是,對于金、水二星退行在退合場合,σ=va+vs,對于水星夕伏晨見場合,σ=vs。
以上概括了五星推算的最主要算法步驟。針對這些算法,學(xué)術(shù)界展開了系列研究和討論,問題聚焦于以下幾個(gè)問題:
(1)五星推步算法的精度如何?
(2)在五星推步中“限度”概念如何理解?它具有怎樣的物理意義和數(shù)學(xué)意義?
(3)在推算五星盈縮差時(shí),內(nèi)行星的公式中乘率k是如何獲得的(同樣,求內(nèi)行星運(yùn)動中定諸段泛積的公式中,系數(shù)k的來源也不清楚)?
(4)五星盈縮差是否就是行星中心差?五星盈縮差的天文學(xué)意義是什么?
(5)行星真黃經(jīng)計(jì)算公式的構(gòu)造乃至五星推步算法的構(gòu)建原理是什么?
對于問題(1),前述文獻(xiàn)都有論述。后面幾個(gè)問題,學(xué)術(shù)界常采用近代西方天文學(xué)方式給出解釋。本文根據(jù)江戶時(shí)代日本學(xué)者的注解,在前人相關(guān)研究的基礎(chǔ)上,對后面幾個(gè)問題再作一些探討,試圖以東方數(shù)值分析方式給出一種解釋。
與清代以西方古典數(shù)理天文學(xué)理論和方法編制歷法的環(huán)境不同,日本江戶時(shí)代最初以《授時(shí)歷》為范本編制歷法。因此,《授時(shí)歷》在日本江戶時(shí)代的影響遠(yuǎn)超在本土清代的影響。石云里曾經(jīng)調(diào)查了日本江戶時(shí)代的《授時(shí)歷》注解書,列了20余種[21]。近年來筆者進(jìn)一步調(diào)查,發(fā)現(xiàn)江戶時(shí)代關(guān)于《授時(shí)歷》的注解書達(dá)60余種之多。這些注解書對五星推步問題也有所注解,主要有中西敬房的《歷學(xué)法數(shù)原》、建部賢弘的《授時(shí)歷術(shù)解》和大野正辰的《授時(shí)歷秘訣》。
2.1.1 中西敬房對“限度”概念的疑惑
中西敬房(?~1781),字如環(huán),通稱宇兵衛(wèi),號華文軒,是活躍于江戶時(shí)代中期的歷算家與氣象學(xué)家,在京都經(jīng)營書店同時(shí)兼修關(guān)流算學(xué)與天文歷學(xué)。明和四年(1767)刊行《渾天民用晴雨便覽》,為日本歷史上最早的氣象方面的著述。此外,還著有《風(fēng)雨賦國字弁》(1776)與《歷學(xué)法數(shù)原》(1787)等。
中西有感于《授時(shí)歷》記載的推步法過于簡略,更不論法原,故“據(jù)《明史》及諸書[注]指黃鼎的《天文大成管窺輯要》及梅文鼎的《梅氏歷算全書》等中國天文歷學(xué)書籍。而詳其法數(shù),且補(bǔ)闕略,以為造歷者之鑒本,號曰:《歷學(xué)法數(shù)原》”[22]。該書分“法原門”與“數(shù)原門”兩部分。前者據(jù)《明史·歷志》論歷算的數(shù)學(xué)原理,包括勾股測望、弧矢割圓、黃赤道差、黃赤道內(nèi)外度、白道交周、日月五星平立定三差、里差刻漏等內(nèi)容。后者據(jù)《授時(shí)歷》術(shù)文論推步之術(shù),包括步氣朔、步發(fā)斂、步日躔、步月離、步中星、步交會、步五星等內(nèi)容。該書基本是對《明史·歷志》《天文大成管窺輯要》《歷算全書》等書討論《授時(shí)歷》的有關(guān)內(nèi)容的轉(zhuǎn)述,其間也夾雜一些作者的議論。值得注意的是,該書卷5的最末有一段“論五星各段限度”的文字:
按如本經(jīng)所載五星限度者,明大統(tǒng)歷直采用之,而本邦古歷亦從焉。其于法原,《元史》原闕略矣,《大統(tǒng)通軌》亦只用其度而無敢議論其原者《管窺輯要》及《歷算全書》亦然,此無他,所以其理之所由未審也。愚亦考之尚矣,雖然不敏之性未能知覺其法原也。
按如五星平度,各星平合距次平合遲疾退一周之度,故實(shí)測各段平度以累加諸段中星而求次段中星者,宜也,其于限度累加五星平合入歷度,以求諸段入歷度者,恐不是乎?按:《管窺輯要》所謂“五星之行,其遲疾也,有本于星者、有系于日者、有由乎氣者。三法具而步星之法益密”云云。顧夫五星各合伏距合伏之間,近于太陽則其行疾,遠(yuǎn)于太陽則其行遲。是以五星平度既有疾遲之多寡,此所謂系于日者也。且從其性情,五星各有自行之不同,木星日行九十一分奇,火星日行四十六分奇,土星日行九十六分奇,金星六十二分奇,水星三度一十五分奇,故五星周率各不同,此所謂本于星者也。尚有入氣之差,故五星各立三差之法而推求入氣盈縮之差,以加減常積,則可得其逐段之定度,此所謂由乎氣者也。方今三法已備焉,何再用限度哉?且夫本經(jīng)所載五星退段各用順度。按:退行之時(shí),豈得有順度耶?是可疑。蓋依經(jīng)術(shù)而求五星躔度間有差一二度者,限度之誤乎?或曰:然則求入歷諸段何以累加之耶?日俱以平度可累加,此與累加中星為諸段中星同理也。如本經(jīng)用限度,疑王恂未定之初稿而非郭太史續(xù)定之法歟?此予一遍[注]當(dāng)為“偏”,原文誤作“遍”。之臆見也。若有乖戾,則君子訂正之,雖我沒后,亦泉下之幸也矣。[22]
中西敬房的這段注文至少包含以下幾層意思:
(1)他首次指出,在《授時(shí)歷》《大統(tǒng)歷》乃至明清歷學(xué)家的著述中,均沒有論及《授時(shí)歷》中“限度”概念的意義。他自己注意到了這一問題,但也一直沒有搞清楚。
(2)他引用清初學(xué)者黃鼎的《天文大成管窺輯要》中關(guān)于五星運(yùn)動成因的說法,認(rèn)為五星運(yùn)動遲疾的成因有三:“有本于星者、有系于日者、有由乎氣者”。所謂“本于星者”,即各星周率不同,有各自的運(yùn)行速度,其本質(zhì)是指各行星在其恒星周期內(nèi)由于軌道半徑不同,有其各自不同的繞太陽公轉(zhuǎn)速度。所謂“系于日”者,指五星從合伏到下次合伏期間,接近太陽則疾行,遠(yuǎn)離太陽則遲行。這是由于五星平度既有疾遲多寡,則與太陽的角距為0時(shí)速度最大,以后與太陽距角越大則速度越小。所謂“由乎氣”者,指五星運(yùn)動有“入氣之差”,用招差法推求入氣盈縮差,以加減于常積,則可得到各運(yùn)動狀態(tài)的定度。這是由于地球繞太陽公轉(zhuǎn)相對于行星位置變化而造成的,以地球上的觀測者來看,行星伴日沿黃道做非勻速運(yùn)行,在不同節(jié)氣運(yùn)動速度不一樣。
(3)中西根據(jù)黃鼎的五星運(yùn)動遲疾成因說,對《授時(shí)歷》中使用“限度”這一參數(shù)進(jìn)行計(jì)算的方法提出了質(zhì)疑,懷疑以此計(jì)算是多余的。他懷疑的理由可以歸納為以下兩點(diǎn):第一,在五星推步中,黃鼎所論五星遲疾成因之三因素都已具備了,而且有三差法計(jì)算入氣盈縮差,因此就沒有必要使用“限度”了;第二,在利用“限度”計(jì)算時(shí),在行星退行場合會出現(xiàn)計(jì)算出“順度”的情況。進(jìn)而他猜測,按照“歷經(jīng)”的術(shù)文計(jì)算五星躔度時(shí)存在一二度的誤差,可能是因?yàn)槭褂昧恕跋薅取倍a(chǎn)生的。
(4)懷疑現(xiàn)存使用“限度”計(jì)算的《授時(shí)歷經(jīng)》是王恂的草稿,而非郭守敬續(xù)定的算法。
中西的以上困惑,引發(fā)了日本科學(xué)史家藪內(nèi)清和中山茂的疑問[23-24]。其實(shí),在中西之前,建部賢弘在《授時(shí)歷術(shù)解》中已經(jīng)給出了解釋,因建部賢弘的注解書是未刊刻的抄本,所以中西沒有看到。
2.1.2 建部賢弘對“限度”的解釋
被認(rèn)為是建部賢弘著述的抄本“六卷抄”(包括《授時(shí)歷議解》3 卷、《授時(shí)歷術(shù)解》2卷及《授時(shí)歷數(shù)解》1 卷)是江戶時(shí)代關(guān)于《授時(shí)歷》的眾多注解書中內(nèi)容最為豐富、解釋最為清晰深刻的著作。其中《授時(shí)歷術(shù)解》對五星推步也作了詳細(xì)注解,在五星運(yùn)行動態(tài)表后對“限度”給出了解釋,在五星推步的“求五星定合之定積與定星”的術(shù)文之后,對內(nèi)行星計(jì)算公式中的乘率也給出了解釋,并且給出自己的計(jì)算公式。我們首先以木星為例,來檢討建部對五星運(yùn)行動態(tài)表中相關(guān)概念的注解。其注文如下:
平度,隨各段之日數(shù),星之平行積度也。自合到見,十六日八十六分,星行三度八十六分;疾初二十八日,星行六度一十一分;疾末二十八日,星行五度五十一分;遲初二十八日,星行四度三十一分;遲末二十八日,星行一度九十一分也。留無行分,退四十六日五十八分,星行四度八十八分也,分下秒數(shù)帶于退段。是測考算定而所得也。
限度,各段入歷行度也。非星之所當(dāng),作為平日之所當(dāng)而算定之入歷度數(shù)也。例如,星行盈歷時(shí),順行分比常行多,故積順行之日過星平度,故有盈差;逆行分比常行少,故雖言星退,然猶增盈差。星行縮歷時(shí),順行分比常行少,故積順行之日后星平度,故有縮差;逆行分比常行多,故雖言星退,然猶增縮差。故于退段,平度減度數(shù)而得中星,限度加度數(shù)而求盈縮之增差,是所立平度數(shù)與限度數(shù)所以異也。然從合到合,積度之?dāng)?shù)不當(dāng),令其適合。先倍所定退段之限度三十二分,以減一周積度,余三十三度為順段之歷積度。又累計(jì)順段前后之平度,得四十三度四十分,為星積度;置各順段平度,乘歷積度,以星積度除之,得各段限度。其周天秒數(shù)帶退段。
初行率,各段初日之常行度分也。依本經(jīng)之術(shù)以各段日除各段平度,為各段平行分,得合伏二十二分八九,疾初二十一分八二,疾末一十九分六八,遲初一十五分三九,遲末六分八二,退十分四八。末段前后平行分相減,倍而退一位,為增減差,得疾初六十四秒,疾末一分二十九,遲初二分五十七,各加于其段平行分,得疾初、疾末、遲初三段之初行率。求合伏,倍疾初段增減差,疾初日數(shù)內(nèi)減一,余二十七除,得日差五秒,半之,加疾初初行率,得二十二分四九,為合伏段之末日行分。以是減合伏段平行度,余四十秒,為增減差,加于平行分,得合伏段初行率。求遲末,倍遲初段增減差,遲初日數(shù)內(nèi)減一,以余除,得日差十九秒,倍之,得三十八,又以遲初段增減差,減其平行分,余一十二分八二為遲初段之末日行分,倍日差,減而余為遲末段初行率。求退段,不用本術(shù)六因,依舊法,本行分十四乘十五除,為總差,半而為增減差,加于退段平行分而為后退段初行率。皆分下秒數(shù)五以上收為一,五已下棄之。又術(shù),于疾與遲之限,各立三差之法,得平度。求初行亦同。[注]《授時(shí)歷術(shù)解》的注釋原文為日文,現(xiàn)以文言漢譯。下同。[25]
順行的平度αi之和:β=Σαi=43度40分(星積度);
逆行的平度āi之和:βr=Σāi=4.88125×2=9度76分25秒;
木星東行:β-βr=Σαi-Σāi=33度63分75秒(一周積度);
逆行時(shí)段的限度和:τr=Σūi=0.32875×2=0.6575度;
順行時(shí)段的限度和:τ=β-βr-τr=32度98分(歷積度);
各順行時(shí)段的限度:μi=αi×[(Σαi-βr-τr)÷(Σαi)]=αi×(32.98÷43.4)。
至于如何確定退行時(shí)段的限度(0.32875×2),建部沒有說明,曲安京對這個(gè)問題有過解釋[26]。
對于為什么要引入“限度”,建部也做出了說明,他說:
例如,星行盈歷時(shí),順行分比常行多,故積順行之日過星平度,故有盈差;逆行分比常行少,故雖言星退,然猶增盈差。星行縮歷時(shí),順行分比常行少,故積順行之日后星平度,故有縮差;逆行分比常行多,故雖言星退,然猶增縮差。故于退段,平度減度數(shù)而得中星,限度加度數(shù)而求盈縮之增差,是所立平度數(shù)與限度數(shù)所以異也。[25]
也就是說,因?yàn)樾行窃谕诵袝r(shí),雖說是退行,但仍然存在增加的盈差,為了求其盈縮的增差,所以建立不同于平度的“限度”概念。建部這樣的認(rèn)識十分精辟,關(guān)于這一點(diǎn),筆者在后面將作進(jìn)一步的分析。
2.2.1 建部賢弘的解釋
其段中星,第一條所求,即自天正冬至到其段平日加時(shí)之積度也?!鹩s差,第三條所求,即自其段平日所當(dāng),距盈后、縮前常日所當(dāng)之度分也。○金星倍之,水星三之,盈縮差金倍之、水三之而加減也?!瘘S道日度,日躔第七條所求也?!鹦g(shù)意:置其段中星之度分,盈差加、縮差減,而得自冬至加時(shí)到其段常日加時(shí)星所在之度分,為諸段定星。加天正冬至加時(shí)黃道日度,累去黃道宿次之度分,而得星所在之宿度也。用其盈縮差,金星最疾行一度余也,故隨自其平日到常日之日分,定積日之所當(dāng)也。又星行盈在后、縮在前,如始之盈縮差,故定積之日定星所在,比中星之度,盈縮差之一倍也。依之,盈縮差加減于中積而為常日定積,倍差,加減于中星而為定星。水星最疾行一度余也,故隨自其平日到常日之日分,定積日之當(dāng)所也。又星行盈在后、縮在前,如始之盈縮差之一倍也,故定積之日定星所在,比中星之度,盈縮差之三倍也,依之,盈縮差加減于中積而為常日定積,三之差,加減于中星而為定星也。
今按:金水二星如此求者,于順之合、見、伏段宜粗,然于退合,非倍、三之限,各段又隨星行分倍數(shù)甚有增減,求之者,以其段初行率乘盈縮差,百約,所得為定積加時(shí)盈縮差,又并盈縮差,以加減中星,可得定星積度。木、火、土三星亦可如此求,如何?于三星有無星行分乎?[25]
2.2.2 大野正辰的解釋
在建部賢弘之后,大野正辰在其抄本著作《授時(shí)歷秘訣》中對“金星倍之,水星三之”也給出一種解釋,并附示意圖(圖2)。其注解文字如下:
“金星倍之,水星三之”者,皆指盈縮差而言之。假令日行其盈縮差度,金星亦行之,然則其度倍也。水星行常,大凡倍日行,故日行其盈縮差度,水星行其度倍之,然則其度三倍也。
水星之行分常多于日,故日辰進(jìn)退一日則星進(jìn)退二度而有差,故為三倍;金星日辰有進(jìn)退,則金星亦進(jìn)退其度而又有差,故倍之。[27]
圖2 大野正辰解釋求金水二星平合定星的示意圖
這段注解文字意思是說,太陽一天行一度,金星也一天行一度,當(dāng)太陽運(yùn)行其盈縮差的度數(shù)時(shí),金星也運(yùn)行了這么多度數(shù),所以一共運(yùn)行了兩倍的盈縮差。水星平行速度是太陽的兩倍,所以太陽運(yùn)行其盈縮差的度數(shù)時(shí),水星運(yùn)行其盈縮差度數(shù)的兩倍,一共運(yùn)行其盈縮差度數(shù)的三倍。大野正辰的解釋及其示意圖也同樣只是數(shù)量關(guān)系上的說明,沒有反映這一算法的天文意義。
曲安京曾經(jīng)用幾何模型和微積分語言構(gòu)造了外行星盈縮差算法的理論模型,以闡釋中國古代歷法中行星運(yùn)動理論,但對內(nèi)行星算法的分析付之闕如[10]。唐泉在此基礎(chǔ)上,以同樣的方式進(jìn)一步構(gòu)造了內(nèi)行星盈縮差算法的理論模型[15]。他們的工作基本揭示了古代五星推步算法的科學(xué)原理,這是研究中國科學(xué)史必要的工作。當(dāng)然,中國古代天文家不會利用西方式的幾何模型來構(gòu)建算法,并且五星推步中的五星盈縮差與太陽盈縮差并不等同于西方天文學(xué)中的中心差概念,在此情況下用西方幾何模型的解釋難以復(fù)原古代建構(gòu)五星推步算法思路。中山茂根據(jù)建部對“限度”的注解,以東方固有的純代數(shù)方式來構(gòu)建五星推步的算法模型[11],盡管他也不主張使用西方天文學(xué)的理論與概念來解釋中國天文學(xué)中的行星運(yùn)動,但他還是使用了“中心差”概念。中山茂認(rèn)為,從建部的注解來看,五星推步中考慮了兩種中心差,一個(gè)是行星的中心差,再一個(gè)是太陽的中心差。入歷,相當(dāng)于“行星近日點(diǎn)”概念;冬至點(diǎn),相當(dāng)于“太陽近地點(diǎn)”,盈縮,相當(dāng)于“中心差”。五星推步算法只是在直線上讓太陽中心差與行星中心差疊加而已(如圖3)。
圖3 中山茂描繪的五星推步算法原理示意圖
在中山的圖示(圖3)中,計(jì)算行星中心差的自變量,是從平合起度量的平度之和Σαi,加上平合到入歷點(diǎn)的距離λ0;計(jì)算太陽中心差的自變量,是從平合起度量的限度之和Σui,加上平合到冬至點(diǎn)的距離γ0。即
行星中心差=Fp(λ0+Σ平度),應(yīng)用行星中心差公式(平立定三差公式)或查表求出Fp;
太陽中心差=Fs(γ0+Σ限度),應(yīng)用太陽中心差公式(平立定三差公式)或查表求出Fs。
行星的平均運(yùn)動是會合周期內(nèi)行星位置上的平度和,常度是平度加行星中心差所得,定度是加行星與太陽的兩個(gè)中心差所得,由此得到行星的真位置。即
常度=Σ常平度+行星中心差
定度=Σ定平度+行星中心差+太陽中心差
但是,仔細(xì)考察《授時(shí)歷》中五星推步的算法,不難發(fā)現(xiàn),中山茂的解釋存在一些錯(cuò)誤和不足。首先,中山將計(jì)算行星“中心差”與太陽“中心差”的公式搞錯(cuò)了,計(jì)算行星“中心差”的自變量,不是其平度之和,而是“限度”之和,應(yīng)該為“行星中心差=Fp(λ0+Σ限度)”;計(jì)算太陽“中心差”的自變量,不是“限度”之和,而是平合及諸段的定積(即行星運(yùn)動第一次改正后的黃經(jīng)度)的函數(shù),應(yīng)該是“太陽中心差=Fs(γ0+諸段定積的函數(shù))”。其次,中山將《授時(shí)歷》計(jì)算行星確定位置的算法簡單化了。
下面我們根據(jù)《授時(shí)歷》五星推步的算法步驟與建部賢弘的注解,采用中國古代數(shù)學(xué)與天文學(xué)中常用的數(shù)值方法,盡可能不使用西方天文學(xué)的理論,分析復(fù)原五星推步算法的構(gòu)建思路。
太陽與行星會合運(yùn)動的物理背景是在黃道附近兩個(gè)運(yùn)動體的追及運(yùn)動,根據(jù)中西敬房所引黃鼎之論,“五星之行,其遲疾也,有本于星者、有系于日者、有由乎氣者。三法具而步星之法益密”,表明古人對五星不均勻運(yùn)動的成因歸之于“本于星”“系于日”“由乎氣”三者,其推步法的立術(shù)也當(dāng)基于此。建部賢弘對此有更進(jìn)一步的論述:“凡五星各有自行而運(yùn)旋于天,星之本質(zhì)也。有遲速之行分者,據(jù)太陽也;有盈縮進(jìn)退者,據(jù)天度也;有見匿早晚者,據(jù)歲日也。是測驗(yàn)推算而立法術(shù)之所以也?!盵25]據(jù)此我們假想有四條運(yùn)動直線,即將太陽與行星的運(yùn)動放在四條數(shù)軸上考慮逐步進(jìn)行誤差改正[注]當(dāng)然,古人不會有數(shù)軸概念,也未必分解為四種直線運(yùn)動。這樣的分解只是為了解析算法結(jié)構(gòu)。(如圖4):在數(shù)軸(1)上刻畫太陽的平行與行星的平行;在數(shù)軸(2)上刻畫根據(jù)行星平行計(jì)算出來的“限度”變化;在數(shù)軸(3)上刻畫行星運(yùn)動改正后的行星實(shí)行變化;在數(shù)軸(4)上刻畫太陽運(yùn)動改正后的太陽與行星的實(shí)行變化。
圖4 五星推步算法原理示意圖
首先,在數(shù)軸(1)上計(jì)算平合A0及諸段Am位置的中積(γ0及γm)與中星(ω0及ωm),相當(dāng)于確定平合A0及諸段Am位置的平時(shí)γm=γ0+Σdi與平黃經(jīng)ωm=ω0+Σαi。
其次,在數(shù)軸(2)上計(jì)算限度um,用于計(jì)算行星自身運(yùn)動的改正量y(行星盈縮差)。一般情況下,天文學(xué)上總是由天體的平黃經(jīng)計(jì)算出其真黃經(jīng)。由于日月在黃道上沒有退行現(xiàn)象,所以對于日月非均勻運(yùn)動的計(jì)算,都是應(yīng)用招差法直接由其平黃經(jīng)計(jì)算運(yùn)動改正量,通過對平黃經(jīng)的修正確定其真黃經(jīng)。但是,行星在黃道上有退行,所以不能直接以其平黃經(jīng)來計(jì)算其運(yùn)動改正量。在一個(gè)會合周期內(nèi),行星一共順行β=Σαi平度(星積度),退行βr=Σāi平度,所以視運(yùn)動上向東平行了β-βr=Σαi-Σāi度(一周積度),但其實(shí)行之中還有黃經(jīng)的減少,減少量就是對應(yīng)于退行平度βr度對應(yīng)的退行限度τr=Σūi,因此,把Σαi-βr-τr度數(shù)看成是一個(gè)會合周期內(nèi)行星在黃道上非均勻運(yùn)動向東位移的黃經(jīng)總量,其運(yùn)動自變量被稱作“限度”(歷法中常把函數(shù)自變量稱作限數(shù),限度名稱當(dāng)由此而來),并把各順段限度ui與平度αi對應(yīng)的變化規(guī)律視為比例關(guān)系(線性關(guān)系),即μi=αi×[(Σαi-βr-τr)÷(Σαi)]。這樣就把限度λ=λ0+Σμi視為行星的平黃經(jīng),也就是建部所謂的“非星之所當(dāng),作為平日之所當(dāng)而算定之入歷度數(shù)也”,它只是數(shù)學(xué)上的參變量而不具物理意義,由限度(入歷度數(shù),類于行星到近日點(diǎn)距離)計(jì)算行星的盈縮差y=f(λ)=[a±(b±cλ)λ]λ(λ為入歷限數(shù))。其算法思想是:引進(jìn)參變量,把行星盈縮差計(jì)算方式轉(zhuǎn)化成熟悉的日月盈縮差計(jì)算方式。
我們知道,求行星中心差應(yīng)該以其平黃經(jīng)(平度)入算,但這里的入歷度分λ是由所謂的“限度”累計(jì)得到的,并非平度,所以五星盈縮差并不等價(jià)于西方的行星中心差。曲安京在文獻(xiàn)[26]、唐泉在文獻(xiàn)[15]中都曾指出,五星盈縮差既不等同于行星中心差,也與太陽中心差無關(guān)。
明代以后天文學(xué)家開始重視對法原的討論,明末邢云路在《古今律歷考》中企圖恢復(fù)《授時(shí)歷》的立法原理。西學(xué)東漸后伴隨西法的東來與影響,中國歷法開始編入歷法原理。如,清初學(xué)者所編撰的《明史·大統(tǒng)歷》,開篇“法原”首論推步原理;清代《歷象考成》也是由“歷理”“歷法”兩部分構(gòu)成;清初學(xué)者黃宗羲(1610~1695)、黃鼎、梅文鼎(1633~1721)等人對《授時(shí)歷》的歷理多有闡發(fā),但對其中如“白道交周”“五星推步”等問題,仍未能給出清晰的原理分析。江戶時(shí)代日本學(xué)者對這些問題的注解工作,有助于我們對《授時(shí)歷》五星推步算法原理的認(rèn)識。
中國天文學(xué)家解決天體不均勻運(yùn)動的計(jì)算問題,習(xí)慣于使用插值方法,但與太陽、月亮的非均勻運(yùn)動現(xiàn)象不同,行星有退行現(xiàn)象,不能如日月那樣直接由平黃經(jīng)計(jì)算真黃經(jīng),從而引入了“限度”概念,將其轉(zhuǎn)化為日月運(yùn)動的算法模式,以解決數(shù)學(xué)計(jì)算上的困難,由此而造成其算法的復(fù)雜性。中西敬房及今人按照日躔、月離計(jì)算方式審視五星推步算法,自然因難以找到“限度”概念的物理解釋而感到困擾。建部賢弘找出了限度與平度的關(guān)系,指出了“限度”的數(shù)學(xué)意義,從而揭示了五星推步算法的數(shù)學(xué)原理。其算法思想大致如下:
對五星的平黃經(jīng)經(jīng)過三次運(yùn)動改正(五星盈縮差、距合差度、太陽盈縮差),逐步獲得其真黃經(jīng)。首先,將五星盈縮差看成是限度的函數(shù),即平度(平黃經(jīng))的復(fù)合函數(shù),通過插值方法獲得第一次改正后的黃經(jīng)值(平合定積定星);再根據(jù)五星與太陽的速度差獲得“距合差度”這一修正值,修正退行時(shí)的黃經(jīng)變化,以獲得第二次改正后的黃經(jīng)值(定合泛積);最后將太陽盈縮差看成是第一次改正后黃經(jīng)(平合定積)的函數(shù),也就是平黃經(jīng)的復(fù)合函數(shù),通過插值方法獲得第三次改正后的黃經(jīng)值(定合定積定星),也就是五星的真黃經(jīng)。
這樣的算法構(gòu)造,體現(xiàn)了中國古代天文計(jì)算中的數(shù)值分析精神,如果硬要用“行星中心差”概念來描述中國古代行星運(yùn)動改正的話,它實(shí)際是五星盈縮差、太陽盈縮差的疊加。
正是由于五星推步算法的建構(gòu)以日月非均勻運(yùn)動算法為參考、逐次構(gòu)造復(fù)合函數(shù)來實(shí)現(xiàn),才導(dǎo)致了行星視位置的計(jì)算精度遠(yuǎn)遜于太陽和月亮視位置的計(jì)算。對于五星推步算法的局限性,建部賢弘也有清晰的認(rèn)識。他指出:
然有陰陽歷出入緯度,又有上升下降之行,是等猶不能悉極盡其變,只依太陽求其經(jīng)度,故驗(yàn)天時(shí)必非密也。然徒牽合術(shù)、空增損數(shù),強(qiáng)求其合,故于術(shù)理不精,于立數(shù)不密。[25]
意思是說,在五星推步中,并沒有考慮由緯度變化而導(dǎo)致的經(jīng)度變化,只根據(jù)太陽運(yùn)動來計(jì)算行星真黃經(jīng),必然存在很大的誤差,其算法不過是“牽合”之術(shù)。
20世紀(jì)50年代以來,中外學(xué)者在討論中國傳統(tǒng)天文學(xué)中的日月五星運(yùn)動時(shí),習(xí)慣使用西方的同心球或橢圓模型的理論以及內(nèi)插法、微積分等近代科學(xué)語言,對于日月運(yùn)動,以此分析大體可以獲得有效解釋,但對于五星運(yùn)動來說,以此來分析總會遇到一些困難。有鑒于此,中山茂提出中西傳統(tǒng)科學(xué)“共軛不能性”的概念。“共軛”是一個(gè)數(shù)學(xué)概念,在數(shù)學(xué)中,如果兩個(gè)角、線、點(diǎn)、圖形、數(shù)等數(shù)學(xué)對象之間具有相互對稱或相補(bǔ)的關(guān)系,通過代換其關(guān)系也不改變,就被稱作是共軛關(guān)系。中山茂先生借用這一概念,意指中國傳統(tǒng)科學(xué)與西方科學(xué)之間具有不可互通性。關(guān)于庫恩的“不可通約性”(incommensurability)理論是一個(gè)爭論已久的科學(xué)史方法論與科學(xué)哲學(xué)的問題,筆者這里不做討論。當(dāng)然,每個(gè)時(shí)代的歷史研究,自然會使用特定時(shí)代的學(xué)術(shù)語言做出歷史解釋,我們應(yīng)該采用什么樣的語言來分析、解釋西方文明以外的傳統(tǒng)科學(xué),值得深思與實(shí)踐。