《回回历法》交食精度之分析

2011-01-25 09:08吕凌峰石云里
自然科学史研究 2011年3期
关键词:黄道月食日食

李 亮 吕凌峰 石云里

(中国科学技术大学 科技史与科技考古系,合肥 230026)

伊斯兰天文学在中国的传播和应用一直受到学界的较多关注,前人曾在回回历法的研究上取得了相当多的成果。其中,在回回历法交食研究方面,主要有陈久金对回回历法日月食原理的研究[1]、陈美东对回回历法天文数据的分析研究[2]、唐泉对回回历法日食时差等算法的比较和分析[3],以及吕凌峰等对明末回回历法的推算精度的初步分析等[4],但目前尚无对回回历法交食和日月运动的整体计算精度及其实际使用情况的分析和讨论。本文将对回回历法进行计算机编程,模拟其日月运动和交食的推算,并结合相关史料,通过误差分析来对回回历法的交食推算精度及其与大统历相互参用的情况做进一步探讨。

在具体讨论回回历法交食之前,有必要对回回历法的版本作一简要说明。有关回回历法的版本流传情况至今尚无定论,但基本的认识是回回历法的最初版本可能已经失传,留存至今的只有一些重编本①中国国家图书馆善本部藏有一册《回回历法》,馆藏编号03484,目录虽然注明为“明洪武十六年(1383)内府刻本”。但经石云里比较,该版本实际上是贝琳《回回历法》第1册的一个残本,具体请参见文献[5]。[5]。明代版本主要包括《七政算外篇》、《西域历法通径》和贝琳编订的《回回历法》(即清代收入《四库全书》的《七政推步》的底本)。其中《七政算外篇》为朝鲜李朝天文学家在1442年前后根据传入该国的《回回历法》、《纬度太阳通径》等书编纂而成,在传世的《回回历法》重编本中时间最早;《西域历法通径》为明钦天监夏官正刘信编写,目前只存残本;贝琳的《回回历法》由南京钦天监监副贝琳于成化十三年(1477)编订①《四库全书》中贝琳的《七政推步》七卷与贝琳所刻的《回回历法》五卷本质上应算是同一部著作。,之后该版本又于隆庆三年(1569)由周相重新刊印,目前日本内阁文库藏有一套完整的《回回历法》,即为贝琳编订、周相重印本。此外,回回历法还有一些清代修订版本,包括南图本《回回历法》②关于南图本《回回历法》更多的信息,可参见文献[6]。、王鸿绪《明史稿》本、张廷玉《明史》本。根据陶培培的研究,南图本是明史系列回回历法中最原始的版本,其编者可能是黄百家[6]。

现存的回回历法明代刊印版本中仅有《七政算外篇》③韩国奎章阁现藏有《七政算外篇》,《朝鲜王朝实录》也保存有汉文原抄本。、贝琳编订《回回历法》和《西域历法通径》。其中《西域历法通径》只残存八卷,《七政算外篇》据记载是朝鲜李纯之和金淡等人对“《回回历经》、《通径》、《假令》之书推究其术,微加损益,仍补阙略,遂成全书”,在内容和形式上都作了少量调整。根据我们对以上几个版本的调查,认为最可能为明代钦天监官方使用的是贝琳于成化十三年(1477)修补刊印的《回回历法》,而日本内阁文库藏本又是目前此版本中保存最好的,因此本文在编程计算以及分析和讨论中所使用的回回历法皆以日本内阁文库藏本为依据④其他各种《回回历法》的重编本在具体算法上与日本内阁文库藏本相差都不大,但总体来说日本内阁文库藏本《回回历法》中的错误率则较低。相比而言,《四库全书》版的《七政推步》由于是写本,错误明显较多。。

1 关于《回回历法》的交食推算方法

