明清史 |
古代朝鲜学者的《授时历》研究*
石云里
【专题名称】世界史
【专 题 号】K5
【复印期号】1999年02期
【原文出处】《自然科学史研究》(京)1998年04期第312~321页
【英文标题】THE STUDY OF SHOU SHI LI BY ANCIENT KOREAN SCHOLARS
Shi Yunli
(Research Division of the History of Science,University of Sc-ience and Technology of China,Hefei,230026)
【作者简介】石云里 中国科学技术大学自然科学史研究室,合肥,230026
【关 键 词】授时历/朝鲜/中朝交流Shou Shi Li/Korean astronomy/Sino-Korean exchange
中图法分类号 P1-09
高丽忠烈王7年(元至元十八年,1281年),《授时历》被元朝政府正式采纳。同年,忽必烈就遣使将据此编制的历书颁发到了高丽[1]。17年后,高丽王子忠宣出访元都,“见太史院官之精于此术,欲以其学流传我帮。越大德癸卯、甲辰年间(元大德七—八年,高丽中烈王29-30年,1303-1304年),命光阳君崔公诚之捐内币金百斤,求师而受业,具得其不传之妙。”[2]从此,《授时历》便为高丽天文学家初步掌握,并据以编制自己的历书,于中宣王时期(元至大元年—皇庆元年,1309-1313年)正式颁行国内。不仅如此,朝鲜天文学家还开始了对这部中国历法的研究,在高丽朝和李朝早期先后写出了《授时历捷法立成》、《七政算·内篇》和《交食推步法》等著作。本文试图通过这几部朝鲜古代历法著作的研究,揭示朝鲜古代学者在消化和吸收《授时历》方面所达到的水平。不过,首先我们有必要对《高丽史·历志·授时历经》略作介绍,因为它反映了朝鲜古代天文学家对《授时历》资料的掌握情况。
1 《高丽史·历志·授时历经》
按《李朝实录》的记载,《高丽史·历志》(编成于1451前后)[3]所载的《授时历经》所采用的版本是高丽朝“既已承用”[4]的版本。这个版本十分完整,与《元史·历志》所载术文和章节排列完全相同。所不同的是:首先,《元史·历志》在许多数据上有所差误,以至考据学家要根据《高丽史·历志》本加以校正[5];其次,《高丽史·历志·授时历经》后附有《授时历立成》一部,包括“太阳冬至前后二象盈初缩末限”、“太阳夏至前后二象缩初盈末限”、“太阴限数迟疾度”、“五星立成”等立成表,是中国现存史书中所没有的。对前一个问题,前代考据家的工作已经作得很细,毋庸赘言。后一个问题涉及到中国所缺的历法资料,因此很值得略作讨论。
《明史·历志》在论及立成时指出:“立成者,以日月五星盈缩迟疾之数,预为排定,以便推步取用也。《元史·历经》步七政盈缩迟疾,皆有二术。其一术以三差立算者,即布立成法也。其‘又术’云:以其下盈缩分,乘入限分,万约之,以加其下盈缩者,用立成法也,而且遗立成未载,无从入算。”[6]的确,《元史》所载的《授时历》在推太阳“盈缩差”、月亮“迟疾差”和五星“盈缩差”时都介绍了两种方法,一种是通过招差公式推求,一种是所谓的“又术”。这些“又术”实际是与上面这些立成表配合使用的,目的是为了方便使用,简化计算过程。《元史》本《授时历》中只有“又术”的文字而无相应的立成表,所以令人难知就里,而《高丽史》则为我们解开了这个疑团。
据《元史》记载,“(至元)十九年,(王)恂卒。时(授时)历虽颁,然其推步之式与夫立成之数尚皆未有定稿。(郭)守敬于是比次篇类,整齐分秒,裁为《推步》七卷、《立成》二卷”[7]。由此可见,《授时历立成》是至元十九年以后郭守敬在编纂《授时历经》(即所谓的“推步七卷”)的同时整理完成的。在韩国奎章阁还藏有一部独立的《授时历立成》(我们称这部立成为“奎本”,《高丽史》所载立成为“志本”,署名是王恂、郭守敬二人。与“志本”相比,“奎本”只多出“晨昏日出日入半昼分”立成,是有关日出日落时刻推算的,其余部分完全相同。按照俞景老的观点,“志本”实际是以“奎本”为基础编写的,但在编写时删去了“晨昏日出日入半昼分”立成,因为高丽都城的地理纬度与大都的不同[8]。李银姬和景冰则根据这份表中所列的不同季节日出日落时刻反推其观测地,发现求出的地理纬度与元大都的纬度相同,所以断定这部立成的确是出自王、郭二人之手[9]。看来,郭守敬在编成此书后并没有忘记王恂的功劳,所以也署上了他的名字。参与《高丽史·历志》编写的李朝史家曾提到,《授时历》的高丽传本“别有假法(按:这里的“假法”应该就是《授时历立成》),亦与《元史》所载”[10]。可见,《授时历立成》也是高丽时期随《授时历》一起传入朝鲜的。
李银姬和景冰还指出[9],在《授时历立成》中,附有“四暗星”推步法,这一点十分令人感兴趣。从以前发现的资料来看,“四暗星”计算最早是明朝初期出现在《大统历通轨》之中的。《授时历立成》中的这部分术文是否是李朝初期才由朝鲜天文学家加入的,这一点十分值得怀疑,因为这部分只是给出了四暗星的每日行度(日行)和每行一度所需的时间(度率),而没有相应的立成表,与其他部分显得很不一样,很象是窜入的。但是,在将这里给出的四暗星每日行度同《大统历通轨》(取自《明史·历志》)和《七政算·内篇》中的数据相比,发现并不相同(见表1,从表中可以看出,《七政算·内篇》中的数据与《大统历通轨》中的完全相同)。这说明,《授时历立成》所给定的四暗星日行度并不是李朝初期根据《大统历通轨》的数据加入的,而的确是元代流传下来的。也就是说,推四暗星在元代已经成为中国历法计算的内容之一。
关于《授时历》在高丽的使用情况,《高丽史·历志》作过这样的介绍:之后,由于其“至中宣王改用元《授时历》,而开方之术不传,故交食一节尚循《宣明》”[11]。世宗朝编修的《七政算·内篇》中也指出:“高丽崔诚之从中宣王在元,得授时历法以还,本国始遵用之。然术者且得其造历之法,其日月交食、五星分度等法则未之知也。”[12]就交食的情况来说,上述说法是可信的,因为《授时历》推算日月食定用分时都必须使用开平方术[13]。至于步五星术何以未被掌握,则值得进一步研究。
2 《授时历捷法立成》
高丽朝天文学家崔诚之从元朝学得《授时历》回国后,将它传授给姜保。姜保“一学而尽通其法”,于忠肃王21年(元至正元年,1335年)被封为书云观司历,不久又升任书云正。于是让进士李仁实传写其法,写成《授时历捷法立成》一部[14]。从整个成书过程来讲,这部著作应该反映了崔诚之从中国学回并一直在书云观实际使用的《授时历》的知识。所以,从这部著作中应该能够看出当时高丽天文学家对《授时历》的掌握与使用情况。
全书共包括17份立成表,为分析方便,特将它们列举如下(表2)。
书末还附有“算法”一篇,全部是算术口诀,包括“溜头乘法”、“飞归除法”和“飞归除法歌”等,反映了算筹计算的一些运算法则[15]。
从与《授时历》各部分术文的对应关系来讲,在表2中,第1-2、9-13、15等与“步气朔术”部分相对应,第5、6、17与“步日躔术”部分相对应,第3、7、8、14与“步月离术”相对应,第4、16与“步交食术”部分相对应。可以看出,这些立成表都是姜保根据《授时历》术文独立推算出来的。当然,计算中他可能也参考了《授时历立成》。
从计算方面来讲,姜保的这些表格比《授时历立成》中的表格更加细致,更加简便,可以减少大量的计算。如:表2中以用于求“盈缩差”的第5、6两表,尽管《授时历立成》有名称和作用基本相同的两份表,但在计算中并不能直接从表中查取要求的“盈缩差”值,而需先从表中查出有关数据,然后用所谓的“又术”加以推求。但是,姜保的表则直接列出了每日每10刻的“迟疾差”值。在实际计算中,只要求出了入盈缩初末限的值,即可据之从表中直接查出想要的结果。同样,从姜保的“入转迟疾差度”中可以直接查到每月每日每刻的“迟疾差”和入限数,根据限数又可以直接从“加减刻立成”中查取定朔计算时所需的减差,无须计算,比“又术”用《授时历立成》的“太阴限数迟疾度”进行计算的方法要简单得多。其他表格的用法大都如此。可以说,只有在对《授时历》的算法有了熟练把握的基础上才能编出这样的计算表。当然,表格列出的数据一般是较为固定的,对于其中的数据,只能取近似值,所以,姜保的“捷法”在精度上可能会受到影响。
从姜保的这部著作来看,关于高丽朝天文学家未掌握《授时历》五星推步法的说法(参见本文第1节)可能是正确的,因为姜保的著作中连《授时历立成》中的五星立成表都未收入,说明当时的确缺乏这方面的知识。另外,姜保的著作中虽然有同交食计算有关的立成表(表2中的第4和16),但由于无法解决开方术的问题,交食计算还是无法进行的。
3 《七政算·内篇》
鉴于高丽天文学家对《授时历》并未完全掌握,李朝初期,“世宗命郑麟趾、郑招、郑钦等推算,悉究得其妙。其所未尽究者加以睿断,始释然矣。又得太阴、太阳《通轨》于中朝,其法小与此。稍加概括为《内篇》”[16]。也就是说,《七政算·内篇》[17]是在李朝天文学家长期研究《授时历》,并参照《大统历通轨》的基础上编纂而成的。全书共计3卷,于世宗14年(明宣德七年,1432年)最终编成。这是朝鲜天文学家所完成的第一部大型的历法著作,在李朝引入西法之前一直是官用历法。直到西法传入之后,仍一直被用于交食计算,以同西法相参考[18]。对这部著作,李银姬等人已经有过较为细致的研究[19],笔者将在此基础上略作补充。
据《李朝实录》记载,曾参与《七政算·内篇》编纂的郑鳞趾生前奉命著有“日月食、五星、四暗星躔度留逆《假令》”[20]。这说明,对书中所有项目当时都写有专门著作,对各种推步方法具体举例解释。可惜的是,在这些“假令”中,流传至今的只有《七政算内篇丁卯年交食假令》一书[21]。书中以正统丁卯年(明正统十二年,李朝世宗30年,1447年)正月的日食和八月的月食为例,详细说明了利用《七政算·内篇》推算日月食的基本步骤和技巧。在这部书的注文中,还提到《历日假令》和《太阳假令》等,明显属于上述“假令”系列。
李银姬在将《七政算·内篇》与《授时历》、《大统历通轨》和《明史·大统历》的体例、历元和“应数”进行对比之后得出了以下结论:(1)在参考《授时历》的同时,《七政算·内篇》的编者还参考了《大统历》和《大统历通轨》。在内容选择方面《七政算·内篇》主要参照了《大统历》;(2)在历元、算法和天文常数方面,该书主要依照的是《授时历》;(3)书中根据汉阳(李朝首都)的北极出地与上都和北京不同的事实,对步晷漏中星术中的“黄道出入赤道内外去极度及半昼夜分”表中的半昼夜分进行了修改,并据此推出了汉阳一年各日的日出日落时间表,计算结果精度很度。这几个结论基本正确地概括了《七政算·内篇》的一些主要特点,但也还是有一些地方须作补充和修正。
首先,笔者认为,把《大统历》作为《七政算·内篇》的主要参考文献之一,并拿《明史·历志》的《大统历》来同《七政算·内篇》比较,以追溯后者的中国源流,这种观点和作法是值得推敲的。原因是:在明一代并没有一部名叫《大统历》的历法著作。关于这个问题,只需回顾一下明朝历法发展的历史和《明史·历志》的编写经过就可得到澄清。
最初,明朝历官只是用《授时历》的方法推本朝的历书,历书的名称叫做《大统历》。直到洪武十七年(1384年),元统才“取《授时历》,去其岁实消长之说,析其条理,得四卷,以洪武十七年甲子为历元,命曰《大统历法通轨》”。如果当时已经有一部独立的关于历法计算的《大统历》(而不是历书),那么,元统不会不以它为改历的主要依据。清初《明史》的作者在谈及《明晚·历志》中“大统历法”的来源时指出:它是“据《大统历法通轨》及《历草》诸书,稍为编次,首法原,次立成,次推步”[22]而成的(按:这里的“《历草》诸书”是指清初“仅存”的“(齐)履谦之《议录》、《历经》之初稿”),也没有提及有《大统历》这样一部独立的著作。而《七政算·内篇》的序文中也只提到研究《授时历》、参照《大统历法通轨》,只字未提有独立的《大统历》(参见本节开头)。
所在,在《七政算·内篇》编写过程中,得到参考的明代历法著作只有《大统历法通轨》,《七政算·内篇》的内容甚至体例都显示了这部著作的影响。在内容方面,《七政算·内篇》共包括7章,即历日、太阳、太阴、中星、交食、五星和四余星,另外在书的一开始还首先给出了所有基本常数,包括天行诸率、日行诸率、月行诸率和日月食(诸率)。除中星部分外,其余6章与《大统历法通轨》的组成部分(即历日通轨、太阳通轨、太阴通轨、交食通轨、五星通轨和四余躔度通轨)正好形成一一对应。尤其是四余星部分的内容,在现存《授时历》术文中根本没有作为独立章节出现。
李银姬的第2个结论中关于《七政算·内篇》的历元和相关的天文常数是取自《授时历》的观点是正确的,但关于该书在算法方面与《授时历》关系的说法则值得推敲。在计算方法上,《授时历》是以推步为主,使用立成的方法只是作为“又术”附录其后,而《大统历法通轨》则突出了以基于立成的“诸捷法”的地位[23]。不难发现,《七政算·内篇》在算法上实际与《大统历法通轨》更加接近,书中对基于立成的“捷法”是如此倚重,以至于在日月五星迟疾盈缩差推步的部分,将依据三差进行推算的术文全都省略不载了。所以,在算法方面,《七政算·内篇》受《大统历法通轨》的影响更大。
在论述第3个问题时,李银姬认为朝鲜天文学家重算这些数据的方法是“用太阳的赤纬(黄道出入赤道内外度)以及夏至和冬至之间的时间间隔(至差)进行计算的,而二至间的时间间隔则是用按汉阳纬度设置的日晷测量的”。这一结论无疑是从《七政算·内篇》编者在书末所做的申明中得出的:“日出入随处各异,诸历不同。《内篇》据汉阳日至之晷,推求至差,得每日日出入昼夜刻分,定为本国所用。”[24]可是,李银姬明显误解了其中“至差”的含义。其实,《授时历》中已经明确给出了求不同纬度地区昼夜分和日出日入时刻的方法(“求九服所在漏刻”):
“各於所在以仪测验,或下水漏,以定其处冬至或夏至夜刻,与五十刻相减,余为至差刻。置所求日黄道去赤道内外度及分,以至差刻乘之,进一位,如二百三十九而一,所得内减外加五十刻,即所求夜刻,以减百刻,余为昼刻。其日出入辰刻及更点等率,依术求之。”[25]
同一段文字在《高丽史·历志》的《授时历经》中同样可以找到,其中的“至差刻”明显就是上文提到的“至差”,因为这个差的单位是刻,所以也可称为“至差刻”。令至差为d,每日黄道内外度(太阳赤纬)为ω,所求日夜刻为x±50,则根据上述算法,x的求法为:
与《授时历》中所用的公式完全相同。
《授时历》中的这种方法是宋代《纪元历》中首创的[26],其后大部分中国历法中都用它解决九服漏刻的推求问题,李朝初期传入朝鲜的《重修大明历》和《庚午元历》中也使用了这种方法。奇怪的是,《七政算·内篇》并未收录此部分术文。但是,从上面所引的书末申明文字来看,当时使用的就是这种方法。计算中只要d和ω的测量精度能够保证,x的精度就不会有问题。李银姬的验算表明,当时朝鲜天文学家算出的日出日入时刻的精度很度,说明这两个值的测算精度也很好。其中ω值可以通过《授时历》所给的方法直接推求,其误差[27]为0°.11。
至于d,从理论上讲可以用当地北极高度,通过会圆术进行计算。但是,李朝天文学家使用则是实测方法,而且所用的可能主要不是“下水漏”的方法,而是“以日至之晷推至差”的手段。关于这一点,参与过《七政算·外篇》编纂的李纯之后来也提到:“先测我国汉阳北极出地三十八度少弱,参考其二至晷影,推求得日出入之分”[28]。这说明,当时用的主要不是漏刻法,而是使用日晷测出昼长,然后进一步换算成夜刻的。
4 《交食推步法》
《交食推步法》[29]共分两卷,是以正统丁卯年(明正统十二年,李朝世宗30年,1447年)的日月食为例而编写的关于日食(上卷)和月食(下卷)的推步方法,书前另有《算学发蒙》一篇,介绍了历法计算中使用的筹算法则,其中包括开平方。书首有李纯之所写的序一篇,署名日期是“天顺二年正月”(李朝世祖4年,1458年)。其中指出,包括算学部分在内的这部著作“皆我世宗大王所作也”。由于书中取正统九年(李朝世宗27年)为历元,推算的又是正统十二年的交食,所以,其写作年代当居于两者之间。后来,李纯之奉世祖之命,对该书进行了注释,以正统十二年的交食计算为例,更加细致地阐述了交食计算的方法和技巧。对于这部著作,目前尚无专门研究,笔者将重点揭示其在吸收中国历法知识方面所取得的进步。
值得注意的是,尽管在写这部著作的同一时期,先后有《七政算·内篇》和《七政算内篇丁卯年交食假令》两部著作问世,世宗大王在书中所使用的方法并非取自它们,在历元和应数方面也作了较大的改变。例如,在历元的取法上,《七政算·内篇》是按《授时历》,取至元辛巳(1281年)为元,而《交食推步法》则取了一个非常近的历元——正统甲子年(李朝世宗27年,1444年)。《交食推步法》最大的一个改变在于推算方法方面,鉴于《七政算·内篇》和《授时历立成》等著作中“立成诸数浩繁不便于观览”[30]的问题,该书在研究太阳盈缩差、月亮迟疾差和加减差等立成表以及《授时历》造术方法的基础上,推出了其中各项目的一般推求公式。这样,在计算迟疾、盈缩差等项目的过程中就不必取查立成表,而只需按照公式直接计算即可。从实质上来讲,这项工作就是总结出了《授时历立成》中各项内容的推求公式。
以太阳盈缩差的计算为例,《授时历》“又术”的推算方法为:“置入限分,以其日盈缩分乘之,万约之为分,一加其下盈缩积,万约为度,不满为分、秒。”其中盈缩分、盈缩积都要从《授时历立成》的“太阳冬至前后二象限盈初缩末限”和“太阳夏至前后二象限缩初盈末限”表中去查。《授时历》中只给出了表格,而没有说明表中的各项目的数据是如何推出的。《交食推步法》中则总结出了相应的公式:
式中的“积日”与《授时历》中“初末限”的意义和取法都相同,此外取整数入算,在末限者均反减半岁周入。按照“又术”,最后盈缩差的求法为:
盈缩差=[(入限分×盈缩加分)÷10000+盈缩积]÷10000
式中的“入限分”为“积日”的零余部分。
如果用三差法、“又术”法(查立成表)和上述方法(我们称之为“新推法”)对正统十二年八月朔望的盈缩差进行计算(积日=88日,入限分=5321.09分),则可看出,“新推法”与“又术”法所得的结果是完全相同,与三差法的结果却小有差别(表3)。
对于月亮迟疾差的推求,《授时历》“又术”的求法是:
其中,每日的月行限数被取作12.1935,比《授时历》和《大统历》约取作12.20的值要精确。我们也用这种方法对正统十二年八月朔和望的迟疾差进行了验算,结果表明“新推法”和三差法推出的结果比较接近,但与“又术”法求出的结果却有较大差别(表4)。这一点也许同该书对日限数的改变有关。
以上这些公式实际是计算《授时历》立成表的基本方法,由于《授时历》中对其立法原理未作任何交待,所以明清之际不少中国天算家都为研究这种立法原理作出了努力。这些成果部分被载入《明史·历志》的“大统历法原”部分,而参与过这部历志编写的黄宗羲则对之有更加系统细致的讨论。与《明史·历志》一样,他所用的方法是招差术。他推出结果的最终表述方式尽管与《交食推步法》中的不同,但经过同类项合并,即可得到同样结果。以盈缩加分的推求为例,黄宗羲的方法是,先推出平、立、定三差,进而求得平立合差、加分立差等常数,最后推出的结果是:
“推盈缩加术曰:置盈缩历初末限大余,减一折半,仍以本限乘之,得数再以加分立差(盈初缩末一百八十六,缩初盈末一百六十二)乘之,寄位。另置初日平立合差(盈初缩末四万九三八六,缩初盈末四万四三六二),以本限乘之,得数与寄位相并,万约为分,各减其初日加分,余为本日加分。”[31]
其中“初末限大余”与“初末限”意义相同,指所求日入初末限的积日整数,“初日加分”在盈初缩末限为510.8569,在缩初盈末限为484.8473。于是上述结果可用算式表示如下:
通过同类项的合并,可以得出与上述《交食推步法》公式完全相同的算式,其余算式也都如此。15世纪上半期的朝鲜天文学家能够推出这样的公式,说明他们对招差术以及《授时历》的立法原理已经有了很好的掌握。也就是说,经过对《授时历》等中国历法著作的长期钻研,朝鲜天文学家已经达到了真正融会贯通的水平了。
【专 题 号】K5
【复印期号】1999年02期
【原文出处】《自然科学史研究》(京)1998年04期第312~321页
【英文标题】THE STUDY OF SHOU SHI LI BY ANCIENT KOREAN SCHOLARS
Shi Yunli
(Research Division of the History of Science,University of Sc-ience and Technology of China,Hefei,230026)
【作者简介】石云里 中国科学技术大学自然科学史研究室,合肥,230026
【内容提要】 | 该文通过对几部朝鲜古代历法著作的研究,对古代朝鲜学者对《授时历》的消化吸收情况进行了探讨,结果发现:《授时历捷法立成》则是高丽天文学家姜保根据《授时历》独立推算的一套立成表,但在使用上比《授时历立成》本身的立成表更为方便。《七政算·内篇》在“应数”等基本常数方面虽然取自《授时历》,但在算法和体例方面则主要是以《大统历通轨》为参照的;该书中的四季半昼夜分和日出时刻表是李朝天文学家根据《授时历》“步九服所在漏刻术”推求的,该算法与球面天文学算式相符,为推算结果提供了精度保障。《交食推步法》中已经正确推出了《授时历》盈缩、迟疾立成表的一般计算公式,表明李朝早期的朝鲜天文学家已经掌握了招差术以及《授时历》立法原理,对这部历法已经真正达到了融会贯通的水平。 This paper made a systematic study on several Korean classi-cs on the Shou Shi Li in an attempt to reveal the level reached by ancient Korean astronomers in their absorption and assimi-lation of this Chinese Calendar,and found that(1)the ready ta-bles in the Su-si-ryok Chop-pop Ipsong were calculated indepe-ndently by Kang Po according to the rules of the Shou Shi Li but were more convenient in practical use than the ready tabl-es in the Shou Shi Li Li Cheng;(2)although the epoch and elem-ent parameters in the Chil-Chon San Nea-Pyon(CCSNP)were taken mainly from the Shou-Shi Li,its calculating method and the st-yle of compilation were adopted mainly from the Da-Tong Li Tong-Gui;(3)the new table in CCSNPshowing the half-a-day lengths in different seasons as seen at Han-Yang were calculated by u-sing the method for the calculation of this kind of table for different places mentioned in the Shou-Shi Li,which conforms with formula of spherical astronomy;(4)the author of the Jiao-Shi Tui-Bu Fa had produced the general formulae for the compu-tation of the ready tables used in the calculation of the solar and lunar equations,indicating that the Korean Astronomers in the early Yi dynasty had grasped the caculative principle of Shou-Shi Li and the method of interpolation needed in it. |
高丽忠烈王7年(元至元十八年,1281年),《授时历》被元朝政府正式采纳。同年,忽必烈就遣使将据此编制的历书颁发到了高丽[1]。17年后,高丽王子忠宣出访元都,“见太史院官之精于此术,欲以其学流传我帮。越大德癸卯、甲辰年间(元大德七—八年,高丽中烈王29-30年,1303-1304年),命光阳君崔公诚之捐内币金百斤,求师而受业,具得其不传之妙。”[2]从此,《授时历》便为高丽天文学家初步掌握,并据以编制自己的历书,于中宣王时期(元至大元年—皇庆元年,1309-1313年)正式颁行国内。不仅如此,朝鲜天文学家还开始了对这部中国历法的研究,在高丽朝和李朝早期先后写出了《授时历捷法立成》、《七政算·内篇》和《交食推步法》等著作。本文试图通过这几部朝鲜古代历法著作的研究,揭示朝鲜古代学者在消化和吸收《授时历》方面所达到的水平。不过,首先我们有必要对《高丽史·历志·授时历经》略作介绍,因为它反映了朝鲜古代天文学家对《授时历》资料的掌握情况。
1 《高丽史·历志·授时历经》
按《李朝实录》的记载,《高丽史·历志》(编成于1451前后)[3]所载的《授时历经》所采用的版本是高丽朝“既已承用”[4]的版本。这个版本十分完整,与《元史·历志》所载术文和章节排列完全相同。所不同的是:首先,《元史·历志》在许多数据上有所差误,以至考据学家要根据《高丽史·历志》本加以校正[5];其次,《高丽史·历志·授时历经》后附有《授时历立成》一部,包括“太阳冬至前后二象盈初缩末限”、“太阳夏至前后二象缩初盈末限”、“太阴限数迟疾度”、“五星立成”等立成表,是中国现存史书中所没有的。对前一个问题,前代考据家的工作已经作得很细,毋庸赘言。后一个问题涉及到中国所缺的历法资料,因此很值得略作讨论。
《明史·历志》在论及立成时指出:“立成者,以日月五星盈缩迟疾之数,预为排定,以便推步取用也。《元史·历经》步七政盈缩迟疾,皆有二术。其一术以三差立算者,即布立成法也。其‘又术’云:以其下盈缩分,乘入限分,万约之,以加其下盈缩者,用立成法也,而且遗立成未载,无从入算。”[6]的确,《元史》所载的《授时历》在推太阳“盈缩差”、月亮“迟疾差”和五星“盈缩差”时都介绍了两种方法,一种是通过招差公式推求,一种是所谓的“又术”。这些“又术”实际是与上面这些立成表配合使用的,目的是为了方便使用,简化计算过程。《元史》本《授时历》中只有“又术”的文字而无相应的立成表,所以令人难知就里,而《高丽史》则为我们解开了这个疑团。
据《元史》记载,“(至元)十九年,(王)恂卒。时(授时)历虽颁,然其推步之式与夫立成之数尚皆未有定稿。(郭)守敬于是比次篇类,整齐分秒,裁为《推步》七卷、《立成》二卷”[7]。由此可见,《授时历立成》是至元十九年以后郭守敬在编纂《授时历经》(即所谓的“推步七卷”)的同时整理完成的。在韩国奎章阁还藏有一部独立的《授时历立成》(我们称这部立成为“奎本”,《高丽史》所载立成为“志本”,署名是王恂、郭守敬二人。与“志本”相比,“奎本”只多出“晨昏日出日入半昼分”立成,是有关日出日落时刻推算的,其余部分完全相同。按照俞景老的观点,“志本”实际是以“奎本”为基础编写的,但在编写时删去了“晨昏日出日入半昼分”立成,因为高丽都城的地理纬度与大都的不同[8]。李银姬和景冰则根据这份表中所列的不同季节日出日落时刻反推其观测地,发现求出的地理纬度与元大都的纬度相同,所以断定这部立成的确是出自王、郭二人之手[9]。看来,郭守敬在编成此书后并没有忘记王恂的功劳,所以也署上了他的名字。参与《高丽史·历志》编写的李朝史家曾提到,《授时历》的高丽传本“别有假法(按:这里的“假法”应该就是《授时历立成》),亦与《元史》所载”[10]。可见,《授时历立成》也是高丽时期随《授时历》一起传入朝鲜的。
李银姬和景冰还指出[9],在《授时历立成》中,附有“四暗星”推步法,这一点十分令人感兴趣。从以前发现的资料来看,“四暗星”计算最早是明朝初期出现在《大统历通轨》之中的。《授时历立成》中的这部分术文是否是李朝初期才由朝鲜天文学家加入的,这一点十分值得怀疑,因为这部分只是给出了四暗星的每日行度(日行)和每行一度所需的时间(度率),而没有相应的立成表,与其他部分显得很不一样,很象是窜入的。但是,在将这里给出的四暗星每日行度同《大统历通轨》(取自《明史·历志》)和《七政算·内篇》中的数据相比,发现并不相同(见表1,从表中可以看出,《七政算·内篇》中的数据与《大统历通轨》中的完全相同)。这说明,《授时历立成》所给定的四暗星日行度并不是李朝初期根据《大统历通轨》的数据加入的,而的确是元代流传下来的。也就是说,推四暗星在元代已经成为中国历法计算的内容之一。
关于《授时历》在高丽的使用情况,《高丽史·历志》作过这样的介绍:之后,由于其“至中宣王改用元《授时历》,而开方之术不传,故交食一节尚循《宣明》”[11]。世宗朝编修的《七政算·内篇》中也指出:“高丽崔诚之从中宣王在元,得授时历法以还,本国始遵用之。然术者且得其造历之法,其日月交食、五星分度等法则未之知也。”[12]就交食的情况来说,上述说法是可信的,因为《授时历》推算日月食定用分时都必须使用开平方术[13]。至于步五星术何以未被掌握,则值得进一步研究。
2 《授时历捷法立成》
高丽朝天文学家崔诚之从元朝学得《授时历》回国后,将它传授给姜保。姜保“一学而尽通其法”,于忠肃王21年(元至正元年,1335年)被封为书云观司历,不久又升任书云正。于是让进士李仁实传写其法,写成《授时历捷法立成》一部[14]。从整个成书过程来讲,这部著作应该反映了崔诚之从中国学回并一直在书云观实际使用的《授时历》的知识。所以,从这部著作中应该能够看出当时高丽天文学家对《授时历》的掌握与使用情况。
全书共包括17份立成表,为分析方便,特将它们列举如下(表2)。
书末还附有“算法”一篇,全部是算术口诀,包括“溜头乘法”、“飞归除法”和“飞归除法歌”等,反映了算筹计算的一些运算法则[15]。
从与《授时历》各部分术文的对应关系来讲,在表2中,第1-2、9-13、15等与“步气朔术”部分相对应,第5、6、17与“步日躔术”部分相对应,第3、7、8、14与“步月离术”相对应,第4、16与“步交食术”部分相对应。可以看出,这些立成表都是姜保根据《授时历》术文独立推算出来的。当然,计算中他可能也参考了《授时历立成》。
从计算方面来讲,姜保的这些表格比《授时历立成》中的表格更加细致,更加简便,可以减少大量的计算。如:表2中以用于求“盈缩差”的第5、6两表,尽管《授时历立成》有名称和作用基本相同的两份表,但在计算中并不能直接从表中查取要求的“盈缩差”值,而需先从表中查出有关数据,然后用所谓的“又术”加以推求。但是,姜保的表则直接列出了每日每10刻的“迟疾差”值。在实际计算中,只要求出了入盈缩初末限的值,即可据之从表中直接查出想要的结果。同样,从姜保的“入转迟疾差度”中可以直接查到每月每日每刻的“迟疾差”和入限数,根据限数又可以直接从“加减刻立成”中查取定朔计算时所需的减差,无须计算,比“又术”用《授时历立成》的“太阴限数迟疾度”进行计算的方法要简单得多。其他表格的用法大都如此。可以说,只有在对《授时历》的算法有了熟练把握的基础上才能编出这样的计算表。当然,表格列出的数据一般是较为固定的,对于其中的数据,只能取近似值,所以,姜保的“捷法”在精度上可能会受到影响。
从姜保的这部著作来看,关于高丽朝天文学家未掌握《授时历》五星推步法的说法(参见本文第1节)可能是正确的,因为姜保的著作中连《授时历立成》中的五星立成表都未收入,说明当时的确缺乏这方面的知识。另外,姜保的著作中虽然有同交食计算有关的立成表(表2中的第4和16),但由于无法解决开方术的问题,交食计算还是无法进行的。
3 《七政算·内篇》
鉴于高丽天文学家对《授时历》并未完全掌握,李朝初期,“世宗命郑麟趾、郑招、郑钦等推算,悉究得其妙。其所未尽究者加以睿断,始释然矣。又得太阴、太阳《通轨》于中朝,其法小与此。稍加概括为《内篇》”[16]。也就是说,《七政算·内篇》[17]是在李朝天文学家长期研究《授时历》,并参照《大统历通轨》的基础上编纂而成的。全书共计3卷,于世宗14年(明宣德七年,1432年)最终编成。这是朝鲜天文学家所完成的第一部大型的历法著作,在李朝引入西法之前一直是官用历法。直到西法传入之后,仍一直被用于交食计算,以同西法相参考[18]。对这部著作,李银姬等人已经有过较为细致的研究[19],笔者将在此基础上略作补充。
据《李朝实录》记载,曾参与《七政算·内篇》编纂的郑鳞趾生前奉命著有“日月食、五星、四暗星躔度留逆《假令》”[20]。这说明,对书中所有项目当时都写有专门著作,对各种推步方法具体举例解释。可惜的是,在这些“假令”中,流传至今的只有《七政算内篇丁卯年交食假令》一书[21]。书中以正统丁卯年(明正统十二年,李朝世宗30年,1447年)正月的日食和八月的月食为例,详细说明了利用《七政算·内篇》推算日月食的基本步骤和技巧。在这部书的注文中,还提到《历日假令》和《太阳假令》等,明显属于上述“假令”系列。
李银姬在将《七政算·内篇》与《授时历》、《大统历通轨》和《明史·大统历》的体例、历元和“应数”进行对比之后得出了以下结论:(1)在参考《授时历》的同时,《七政算·内篇》的编者还参考了《大统历》和《大统历通轨》。在内容选择方面《七政算·内篇》主要参照了《大统历》;(2)在历元、算法和天文常数方面,该书主要依照的是《授时历》;(3)书中根据汉阳(李朝首都)的北极出地与上都和北京不同的事实,对步晷漏中星术中的“黄道出入赤道内外去极度及半昼夜分”表中的半昼夜分进行了修改,并据此推出了汉阳一年各日的日出日落时间表,计算结果精度很度。这几个结论基本正确地概括了《七政算·内篇》的一些主要特点,但也还是有一些地方须作补充和修正。
首先,笔者认为,把《大统历》作为《七政算·内篇》的主要参考文献之一,并拿《明史·历志》的《大统历》来同《七政算·内篇》比较,以追溯后者的中国源流,这种观点和作法是值得推敲的。原因是:在明一代并没有一部名叫《大统历》的历法著作。关于这个问题,只需回顾一下明朝历法发展的历史和《明史·历志》的编写经过就可得到澄清。
最初,明朝历官只是用《授时历》的方法推本朝的历书,历书的名称叫做《大统历》。直到洪武十七年(1384年),元统才“取《授时历》,去其岁实消长之说,析其条理,得四卷,以洪武十七年甲子为历元,命曰《大统历法通轨》”。如果当时已经有一部独立的关于历法计算的《大统历》(而不是历书),那么,元统不会不以它为改历的主要依据。清初《明史》的作者在谈及《明晚·历志》中“大统历法”的来源时指出:它是“据《大统历法通轨》及《历草》诸书,稍为编次,首法原,次立成,次推步”[22]而成的(按:这里的“《历草》诸书”是指清初“仅存”的“(齐)履谦之《议录》、《历经》之初稿”),也没有提及有《大统历》这样一部独立的著作。而《七政算·内篇》的序文中也只提到研究《授时历》、参照《大统历法通轨》,只字未提有独立的《大统历》(参见本节开头)。
所在,在《七政算·内篇》编写过程中,得到参考的明代历法著作只有《大统历法通轨》,《七政算·内篇》的内容甚至体例都显示了这部著作的影响。在内容方面,《七政算·内篇》共包括7章,即历日、太阳、太阴、中星、交食、五星和四余星,另外在书的一开始还首先给出了所有基本常数,包括天行诸率、日行诸率、月行诸率和日月食(诸率)。除中星部分外,其余6章与《大统历法通轨》的组成部分(即历日通轨、太阳通轨、太阴通轨、交食通轨、五星通轨和四余躔度通轨)正好形成一一对应。尤其是四余星部分的内容,在现存《授时历》术文中根本没有作为独立章节出现。
李银姬的第2个结论中关于《七政算·内篇》的历元和相关的天文常数是取自《授时历》的观点是正确的,但关于该书在算法方面与《授时历》关系的说法则值得推敲。在计算方法上,《授时历》是以推步为主,使用立成的方法只是作为“又术”附录其后,而《大统历法通轨》则突出了以基于立成的“诸捷法”的地位[23]。不难发现,《七政算·内篇》在算法上实际与《大统历法通轨》更加接近,书中对基于立成的“捷法”是如此倚重,以至于在日月五星迟疾盈缩差推步的部分,将依据三差进行推算的术文全都省略不载了。所以,在算法方面,《七政算·内篇》受《大统历法通轨》的影响更大。
在论述第3个问题时,李银姬认为朝鲜天文学家重算这些数据的方法是“用太阳的赤纬(黄道出入赤道内外度)以及夏至和冬至之间的时间间隔(至差)进行计算的,而二至间的时间间隔则是用按汉阳纬度设置的日晷测量的”。这一结论无疑是从《七政算·内篇》编者在书末所做的申明中得出的:“日出入随处各异,诸历不同。《内篇》据汉阳日至之晷,推求至差,得每日日出入昼夜刻分,定为本国所用。”[24]可是,李银姬明显误解了其中“至差”的含义。其实,《授时历》中已经明确给出了求不同纬度地区昼夜分和日出日入时刻的方法(“求九服所在漏刻”):
“各於所在以仪测验,或下水漏,以定其处冬至或夏至夜刻,与五十刻相减,余为至差刻。置所求日黄道去赤道内外度及分,以至差刻乘之,进一位,如二百三十九而一,所得内减外加五十刻,即所求夜刻,以减百刻,余为昼刻。其日出入辰刻及更点等率,依术求之。”[25]
同一段文字在《高丽史·历志》的《授时历经》中同样可以找到,其中的“至差刻”明显就是上文提到的“至差”,因为这个差的单位是刻,所以也可称为“至差刻”。令至差为d,每日黄道内外度(太阳赤纬)为ω,所求日夜刻为x±50,则根据上述算法,x的求法为:
与《授时历》中所用的公式完全相同。
《授时历》中的这种方法是宋代《纪元历》中首创的[26],其后大部分中国历法中都用它解决九服漏刻的推求问题,李朝初期传入朝鲜的《重修大明历》和《庚午元历》中也使用了这种方法。奇怪的是,《七政算·内篇》并未收录此部分术文。但是,从上面所引的书末申明文字来看,当时使用的就是这种方法。计算中只要d和ω的测量精度能够保证,x的精度就不会有问题。李银姬的验算表明,当时朝鲜天文学家算出的日出日入时刻的精度很度,说明这两个值的测算精度也很好。其中ω值可以通过《授时历》所给的方法直接推求,其误差[27]为0°.11。
至于d,从理论上讲可以用当地北极高度,通过会圆术进行计算。但是,李朝天文学家使用则是实测方法,而且所用的可能主要不是“下水漏”的方法,而是“以日至之晷推至差”的手段。关于这一点,参与过《七政算·外篇》编纂的李纯之后来也提到:“先测我国汉阳北极出地三十八度少弱,参考其二至晷影,推求得日出入之分”[28]。这说明,当时用的主要不是漏刻法,而是使用日晷测出昼长,然后进一步换算成夜刻的。
4 《交食推步法》
《交食推步法》[29]共分两卷,是以正统丁卯年(明正统十二年,李朝世宗30年,1447年)的日月食为例而编写的关于日食(上卷)和月食(下卷)的推步方法,书前另有《算学发蒙》一篇,介绍了历法计算中使用的筹算法则,其中包括开平方。书首有李纯之所写的序一篇,署名日期是“天顺二年正月”(李朝世祖4年,1458年)。其中指出,包括算学部分在内的这部著作“皆我世宗大王所作也”。由于书中取正统九年(李朝世宗27年)为历元,推算的又是正统十二年的交食,所以,其写作年代当居于两者之间。后来,李纯之奉世祖之命,对该书进行了注释,以正统十二年的交食计算为例,更加细致地阐述了交食计算的方法和技巧。对于这部著作,目前尚无专门研究,笔者将重点揭示其在吸收中国历法知识方面所取得的进步。
值得注意的是,尽管在写这部著作的同一时期,先后有《七政算·内篇》和《七政算内篇丁卯年交食假令》两部著作问世,世宗大王在书中所使用的方法并非取自它们,在历元和应数方面也作了较大的改变。例如,在历元的取法上,《七政算·内篇》是按《授时历》,取至元辛巳(1281年)为元,而《交食推步法》则取了一个非常近的历元——正统甲子年(李朝世宗27年,1444年)。《交食推步法》最大的一个改变在于推算方法方面,鉴于《七政算·内篇》和《授时历立成》等著作中“立成诸数浩繁不便于观览”[30]的问题,该书在研究太阳盈缩差、月亮迟疾差和加减差等立成表以及《授时历》造术方法的基础上,推出了其中各项目的一般推求公式。这样,在计算迟疾、盈缩差等项目的过程中就不必取查立成表,而只需按照公式直接计算即可。从实质上来讲,这项工作就是总结出了《授时历立成》中各项内容的推求公式。
以太阳盈缩差的计算为例,《授时历》“又术”的推算方法为:“置入限分,以其日盈缩分乘之,万约之为分,一加其下盈缩积,万约为度,不满为分、秒。”其中盈缩分、盈缩积都要从《授时历立成》的“太阳冬至前后二象限盈初缩末限”和“太阳夏至前后二象限缩初盈末限”表中去查。《授时历》中只给出了表格,而没有说明表中的各项目的数据是如何推出的。《交食推步法》中则总结出了相应的公式:
盈缩加分=【[(0.0093×积日)+4.9293]×积日】-510.8569 (盈初缩末限) 盈缩加分=【[(0.0081×积日)+4.4281]×积日】-484.8473 (缩初盈末限) 盈缩积=【[(0.0031×积日)+2.4600]×积日】-513.3200 (盈初缩末限) 盈缩积=【[(0.0027×积日)+2.2100]×积日】-487.0600 (盈初缩末限) |
式中的“积日”与《授时历》中“初末限”的意义和取法都相同,此外取整数入算,在末限者均反减半岁周入。按照“又术”,最后盈缩差的求法为:
盈缩差=[(入限分×盈缩加分)÷10000+盈缩积]÷10000
式中的“入限分”为“积日”的零余部分。
如果用三差法、“又术”法(查立成表)和上述方法(我们称之为“新推法”)对正统十二年八月朔望的盈缩差进行计算(积日=88日,入限分=5321.09分),则可看出,“新推法”与“又术”法所得的结果是完全相同,与三差法的结果却小有差别(表3)。
对于月亮迟疾差的推求,《授时历》“又术”的求法是:
迟疾差=【[(迟疾历全分-迟疾历日率)×损益分]÷820.08】±迟疾度 对此,《交食推步法》中也推出了上式中各项值的以下计算公式: 限数=迟疾历全分×12.1939(限数>84时以168减之) 迟疾历日率=限数×820.08 损益分=(限数×0.000975+0.057175)×限数-11.081575 迟疾度=[(0.0325×限数+0.0281)×限数-11.11]×限数 |
其中,每日的月行限数被取作12.1935,比《授时历》和《大统历》约取作12.20的值要精确。我们也用这种方法对正统十二年八月朔和望的迟疾差进行了验算,结果表明“新推法”和三差法推出的结果比较接近,但与“又术”法求出的结果却有较大差别(表4)。这一点也许同该书对日限数的改变有关。
以上这些公式实际是计算《授时历》立成表的基本方法,由于《授时历》中对其立法原理未作任何交待,所以明清之际不少中国天算家都为研究这种立法原理作出了努力。这些成果部分被载入《明史·历志》的“大统历法原”部分,而参与过这部历志编写的黄宗羲则对之有更加系统细致的讨论。与《明史·历志》一样,他所用的方法是招差术。他推出结果的最终表述方式尽管与《交食推步法》中的不同,但经过同类项合并,即可得到同样结果。以盈缩加分的推求为例,黄宗羲的方法是,先推出平、立、定三差,进而求得平立合差、加分立差等常数,最后推出的结果是:
“推盈缩加术曰:置盈缩历初末限大余,减一折半,仍以本限乘之,得数再以加分立差(盈初缩末一百八十六,缩初盈末一百六十二)乘之,寄位。另置初日平立合差(盈初缩末四万九三八六,缩初盈末四万四三六二),以本限乘之,得数与寄位相并,万约为分,各减其初日加分,余为本日加分。”[31]
其中“初末限大余”与“初末限”意义相同,指所求日入初末限的积日整数,“初日加分”在盈初缩末限为510.8569,在缩初盈末限为484.8473。于是上述结果可用算式表示如下:
【[(限数-1)÷2]×限数×186+49386×限数】÷10000-510.8569 (盈初缩末) 【[(限数-1)÷2]×限数×186+44362×限数】÷10000-484.8473 (缩初盈末) |
通过同类项的合并,可以得出与上述《交食推步法》公式完全相同的算式,其余算式也都如此。15世纪上半期的朝鲜天文学家能够推出这样的公式,说明他们对招差术以及《授时历》的立法原理已经有了很好的掌握。也就是说,经过对《授时历》等中国历法著作的长期钻研,朝鲜天文学家已经达到了真正融会贯通的水平了。
|