目前各版本的《回回历法》中皆只记载有历法的推算方法,没有对相关的历法推算做理论上的解释,也就是说整个《回回历法》只记载如何利用立成计算天体的位置和交食等内容,却没有说明其算法的原理。清代的顾观光(1799—1862)曾撰《回回历解》⑤顾观光,《回回历解》。参见:《武陵山人遗书》。,该书通过“日躔历理”、“月离历理”、“五星历理”和“交食历理”等内容,对《回回历法》中的各种推算方法进行了简单的介绍和分解。之后日本学者薮内清嫌其过于简略,故再做《回回历解》⑥薮内清,《回回历解》,日本《东方学报》,1964年。,对此进行了较为深入的研究。近年来,陈久金对回回历法的原理逐条作了科学分析,对回回历法各立成数据的来历也进行了讨论[1]。由于回回历法交食部分的推算还与其日月运动位置的计算有关,陈久金还对回回历法中日月位置的计算作过系统的研究,并在几何学意义上对其进行解释[7]。这些为我们进一步实现对回回历法进行计算机模拟推算提供了一些算法依据。而内阁文库本《回回历法》中记载了完整的推算方法和立成表格,因此我们只要将回回历法的相关立成表格输入数据库中,并严格依照回回历法中记载的方法,调用数据库中的数据进行编程计算,就能得到回回历法的实际推算结果①计算机编程使用Visual Basic 2008.NET语言和Access 2007数据库,所编程序可用于回回历法的日月食、日月五星黄道经纬度和回回恒星位置等推算。为确保该程序交食推算的可靠性,我们将程序推算结果与《七政算外篇》正统丁卯年交食假令、南图本《回回历法》中所附的“假如”等史料中记载的结果进行验证,除由于数据四舍五入进位不同导致截断误差、以及各版本在立成表上存在部分差异而导致推算结果与史料存在细微差别外,程序推算结果与史料完全一致,因此完全满足对回回历法进行模拟推算和数据分析的精度需求。。

此外,韩国奎章阁藏有《七政算外篇·丁卯年交食假令》一卷。该书记载有根据《七政算外篇》计算的“正统丁卯年交食假令”,其中包括推算丁卯年八月初一日食(1447年9月10日)和丁卯年八月十五日月食(1447年9月24日)的假令(即算例),这两个算例分别详细介绍了使用回回历法进行日食和月食的推算步骤,并给出了这两次交食计算每个步骤的计算数据。这为我们进行计算机模拟推算提供了验证算法的依据,并为校验程序的可靠性提供了难得的历史文献数据②此外南图本《回回历法》中也附有崇祯二年已巳五月朔乙酉日蚀(1629年6月21日)的算例。。由于篇幅所限,现将该书中算例的主要结果节录如下(见表1)。

表1 《七政算外篇·丁卯年交食假令》中的主要结果

2 《回回历法》的交食精度分析

关于回回历法的交食推算精度,各种历史文献中往往评价不一。《明史》中曾记载“回回历科推算日月交食、五星凌犯,最为精密”,“与大统参用二百七十余年,虽于交食之有无深浅,时有出入,然胜于九执、万年远矣”③张廷玉,《明史》志第七,历一。。从这些文字中可以看出,回回历法的推算虽偶有差错,但总体精度还是较为“精密”。《明实录》中有关回回历法的记载,也多数认为回回历法要优于大统历,具体参见后文。不过其中也有例外,如《明武宗实录》记载正德十三年(1518)钦天监漏刻博士朱裕请修历法时曾提到:“况回回历自开皇已末至今九百余年,亦有疏舛。连年推算日月交食,算多食少,算少食多,时刻分秒,与天不合”①参见《明武宗实录》正德十三年(1518)十二月辛卯二十六日条。,这条记载似乎又说明回回历法推算误差较大。这些文献关于回回历法交食精度的评价虽有不同,但总体看来回回历法似乎比大统历交食预报更为精确。甚至利玛窦在其见闻中也提到:“研究大统历的人比较受人尊重,可是他们的日食每多错误;学回回历的人比较准确一些,但不受人尊重。”[8]明末崇祯改历的有关文献中记录了明末六次回回历法的交食预报情况,根据初步的计算分析可知,回回历法的交食预报精度并不好于大统历,且回回历法的交食预报更加接近南京的交食食况[4]。鉴于史料记载的数量有限,加之这些材料皆集中在明末,缺乏对回回历法交食精度的长期比较,因此有必要对回回历法交食做更全面的分析和讨论。为此,本文在回回历法交食算法的基础上,以日本内阁文库藏本《回回历法》为基础,通过计算机编程对其进行模拟推算,并将其推算误差与大统历法进行比较。其中,大统历法虽然源自元代的《授时历经》,但经过几番版本流变后,现存有多个版本,且各版本的算法也有一些差异,例如《大统历法通轨》的交食算法和《元史·授时历经》、《明史稿·大统历志》、《明史·大统历志》就有明显不同。我们研究结果认为,《大统历法通轨》应该是明代钦天监实际使用的大统历版本[9],因此本文在分析中采用的大统历版本为《大统历法通轨》。

首先,在月食食甚时刻的比较上,将《回回历法》和《大统历法通轨》推算的月食食甚时刻分别与现代理论推算结果进行比较分析后可见,在月食食甚时刻的推算上,回回历法存在较大误差,明初时即已后天一刻左右②“后天”指历法实际推算结果比理论计算值大,即出现食甚的时刻比理论值计算的时间迟。,至明末时其推算更是达到后天三刻以上。而大统历在明初经过元统的调整后,误差基本在一刻以内,至明末时达到后天一刻左右。由此看来,回回历法在月食食甚时刻的推算上与大统历相比误差较大(图1)。

图1 《回回历法》和《大统历法通轨》月食食甚时刻的精度分析③ 现代值理论值中的月食数据来源于SkyMap 10.0,日食的数据来源于刘次沅编《中国历史日食典》,本文日月食食甚时刻误差散点图中所得数值,皆为历法程序的模拟推算值减去现代理论计算值所得的结果。比较的时间范围从公元1270年至公元1644年,回回历和大统历近距历元皆为洪武17年(1384),两历的实际开始使用时间皆略晚于历元数年左右,因此我们所分析的这一时间跨度基本涵盖了两历的整个使用时期及其使用前的一段时期。

其次,在月食食分的比较上,将《回回历法》和《大统历法通轨》的推算结果分别与现代理论推算值进行比较后分析可见,回回历法月食食分与现代理论值相比,其误差散点分布明显比大统历收敛一些(图2)。

以上分析表明,虽然在月食食甚时刻计算上回回历法远逊于大统历,但是在月食食分计算上,回回历法却明显要优于大统历。尤其是在小食分的推算上,回回历法明显具有较大的优势。

图2 《回回历法》和《大统历法通轨》月食食分的精度分析① 《回回历法》和《大统历法通轨》计算值依照历法中古代食分标准,现代理论值依现代标准,两者大约为十倍关系。

由于日食的食甚时刻和食分大小与观测的地理位置相关,明朝初期定都南京,并在雨花台和鸡鸣山分别设观象台,因此当时汉钦天监和回回钦天监的推算结果都是与南京的实测结果进行比较和验证。自永乐迁都北京后,钦天监各机构皆设南北两套。但由于主要职能皆以北京钦天监为主,历法的推算结果也改为与北京的实际观测结果进行比较。虽然实际观测的地理位置已发生改变,但是在历法的具体推算方法上,回回历法和大统历皆未针对位置的改变而进行算法上的调整。因此为了更方便地进行比较和分析,我们在分析日食食甚时刻和食分大小时,将对两部历法的推算结果与北京和南京两地的现代理论结果分别进行比较。

日食食甚时刻的推算方面,无论是与北京还是与南京比较,推算结果均以大统历为优。回回历法的日食食甚时刻在明初期就已后天两刻左右,明末时更是达到四刻。可见其日食食甚时刻误差与月食食甚时刻一样,误差范围和后天趋势皆比大统历明显得多。此外,回回历法日食食甚时刻与南京理论值相比略优于其与北京理论值相比的结果,即回回历法日食食甚时刻值更接近南京的实际情况(图3)。

日食食分的推算方面,在分别与北京理论值和南京理论值比较中,也可以看出回回历法的推算明显更接近南京的结果。可见在明初期定都南京时,回回历法的食分推算还是比较精确的,且明显优于当时大统历食分推算的结果。迁都北京后,虽然回回历法的算法本身没有改变,其推算精度也不会变化,但由于观测地点发生改变,北京的实际结果成为评价依据,这也间接导致了回回历法在食分的推算精度上的下降。但是,即便如此,其日食食分计算结果还是要略优于大统历(图4)。

图3 《回回历法》和《大统历法通轨》日食食甚时刻的精度分析① 左上图结果为《回回历法》推算值减北京理论值,右上图结果为《回回历法》推算值减南京理论值,左下图结果为《大统历法通轨》推算值减北京理论值,右下图结果为《大统历法通轨》推算值减南京理论值。

此外,回回历法食分的推算精度与地理位置的相关度较大,较易受地理纬度改变的影响。相比之下,大统历的日食食分虽然总体精度要逊于回回历法,但其食分结果受地理位置的影响相对较小。故迁都北京后,其食分的精度不但没有降低,甚至反倒比在南京时略好。究其原因,可能是大统历的食分推算除了受晨昏分影响外,较少考虑地理位置及其相关的因素的影响。再者大统历出身于授时历,而授时历本身就是编修于元大都,其地理位置正好符合明代迁都后的情况。

综合以上讨论可以看出,在日月交食食甚时刻的推算上,大统历比回回历法精确。但回回历法也有其特有的优势,即在日月交食的食分推算上比大统历要略胜一筹。相对而言,回回历法受地理位置影响较大,且更适合在南京使用;而大统历受地理位置影响相对较小,且较适合在北京使用。

图4 《回回历法》和《大统历法通轨》日食食分的精度分析

3 《明实录》中关于回回历法交食史料的分析

回回历法在明代虽然自始至终与大统历相互参用,但不同史料中对大统历的使用效果多有提及,而有关回回历法实际使用情况的史料则少了很多。下面几条是《明实录》中有关回回历法交食的记载:

A.《明孝宗实录》“弘治八年八月十六日丙寅”条记载:

钦天监奏:是夜月食不应,礼部及监察御史等官敕监正吴昊等推步不谨之罪。昊等上章自辩,谓依回回历推算则月不当食,在大统历法则当食,本监但遵守大统历法奏行,是以致误。复谈言月当食不食,为上下交修之应,冀以免罪。上曰:“月食重事,昊等职专占候,乃轻忽差误如此,姑宥之。堂上官各罚俸一月,春官正等官各两月。”

B.《明孝宗实录》“弘治十五年十一月十九日戊午”条记载:

钦天监奏:弘治十六年二月十五日夜望月食,月食当食一分二十秒,依回回历推算则不食,缘所食数少,请待临期观候,免百官行救护,礼部言,若不救护,恐临时月食

有验,反而失误,上命如例救护。

又《明孝宗实录》“弘治十六年二月十五日壬子”条记载:

初,钦天监奏是晚月当食,至期不食,礼部请治钦天监官吴昊等推算不精之罪,命宥之。

C.《明世宗实录》“嘉靖七年八月二十六日乙丑”条记载:

钦天监言:本年闰十月朔以大统历推日不食,以回回历推日食二分四十七秒,疏下所司。①《明史》中记载了此次日食的最终结果:“七年,钦天监奏闰十月朔,回回历推日食二分四十七秒,大统历推不食。已而不食。”即回回历推算应有日食,大统历推算没有日食,最终大统历应验。其实依据现代理论计算此次日食发生在1528年11月12日,北京食分为0.04,南京为0.17,换算为古食分,即北京为四十秒,南京为一分七十秒,若以南京为标准,回回历法应该算是基本推算准确,但由于迁都北京后,一切都以北京的实际情况为准,而北京此次日食食分太小,不及一分,因此被认定为没有日食,最终算是回回历法误判,而大统历应验。

D.《明神宗实录》“万历十二年九月二十九日壬寅”条记载:

钦天监题:推算万历十二年十一月初一日癸卯朔日食,依大统历日食九十二秒,依回回历不食,已而回回果验,下礼部。②此次日食《明史》中也有同样记载:“万历十二年十一月癸酉朔大统历推日食九十二秒,回回历推不食,已而回回历验。”

以上A、B、C、D史料分别记载了弘治八年(1495)八月、弘治十六年(1503)二月、嘉靖七年(1528)十月、万历十二年(1584)十一月的四次交食情况。由于这些史料中关于回回历法的交食记载均是伴随大统历的交食推算失误而出现,似乎显得回回历法比大统历法更优。但应该注意的是,这几条中所涉及的都与食分的判断有关。例如,弘治八年八月这条记录的情况为“月食不应”,此前钦天监依大统历推算当食,而依回回历推算则月不当食,最终结果为回回历法预测准确;弘治十六年二月这条记录为按大统历应当有月食,食分为一分二十秒,而依据回回历法则推算不食,结果“至期不食”,回回历法推算应验;万历十二年九月这条记录为依大统历推算日食食分九十二秒,而依回回历法推算不应有日食,结果依然是回回历法应验。虽然这几条史料都涉及“交食有无”或者“食分深浅”的判断,没有提供具体食甚时刻的比较资料。但从这几条记录来看,也基本能印证我们之前对回回历法交食食分计算精度的部分分析和判断,即回回历法在判断食分、尤其是小食分的交食时可能要比大统历更为准确些。

4 回回历法太阳、太阴黄道经纬度的误差

由于交食的推算精度与日月运动的精度有关,下面我们将对回回历法在日月运动中的实际精度进行分析。在同样对回回历法的日月黄道经纬度进行编程计算后,选取历元附近的一段时间进行具体分析后③回回历法的历元为洪武甲子,即1384年,但其实际使用的时间可能在1392年之后,因此我们选取了从1392年1月1日开始的2000天,以每日北京时间子夜零时回回历法太阳和太阴的黄道精度以及太阴的黄道纬度为例,将其历法推算值分别与现代理论计算值进行比较和分析。,从对误差的比较中我们发现:回回历法的太阳黄道经度误差大约在-3角分至7角分之间(图5);太阴黄道经度误差大约在±90角分之间,最大时则甚至会超过100角分以上(图6);太阴黄道纬度误差大约在±17角分左右(图7)。

为了对回回历法的日月黄道经纬度的误差能有更直观的认识,我们将其与《历象考成》的日月黄道经纬度进行一些比较①由于大统历等传统历法日月运动使用伪黄道坐标体系,不能与回回历法的黄道坐标体系进行直接比较,加之传统历法没有对应的黄道纬度推算方法,因此本文暂且只将其与同样使用黄道坐标体系的《历象考成》进行比较,至于回回历法与大统历等传统历法在日月运动上的比较,今后还将需要做进一步研究。。根据石云里的研究[10],《历象考成》在其历元附近太阳黄道经度误差大约在-7角分至8.5角分之间,太阴黄道经度误差大约在-70角分至50角分之间,太阴黄道纬度误差大约在±20角分左右②这些误差结果是以1683年12月21日之后1000天范围为例,计算每日北京时间子夜零时的历象考成的历法推算值减去现代理论值所得,具体可参见文献[10]。。通过比较可以看出回回历法在太阳黄道经度和太阴黄道纬度的推算上比较精密,甚至还略优于《历象考成》,而在太阴黄道经度的推算上存在较大缺陷,误差最大时会达到一度半以上。根据这些初步分析判断,《回回历法》在太阴黄道经度上误差较大,但在太阴黄道纬度上精度则相对较高的特点,可能是导致其在交食食甚时刻推算上误差较大,而在食分大小的推算上精度较好的原因之一。

图7《回回历法》太阴黄道纬度误差

5结语

明太祖朱元璋对回回天文历法情有独钟。在他的支持下,回回历法与其他一批阿拉伯天文著作得到翻译,并且南京鸡鸣山的观象台和回回钦天监也逐步被设立,这使得回回历法在中国占有了一席之地。不仅如此,朱元璋甚至还有过对大统历和回回历法进行“会通”的想法。例如,《纬度太阳通径》①《纬度太阳通径》现藏于韩国奎章阁,为洪武二十九年钦天监监正元统组织编撰,此书编写的目的主要是将《回回历法》以春分为天文年起算点换算成以冬至为起算点,此外还对历法中一些难解处进行解释,具体可参见文献[5]。中就曾记载:

故有经无纬,不显其文。有纬无经,岂成其质。文质兼全,然后事备,谅二法可相有而不可相无也。尚矣洪武乙丑冬十一月钦蒙圣意念兹,欲合而为一,以成一代之历制。受命选春官正张辅,秋官正成著,冬官正侯政就学于回回历官,越三年有成。既得其传,备书来归。予因公暇,详观其法。[11]

可见在明朝初期,钦天监监正元统曾为了贯彻朱元璋将中国传统历法与回回历法合而为一的旨意,而进行了一些努力,尽管取得了一定进展,但“会通”的目标最终还是未能如愿。此后,仍然多次有人提出类似“会通”的建议,如《明神宗实录》万历十五年三月十四日癸卯礼科给事中侯先春奏历法当改中提到:“该监见有回回历科,其推算日月食及五星凌犯最为精细,囊者月食时刻,分秒不差舛,祇以原非大统历法,遂置不用,臣以为授时历可采,回回历亦可采,取其能和天度,如果脗合,即将采入大统历中,以成一代之制。”②参见《明神宗实录》万历十五年(1587)三月癸卯十四日条。遗憾的是回回历法与大统历的整合一直未得到有效的实施。但即便如此,回回历法还是被官方参用,一直沿用到明末。

回回历法之所以得以与大统历长期参用,必然与其自身所具备的特点紧密相关,如它可对月五星黄道纬度进行推算,可对月五星凌犯进行预测并为星占提供服务①韩国奎章阁现保存有《宣德十年月五星凌犯》一卷,是迄今可以找到的唯一能够反映《回回历法》具体实施月五星凌犯预测的著作,揭示了回回天文机构在明朝的另一个重要职能,具体可参见文献[11]“宣德十年月五星凌犯”题解。。这是传统历法所望尘莫及的。此外,正如前文所分析的,回回历法在交食食分推算上也具有明显优势。从《明实录》中的相关记载也可看出,在判断交食有无和食分大小方面,尤其是在小食分交食的判断及是否进行交食救护上,回回历法为大统历提供了重要的参照依据。可以试想,每当钦天监在预测到小食分交食后,需要判断是否应准备救护仪式时,一定承受着巨大的压力和风险,而回回历法在食分上明显有一技之长,将其参用到交食的判断上自然是不错的选择。

另一方面,前文介绍《明实录》中吴昊辩解“本监但遵守大统历法奏行”,侯先春提及回回历“只以原非大统历,遂置不用”,又据《明会典》中规定“如食不及一分、与回回历虽食一分以上、俱不行救护”,从这些线索看出,回回历法和大统历虽同属于官方历法,但回回历法与大统历相互参用的过程中,其参用的程度也还是有限的,至少在交食时刻的推算上,回回历法存在较大误差,不足以达到良好的参用效果。由于崇祯改历之前回回历法在时刻推算上的史料较少,而关于回回历法的史料中更多的是关于其在判断食分大小方面所起的作用,因此所存的史料似乎也说明了回回历法在食分判断上更具有优势。回回历法在食甚时刻等推算上不及大统历,这一特点可能与回回历法在太阴运动推算上的一些不足有关。但是,回回历法对太阴黄道纬度可以进行较为精确推算,这又使得其在食分的判断上比大统历更具有优势。

1 陈久金.回回历日月食原理[J].自然科学史研究,1990,9(2).

2 陈美东.回回历法中若干天文数据之研究[J].自然科学史研究,1986,5(1).

3 唐泉.《授时历》和《回回历法》中日食时差算法[J].中国科技史杂志,2007,28(2).

4 吕凌峰,石云里.明末中西历争论中回回历的推算精度——以六次日月食预报记录为例[J].回族研究,2003,(4).5 石云里,魏弢.元统《纬度太阳通径》的发现——兼论贝琳《回回历法》的原刻本[J].中国科技史杂志,2009,(1).

6 陶培培.南京图书馆藏清抄本《回回历法》研究[J].自然科学史研究,2003,(2).

7 陈久金.回历日月位置的计算及运动的几何模型[J].自然科学史研究,1989,(3).

8 (法)裴化行,王昌社译.利玛窦司铎和当代中国社会[M].第5章.上海:土山湾印书馆,1943.

9 李亮,吕凌峰,石云里.从交食算法的差异看《大统历》的编成和使用[J].中国科技史杂志,2010,(4).

10 石云里.《历象考成后编》中的中心差求法及其日月理论的总体精度[J].中国科技史料,2003,(2).

11 石云里(主编).海外珍稀中国科学技术典籍集成[M].中国科学技术大学出版社,2010.

猜你喜欢
黄道月食日食
天狗食月
黄道培
巧观日食
日食和月食
追肥
为什么会发生月食?
一日食,四季过
壮美的日食
黄道经纬仪
半影月食