收藏 分销(赏)

《崇祯历书》日食算法研究.pdf

上传人:自信****多点 文档编号:836170 上传时间:2024-03-27 格式:PDF 页数:17 大小:8.45MB
下载 相关 举报
《崇祯历书》日食算法研究.pdf_第1页
第1页 / 共17页
《崇祯历书》日食算法研究.pdf_第2页
第2页 / 共17页
《崇祯历书》日食算法研究.pdf_第3页
第3页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、The Chinese Journal for the History of Science and TechnologyVol.44(2023)No.2中国科技史杂志第4 4 卷(2 0 2 3 年)第2 期:2 1 1 2 2 7崇祯历书日食算法研究纪辰褚龙飞(中国科学技术大学科技史与科技考古系,合肥2 3 0 0 2 6)摘要在崇祯历书交食部分,日食算法非常重要但又最为复杂。通过对交食历指及相关内容的综合考察,本文梳理分析出了日食算法的基本框架,并结合交食经复原了完整具体的日食算法。一方面,该算法与清康熙年间钦天监编撰的细草算七政交食凌犯法中的推算步骤一致;另一方面,据其计算的日食结果与

2、相应的预报记录符合,证明了本文所复原的应是历局用于实际推算的日食算法。另外,本文还发现传教士在崇祯七年七月到崇祯十年之间修改过日食食分算法。最后,模拟计算表明崇祯历书推算北京日食的精度虽优于大统历和回回历法,但却达不到徐光启所声称的“差以分计”。关键词崇祯历书日食算法精度明末清初中图分类号N092:P1-092文献标识码A文章编号1673-1441(2023)02-0211-17交食是中国古代天文学最重视的天象之一,其推算结果往往是检验历法疏密的标准。明中后期,随着官方历法大统历的频繁出错和欧洲天文学的传入,朝野呼吁改历之声越来越高。在明末利用传统天文学改历失败后,崇祯皇帝(1 6 1 1 一

3、1 6 4 4)任命徐光启(1 5 6 2 一1 6 3 3)参照欧洲天文学改历,并最终完成了崇祯历书这样一部标志性著作。显然,提高交食推算精度是此次改历的核心目标之一,因此交食算法无疑是崇祯历书的重要组成部分。然而,该书并没有像大统历法通轨那样明确给出有章可循、用于实际推算的交食算法 1 。虽然通过对其交食历指和交食表的梳理和分析可以得到月食算法,但日食算法由于缺失了不少关键内容,且现有内容中关于日食算法的一些介绍还存在问题,例如传教士所给计算日食初亏和复圆的思路出现了循环求解的困境,根本无法由崇祯历书得到。而长期以来,尽管学界十分关注崇祯历书中的交食内容,但已有研究多集中于从交食预报记录的

4、角度进行分析 2-5】,或从比较、传播与交流的角度进行讨论 6,7 ,没有系统研究过交食算法。所以到目前为止,崇祯历书的日食算法依然不清楚。鉴于此,本文拟对崇祯历书的日食算法进行复原和研究,然后通过模拟计算分析收稿日期:2 0 2 1-0 4-2 9;修回日期:2 0 2 1-0 9-1 6作者简介:纪辰,1 9 9 5 年生,中国科学技术大学科技史与科技考古系博士研究生,研究方向为天文学史;通讯作者:褚龙飞,1 9 8 7 年生,中国科学技术大学科技史与科技考古系副教授,研究方向为天文学史。基金项目:国家自然科学基金青年科学基金项目“明清之际西法交食理论的传播与影响”(项目编号:117030

5、23)。212中心史杂44卷国技科该算法的精度。在此过程中,本文发现了日食算法编写过程中的修改痕迹,并进一步考察了其修改的时间和原因,这可能对学界认识和理解崇祯改历有所助益。1崇祯历书对日食算法的介绍及其缺陷崇祯历书中用于实际推算的交食算法包括算表和指导用表的既定步骤 1 。然而,传教士虽然专门编制了推算日食所需的算表(包含于交食表前八卷),但却没有明确给出如何使用算表的具体步骤。不过,根据交食历指可知,日食算法步骤主要由两部分组成:前半部分不涉及视差,算到定朔为止,包括中会、实会两个模块;后半部分计人视差的影响,包括视会、食分、初亏和复圆、绘制日食图以及求其他省直日食五个模块。前半部分的算法

6、与月食的情况大同小异(只是将计算时间由望转换为朔),通过对交食历指的梳理和分析能够得到完整具体的步骤,但后半部分的情况则比较复杂。首先,后半部分的各个模块要用到哪些算表?这些算表的使用顺序是什么?崇祯历书均没有明确说明。例如,在根据前半部分得到定朔后,按照顺序,应该进人视会模块。但传教士对于视会模块会用到哪些算表及它们的使用顺序均没有明确说明。通过对交食历指和交食表的分析,基本上可以确定视会模块会用到“黄道九十度表”“太阳距赤道表”“南北高弧表”“视半径表”“太阳太阴视差表”“天顶黄道两圈交角表”和“时气差表”。由于交食表各算表基本上按照在交食推算中首次使用的顺序排列,“黄道九十度表”应是第一

7、个与视差有关的算表,而定朔作为已知参数所查的算表也正是“黄道九十度表”,且从该表求得的参数一般是其后算表中的已知参数。因此基本可以确定进人视会模块首先使用的是“黄道九十度表”。但此后各算表具体应该按照什么顺序使用?而且除上述算表外,视会模块是否还会用到其他算表?这些都难以进一步确定。其次,崇祯历书还缺失了后半部分算法中的一些重要内容。例如,前半部分所得的定朔在查“黄道九十度表”之前实际上需要先对相关参数进行适当转换,但崇祯历书对此丝毫没有提及。更重要的是,在没有任何说明的情况下,这些转换步骤很难从相关算表或前后模块的介绍中反推出来。如此一来,即使后半部分算法清楚,也难以得到正确的推算结果。此外

8、,传教士在视会模块推算定朔与食甚之间的时差时进行了迭代运算。虽然他们说明了选代的终止条件:“反覆推求,再三加减,吻与视会合者也。”(8,页610)但这一描述非常模糊,根本无法用于实际推算。原则上说,终止迭代可以采取多种方式,如明确给出迭代的具体次数,或两次相邻计算结果差别小于某数值,但崇祯历书并没有给出这样清晰的判断标准。换言之,视会模块缺少了如何终止迭代这一至关重要的内容。再如,在推算初亏和复圆时,传教士指出需要先求得初亏和复圆时的东西差(视差在黄道上的投影),但求解东西差的前提条件之一是已知初亏和复圆的时刻,如此便出现了循环求解的困境。为此,他们提供了一种可行的思路,即以定朔前后一小时的东

9、西差作为近似结果,但具体要如何计算,尤其是如何运用算表来计算,并没有给出明确步骤综上所述,单靠崇祯历书根本无法得到传教士当时推算所用的日食算法。幸运的是,参与过崇祯历书编纂工作的历局成员张臣后来指导编纂过一本交食经 9 ,书中记载了推算交食的详细步骤,并分别给出了推算月食和日食的完整算2132期纪辰等:崇祯历书日食算法研究例(图1)。比较发现,该书所用术语、提及的算表均与崇祯历书相符。对于月食,不仅该书所载推算月食的步骤与根据崇祯历书得到的月食算法一致,其月食算例的参数及推算结果亦分别与交食表中的数据及治历缘起中的预报值吻合。对于日食,虽然崇祯历书的日食算法并不清楚,但其框架与交食经相同。此外

10、,交食经日食算例推算过程中的参数亦均与交食表查得结果吻合。尽管最终计算结果(如食甚)与治历缘起中的预报值稍有不符,但这是由于交食经推算过程中出现了一些错误。可见,交食经与崇祯历书有着密切的关系,可以作为日食算法复原的参考。三求實朔及加减時刻同觀望名定朔交食艇卷下一求日月距弧距時依月食法密求二次求凿平朔典求月食諾行同法惟不加策宝引八宫0 七度四十六分0 一秒定朔篇已正食法求得太陽實引七宫四度O五分0 二秒太若干度分限距天滇若干度分距地本若干度分求得太陽實翘度以之查黄平象限表鹰若干時分平限若干度分差其视距舞徙可得欲依交周求之亦其大略翁有聚求日食有無以太脍視距取此正法第未算褪假如算崇旗九年丙子崴七月

11、葵卯朔日食依前月势即知所推距時宜加或减於定朔以得視朔法前H食双食下下新建欧斌元大涵著法南昌张来臣公裤指授川i图1交食经中推算日食的步骤2完整日食算法的复原本文首先通过梳理交食历指得到日食算法的前半部分;之后以交食经为参考,在崇祯历书的基础上对算法的后半部分及前后两部分的过渡步骤进行复原。由于篇幅原因,本文无法详述每个步骤的复原过程,故下文分别以中会和视会模块为例来说明算法复原的具体情况日食算法前半部分的中会模块用于推算平朔及相关参数。关于中会求法,交食历指在卷二“推会时减法第四”一章中有如下说明:“若下推将来,用历元后五种行度表。第一格,简得冬至后首朔。次用朔实十三月表加之即得。”(8 ,页5

12、 5 7)并以崇祯五年(1 6 3 2)九月十四为例说明如何推求平望及相关参数(图2)。由于平朔与平望的求法相同,只不加望策(半个朔望月)而已,因此,本文据此说明及算例即可知欲求崇祯元年后交食经一书未附算表,但其所提及的算表均可在交食表中找到。1例如,交食经所给太阳实引数和太阴实引数分别为7 宫4 度5 分2 秒和8 宫7 度4 6 分1 秒,本文根据交2食表可得二者分别为7 宫4 度5 分2 秒和8 宫7 度4 5 分5 4 秒。3例如,在交食经日食算例的“密求视会”这一步中,根据该算例已求得的限距地高和太阳距黄平限人相应算表得到的交角余角应为5 7 1 4 ,但算例中却写成了5 7 1 4

13、 。再如,该算例在“考真时差 这一步中算得南北差为1 6 4 5 ,但该参数在之后被用来进一步计算其他参数时却变成了1 5 4 5 。214中心史杂国44卷科技某年某月平朔,当先查“历元后二百恒年五行表”得到当年的首朔和纪日,之后再根据月份查“十三月表”得到对应的朔策,相加即可得所求平朔,平朔相关参数如太阳、太阴引数等的求法与之类似日食算法后半部分的视会模块主要推算食甚。关于视会求法,交食历指的说明主要在卷六“推视会第二”和“求视会复算视差之故第三”两章:先求日月高弧,以得高差。又求高弧与黄道之交角,因以得南北东西差。次求视会与实会之时差,以加、以减于实会之时刻,而得日月正视会之时刻,其加减以

14、黄道九十度为限即黄平象限。(8,页606)日食与九十度相近,则太阴之偏东西不多,所得时差于本食之实时不甚相远,可免复求东西差。倘所食远距九十度之限,则太阴偏左偏右左右即东西。者必多,而能变其实行以为视行。使不再三考求,何从而知?故先必算太阴之视差,化之为时差,次求视行与太阳实相距若干,则用以推东西差,可得食甚。(8 ,页6 1 0)秒人O川二一数迎家O1十六秒俏升教之小十六种差夏一分一得一皮三十七三封四官大度查均度图2交食历指卷二推算中会的算例注:崇祯五年九月十四月食。可以看出,交食历指关于推算食甚的说明比较笼统,缺少很多细节。而且视会部分也没有给出一个像中会模块那样具体的算例。此外,如前所述

15、,交食历指虽然也指出了视会模块需要进行送代运算,但却没有给出终止送代的具体条件。因此,本文只能参考交食经对视会模块进行复原。由交食经可知,视会模块一共迭代了三次,依次为“求近视会”“密求视会”和“考真时差”。由于每次迭代的计算过程类似,这里以“求近视会”为例进行介绍。交食经“求近视会”的具体说明如下:前求得太阳实经度,以之查黄平象限表应若干时分,加定朔若干时从正午起算总之满二十四时去之。查九十度应若干度分,限距天顶若干度分,距地平若干度分即距顶所减得。随将九十度限与太阳实经度相减,得距黄平限若干度分。(9 ,页3 5)以太阴实引数查视半径表,得太阴距地半径数。又以太阳实经度查距赤道表,得太阳距

16、赤道纬南北若干度分。以此纬度视前所得定朔时刻距午前后若干刻,查高弧表,两数纵横相遇即得高弧若干度分。随将地半径数与高弧度查视差表,两数相值得太阳若干差、太阴若干差,内将太阳差减去太阴差,所余为高卑差数,又名高弧差。(9 ,页3 7 3 8)以地平高度与距黄平限数查两圈交角表,得交角余度度如用正角,以丸十度减金角即得正角。随以交角余度与高弧差数查时气差表,即得东西差。如余角在右,直行顺数者,照下横行求时气差;余角在左,直行逆数者,照上横行求时气差,正角反是。又以太阴实引数交食经中的太阳、太阴实引数即为崇祯历书中的太阳、太阴次引数。215纪辰等:崇祯历书日食算法研究2期查太阴实行表,求太阴一小时实

17、引若千,与东西差相较,依三率法求得时差若干分。以之加或减于定朔时刻,即得近视会时刻,其加减则以黄道九十度为限。(9 ,页4142)除上述说明外,交食经还以崇祯九年七月初一日食为例给出了具体的求解过程。与交食历指相比,交食经不仅涵盖了前者的内容,而且非常详尽,补充了其所缺失的内容。而最为关键的是,它明确地指出了进人视会模块后,时间要从正午起算;其算例也指明此时太阳实经度的起算点要由前半部分的冬至点改为春分点,而这两点恰恰是交食历指没有提及的。依据上述说明及算例,本文在崇祯历书的基础上复原出了“求近视会”的具体步骤,详见下文“崇祯历书日食算法”步骤7。依照与上述两例类似的方法,本文得到了完整具体的

18、日食算法步骤。其中,中会模块对应步骤1,实会模块包括步骤2 6,视会模块包括步骤7 9,食分为步骤1 0,初亏和复圆为步骤1 1 和1 2,绘制日食图、求其他省直日食模块则分别对应步骤1 3 和1 4。崇祯历书日食算法1.查平行表,得平朔之相关参数(8 ,页5 5 7)(1)查“历元后二百恒年五行表”,得到所求年份的首朔及相应的太阳引数、太阴引数、交周度、太阳经度、纪日。(2)查“十三月表”,得到所求月份对应的朔实以及太阳引数、太阴引数、交周度、太阳经度的朔策。(3)以首朔加纪日加朔实得到平朔。再分别以首朔对应的太阳引数、太阴引数、交周度和太阳经度与各朔策相加得到平朔时的太阳引数、太阴引数、交

19、周度、太阳经度。(4)根据平朔时的交周度初步判断是否有日食发生:若平朔时的交周度在1 1 宫1 8 40至0 宫2 0 4 0 或5 宫9 2 0 至6 宫1 1 2 0 之间,则会有日食发生,否则不会发生日食(8 ,页5 7 4;9 ,页3 4)。2.求近实交(8,页5 5 7 5 5 8)(1)以平朔时的太阳、太阴引数查“加减度表 得到太阳、太阴均度(太阳、太阴均度本身都含有正负号,下同),则日月相距弧=太阳均度-太阴均度。(2)日月相距弧即为“四行时表”中的“月距日”项,查与之相对应的时间为两交相距时,符号与日月相距弧相同。(3)以两交相距时加平朔即得近实交。(4)以两交相距时查“四行时

20、表”得到对应的太阳平行和太阴引数,分别加于平朔时的太阳、太阴引数,即得太阳、太阴次引数。3.求实朔(8 ,页5 5 8 5 5 9)(1)以太阳、太阴次引数查“加减度表”得到太阳、太阴次均度,则次相距弧=太阳次均度一太阴次均度。(2 同步骤2(2),以次相距弧查“四行时表”得到次相距时。这里“太阴一小时实引”应为“太阴一小实行”之误。小时之月实行以太明次得太阴(1 0)以交角与高弧差入“时气差表”查时差,即为东西差。以9 0 减之得交角2(9)以限距地上正口限(取绝对值顶黄道两圈交交角余角差:太阴高库太阳高库差(8)以南北弧与月距地数查太阳太阴视差太阴高库差。高弧美与北得南北高弧(7)计算定朔

21、距午正时刻(距午时刻化为刻,1 刻为1 5 分钟),与太阳距赤道纬度同(6)以太阳实经度减3大阳距赤阳赤纬(不足3 宫者,加9 宫)(5)以太阴次引数查得月距地数(4)限距地十度距天顶180时,食任限分则食在限西E-360360,太阳距黄平限E0,180太阳实经度E(1 8 0 1801U00180,太阳距黄平限太阳实经度太阳实经度E0(3)太阳距黄平限称“九十度阝和九十度距天顶(2)以总时相加时的道九十度限(又加1 2 小时得到总时。(满2 4 小时去之)(1)以太阳实经度十度表北京北极出地取4 0)得加时于定朔后再216志心史中杂44卷国技科(3)以次相距时加于平朔,即得实会时刻,即实朔。

22、4.求缠离实度(8 ,页5 6 1、5 6 5)(1)以次相距时查“四行时表”得到对应的太阳平行,加于平朔时的太阳经度后再与太阳次均度相加即为太阳实经度(2)以次相距时查“四行时表”得到对应的交周度,加于平朔时交周度后再与太阴次均度相加即为实交周度。5.求定朔(8 ,页5 6 1、5 6 3、5 8 6)以太阳实经度查“加减时表”得加减时刻(加减时刻数据本身含正负号),加于实朔即为定朔6.求宿度(8 1 页1 2 4 7 1 2 4 9)(1)以所求年份与崇祯元年相距之年数乘以宿铃每年岁差5 1 (所求年分在崇祯元年之后为正,之前为负),加于依黄道“十二宫距宿铃”得到当年十二宫宿铃的黄经。取当

23、年小于且与太阳实经度最近的宿铃,减于太阳实经度即得日黄道宿度。(2)以当年的十二宫宿铃黄经和太阳实经度分别查“正球升度表”得各自赤经。再以求太阳黄道宿度之法得到日赤道宿度。(3)月黄道、赤道宿度同于太阳7.求近视会(8 ,页5 7 4、6 0 6 6 1 1;9 ,页3 5 5 0)步骤7 一9 所用材料参见此处所引文献。交食表介绍了两种纠正方法:以交角余角顺逆相反查表,或先求交角再查表,实际使用的是后一种。2172期纪辰等:崇祯历书日食算法研究东西差(12)时差1小时。月实行(13)近视会时刻=定朔时差,食在限东为减,食在限西为加8.密求视会(1)总时密=总时时差,符号同步骤7(13)。(2

24、)以总时密代替总时重复步骤7(2)至7(10)得到东西差密。注意,步骤7(7)中的定朔换为近视会时刻。(3)太阴视行=东西差X2-东西差密。东西差时差(4)真时差=太阴视行(5)视会时刻=定朔真时差,食在限东为减,食在限西为加。(食在限之东西由步骤8(2)中所得太阳距黄平限判断)9.考真时差(1)总时真=总时真时差,符号同步骤8(5)。(2)以总时真代替总时重复步骤7(2)至7(10)得到东西差真,同时得到南北差。注意,步骤7(7)中的定朔换为视会时刻。月实行真时差(3)日月实距=1小时O(东西差真一日月实距)真时差(4)真差=东西差O(5)食甚时刻=视会时刻土真差,食在限东为减,食在限西为加

25、。【食在限之东西由步骤9(2)中所得太阳距黄平限判断)10.求食分(8 ,页56 556 6、6 12,12 5512 5;9 ,页50 53)(1)加减时分=食甚时刻-定朔。(2)以加减时分查“四行时表得与之对应的交周度(符号同加减时分),加于实交周度得食甚时实交周度。(3)以食甚时实交周度查“太阴距度表”得太阴实距分。(4)视距度=1太阴实距分土南北差1,太阴在黄道北恒减,太阴在黄道南恒加(5)以太阳次引数+18 0、太阴次引数查“视半径表”得太阳视半径与太阴视半径(6)两半径并减距度余数=太阳视半径+太阴视半径-视距度-1。(7)进一步判断:若两半径并减距度余数大于零,则日食发生,继续后

26、面的步骤;若不大于零,则日食不发生,则停止计算。崇祯历书其他天体(即月、五星)的引数都是平远点角,但在日表中,太阳引数表示的其实是太阳平近点角。或许传教士在是为了兼顾中国传统历法以冬至为起点的习惯,才把太阳引数设定为平近点角。值得注意的是,交食表其他算表中的太阳引数也是平近点角,也就是说,传教士唯独在“视半径表”中忘记了他们对太阳引数的不同设定,而其原因目前尚不可知。根据计算太阳视半径以及地影差数的几何模型,只有用太阳平远点角去查“视半径表”才符合计算原理,而非平近点角。所以,在查“视半径表”时,太阳引数应先加180转换为太阳平远点角。71叶史中218心杂国技科44卷(8)以两半径并减距度余数

27、和太阳全径查“食分表”,即得食分。或可根据公式求两半径并减距度余数得:食分=x10分。2x太阴视半径11.求初亏时刻(8 ,页6 10 6 11;9 ,页53 56)(1)总时初号=总时+(食甚时刻-定朔)-1小时。(2)以总时初号代替总时重复步骤7(2)至7(10)得到东西差初号。注意,步骤7(7)中的定朔换做食甚时刻-1小时。(3)以日月次引数与视距度查“日食月行表”得日食月行分(4)若步骤9 及11中食均在限东,则月视行初号=月实行+(日月实距-东西差初号);若步骤9 及11中食均在限西,则月视行初号=月实行+(东西差初号日月实距);若步骤9 中食在限西,步骤11中食在限东,则月视行初号

28、=月实行-(日月实距+东西差初号)。日食月行分(5距时初号=x1小时。月视行厂初亏(6)初亏时刻=食甚时刻-距时寸初号。12.求复圆时刻(8 ,页6 10 6 11;9 ,页56 58)(1)芯时复圆一定朔)+1小时。(2)以总时复圆代替总时重复步骤7(2)至7(10)得到东西差复圆。注意,步骤7(7)中的定朔换做食甚时刻+1小时。(3)若步骤9 及12 中食均在限东,则月视行复圆=月实行+(东西差复圆一日月实距);若步骤9 及12 中食均在限西,则月视行复圆=月实行+(日月实距东西差复圆);若步骤9 中食在限东,步骤12 中食在限西,则月视行复圆=月实行-(日月实距+东西差复圆)。日食月行分

29、(4)距时复圆=二x1小时。月视行复圆(4)距时复圆=1小时。月视行厂复圆(5)复圆时刻=食甚时刻+距时复圆。13.绘图(8 ,页6 12 6 13)(1)以步骤10(4)食甚之太阴视距度反查“太阴距度表 食甚视交周度。(2)初亏交周度=食甚视交周度-日食月行分;复圆交周度=食甚视交周度+日食月行分。(3)以初亏、复圆交周度查“太阴距度表”得初亏之太阴视距度和复圆之太阴视距度。(4)任作一圈,中分一十字线。直线指南北,横线为黄道线。以太阳视半径和太阴视半径并为所画圈之半径。取两径相并之数为度次,以太阳视半径作一内圈。再以初亏、食甚、复圆之太阴视距度于黄道南或北作一线为白道线。又取太阴视半径,于

30、白道线切内圈之西作一圈为初亏,于白道南北之中作一圈为食甚,于白道切内圈之东作一圈为复圆。(北上,南下,西右,东左)14.求其他省直日食(8,页56 156 2)由“食分表”直接查得的食分为六十进制,需要转换为一百进制才能得到最终的食分结果。太阳次引数在5、6、7 宫属最高,2、3、4、8、9、10 宫属中距,11、0、1宫属最库。2192期纪辰等:崇祯历书日食算法研究(1)其他省直在北京东者,经度每增加1加4分钟于步骤5中定朔;在北京西者每增加1则减4分钟,即得各省直定朔。(2)以各省直定朔及其北极出地重复步骤7 至13,得各省直初亏、食甚、复圆时刻及食分。3日食算法合理性的验证本文将从两个方

31、面验证第2 章所复原的确为崇祯历书日食算法。首先,利用相关文献一算七政交食凌犯法对第2 章中的日食推算步骤进行验证。算七政交食凌犯法由钦天监于康熙三十三年(16 9 4)前后编纂而成10】,该细草给出了月食和日食的推算步骤,虽然都缺少了绘图和求其他省直月食或日食,但不影响推算结果1。通过对比,本文发现其月食推算步骤与笔者由崇祯历书梳理所得的步骤相同,而其日食推算步骤也与笔者所复原的一致。由此可见,本文所复原的应为崇祯历书日食算法步骤,且至少到康熙三十三年,钦天监应该仍在使用崇祯历书的交食算法。之后,本文根据第2 章中复原的日食算法步骤和交食表推算了明末清初的日食(下文称“计算值”),并与文献中

32、所载的预报记录进行比较。由于不确定钦天监使用崇祯历书日食算法的具体年限,本文将比较的时间下限定于康熙三十三年。通过梳理治历缘起、汤若望奏疏、钦天监档案以及传教士的记录(8 ,页5157;12 16 ),笔者共搜集到13 次日食预报记录在上述时间段内(表1)。需要说明的是,虽然前人大多将清朝文献通考象纬考中的交食数据看作预报记录4,17】,但它们实际上并非由崇祯历书算法推得18 ,因此本文不予采用。此外,限于篇幅,这里仅比较所有时刻的基准北京食甚。而日食食分算法由于在改历初期有过调整,因此将在第3 章中详细讨论。表1崇祯年间及清初北京日食时刻的西法预报值与计算值食甚误差(计算值一预报值计算值序号

33、日期预报值/分钟)食分(分)食甚食甚修正前修正后1崇祯二年五月初一(16 2 9.0 6.2 1)2.2011:3611:35:11-0.82-0.822崇祯四年十月初一(16 3 1.10.2 5)2.1213:1913:06:37-12.38-3.133崇祯七年三月初一(16 3 4.0 3.2 9)6.0209:5409:54:270.450.454崇祯九年七月初一(16 3 6.0 8.0 1)6.9609:4509:46:191.321.325崇祯十年正月初一(16 3 7.0 1.2 6)1.1013:2713:17:3 5-9.425.28清朝文献通考中日食数据与笔者目前所见档案

34、中的原始记录不符,例如前者所载康熙八年四月初一日食食分为五分二十九秒(5.2 9 分),初亏未初初刻八分(13:0 8),食甚未正一刻十二分(14:2 7),复圆申初二刻十三分(15:43);而传教士的原始预报记录为食分五分三十八秒(5.3 8 分),初亏未初一刻弱(13:12),食甚未正二刻(14:3 0),复圆申初三刻(15:45)。史中220志杂国44卷技科续表1食甚误差(计算值-预报值计算值序号日期预报值/分钟)食分(分)食甚食甚修正前修正后6崇祯十年十二月初一(16 3 8.0 1.15)6.9113:4013:30:30-9.502.537崇祯十四年十月初一(16 41.11.0

35、3)8.5514:2214:17;08-4.87-4.878崇祯十六年二月初一(16 43.0 3.2 0)5.3009:0208:56:20-5.67-5.679顺治元年八月初一(16 44.0 9.0 1)2.83012:1712:23:036.056.0510顺治十一年七月初一(16 54.0 8.12)1.33*19:00:5411顺治十四年五月初一(16 57.0 6.12)6.6605:0505:05:030.050.0512康熙三年十二月初一(16 6 5.0 1.16)8.92*16:30:4813康熙八年四月初一(16 6 9.0 4.3 0)5.3814:3014:29:0

36、7-0.88-0.88注:*,由于档案缺字,顺治十一年(16 54)初一和康熙三年十二月初一日食的食甚预报数据不详。从食甚的比较结果(图3 a)来看,计算值与预报值之间存在一定偏差,其中几次偏差较大。通过研究,本文发现偏差过大的原因主要是预报记录本身存在问题。其中,关于崇祯四年十月初一日食(第2 次),治历缘起的食甚预报值为“未初二刻内一十三分三十三秒”(13:19)(8 ,页3 3),交食历指卷六也两次提及此次食甚预报,分别为“未初一刻内”(8,页6 0 9)和“午正三刻十四分十四秒”(12:59:14)(8,页6 11)。可以看出,这三处记录互不相同。而学历小辩提到历局所推此次日食食甚为“

37、未初一刻内五十一分(13:0 9:45)(8,页16 0),与交食历指中的“未初一刻内”相近。且与计算值相比,“未初一刻内五十一分”的偏差仅为-3.13 分钟,小于治历缘起的-12.3 8 分钟和交食历指另一数据的7.3 8 分钟。由此来看,治历缘起中此次日食食甚预报记录很可能有误,而正确预报值应为“未初一刻内五十一分”101055055-10-10123456789111312 34567891113序号序号(a)(b)图3修正前后食甚计算值与预报记录的比较注:(a)为修正前,(b)为修正后。汤若望奏疏中的记录为三分弱,这里按照时刻的强弱式转换规则将其换算为2.8 3 分。2212期纪辰等:

38、崇祯历书日食算法研究崇祯十年十二月初一日食(第6 次)则是推算过程中漏算了加减时刻(日食算法步骤5)。治历缘起此次日食预报中太阳(或太阴)黄经,即实朔时的日月位置为2 52 0(崇祯历书交食部分从冬至点起算)。而根据日食算法步骤和交食表可得太阳(或太阴)黄经为2 519 5,表明本文所算实朔与历局当时推算过程中的实朔相差应在两分钟左右。然而,食甚计算值与预报值最后有-9.50 分钟之差,可以推知此次预报的问题应出现在实朔到食甚的推算过程中。通过考察,本文发现交食经的日食算例(崇祯九年七月初一)就是在这一过程中出现了失误,即忘记将加减时刻加于实朔,导致其算例的食甚时刻与预报记录不符;而月食预报记

39、录也出现了至少三次漏算加减时刻的错误。可见,漏算加减时刻是历局在推算交食时常犯的一个错误。由此推想,此次日食食甚预报存在问题很有可能也是漏算了加减时刻所致。为了验证这一推想,同时考虑到日食算法中实朔到食甚之间的步骤相当复杂,很难像月食一般直接修正预报值,本文跳过日食算法步骤5对计算值进行修正,然后再与预报值进行对比。结果表明,修正后的计算值与预报值仅差2.53 分钟,证明本文的推想正确。崇祯十年正月初一(第5次)的情况与之类似,这里不再赘述。对上述几次过大偏差修正后,计算值与预报值的比较(图3 b),大部分偏差在3 分钟以内,这主要是由于交食时刻,尤其是崇祯十年后多以“强弱式”表示,因此在转换

40、为现代时间时不可避免存在约2.5分钟以内的偏差4。除此以外,仍有几次偏差超过了合理范围,但最大也在5分钟左右。虽然根据现有材料无法对其进行解释,但传教士在古今交食考中曾亲口承认,之所以崇祯七年三月初一日食食分预报值错误,就是因为他们在推算过程中出现了失误。此外,交食历指的算例中也频繁出现错误,例如,卷四“交食图义第四”一章中以崇祯五年三月十六为例计算初亏至食甚距弧时出现了计算错误,将距弧46 45 错算成了40 16 ;再比如,上文所提交食历指卷六出现所载两次崇祯四年十月初一日食食甚预报值不一致的问题。因此,不能排除历局在推算日食的过程中还出现过失误,导致仍有个别偏差超过了合理范围。最后,根据

41、计算,修正后的平均偏差为0.03分钟,平均绝对偏差为2.8 2 分钟,均在合理的范围内。可见,不论是从文献还是推算结果对比的角度来看,本文所复原的应该就是崇祯历书中用于实际推算的日食算法。4日食食分算法的变化关于交食的推算,除时刻之外,食分同样重要。对此,传教士在崇祯历书交食历指中明确指出:“步交食之术有二:一日加时早晚,一日食分深浅。”(8,页56 3 并且给出了日食食分算法的公式形式:由于太阴一小时之实行一般在3 0 左右,因此月亮黄经变化3 0 时,对应的时间约为1分钟。根据笔者研究,至少三次月食预报漏算了加减时刻,分别为崇祯十四年三月十六、顺治十二年十二月十六和康熙二十五年闽四月十六。

42、传教士所给太阴距度为44 2 9 ,太阴视半径与实地影半径之和为14 3 2 ,故初亏至食甚距弧=3V14322-44292=4645。但传教士的计算结果为40 16 ,二者相差52 9 ,由此会造成10 余分钟的误差。x10分口今八222心史中杂国44卷科技太阳视半径+太阴视半径-太阴视距离日良良二2x太阳视半径即两半径并减距度余数=太阳视半径+太阴视半径-太阴视距度。然而,交食经及更晚一些的算七政交食凌犯法却指出两半径并减距度余数=太阳视半径+(太阴视半径-1)-太阴视距度(9 ,页53;11,页6 7)。巧合的是,由于崇祯七年三月初一日食分预报与观测不合,传教士在后来的古今交食考中给出了

43、解释和修正后的食分,而且注明在推算日食食分时要“先依法内减月半径一分”(8,页6 3 9),即与张案臣交食经和算七政交食凌犯法所述一致。由此可见,传教士在编写完交食历指之后极有可能修改过日食食分算法。为此,本文分别根据上述两个算法推算了表1中的日食食分,然后与预报记录进行对比(图4)。需要说明的是,第三次食分的预报记录是传教士后来在古今交食考中给出的修正值。此外,根据笔者的研究,在崇祯七年约六月之前,日月视半径从第谷(TychoBrahe,15461601)新编天文学(Astronomiae Instauratae Progymnasmata,16 0 2)中的“视半径表 查得,之后再使用交食

44、表的“视半径表”19 。整体来看,第5次(崇祯十年正月初一)之前,太阴视半径未减1时的计算值更接近原始记录,此后太阴视半径减1 时的计算值才与原始记录的偏差更小。而从交食历指七卷进呈的时间来看:徐光启在崇祯五年四月初四日进呈了交食历指四卷,李天经在崇祯七年七月十九日进呈了交食历指三卷(8 ,页3 8、55)。也就是说,交食历指的内容在崇祯七年七月十九日之前就已经基本完成。所以,至少在交食历指基本编写完成之前,传教士在实际推算日食食分时所用的确实是他们在交食历指中给出的算法。之后,至迟到崇祯十年后,他们对原本的算法进行了些许改动,将其确定为后来张案臣在交食经中给出的算法1.61.4未减11.2减

45、110.80.60.40.200.2-0.4-0.6-0.8-11234567891011121314序号图4食分计算值与预报记录的比较需要注意的是,传教士所用的是第谷表中望时太阴视半径。虽然交食经的日食算例为崇祯九年七月初一日,早于图4中的崇祯十年正月初一。但因为其算例中出现了明显的计算错误,导致其食分(6.2 5分)比原始记录(6.9 6 分)少了0.7 1分,比日食食分公式修改造成食分减少(0.3 2 0.3 3 分)的两倍还要多。为了谨慎起见,本文仍以崇祯十年为算法修改的时间下限。之所以第3次(崇祯七年三月初一)在减一分时的预报值更接近计算值,应该是因为图4中第3 次的预报值是古今交食

46、考中的修正数据,其时间实际上要晚于崇祯七年三月初一。223纪辰等:崇祯历书日食算法研究2期但传教士为何要对先将太阴视半径减1?对于这个问题,传教士在交食历指中没作出任何解释,此后也未进行过任何说明。交食经虽然给出了如下解释:“顺天府近北等处濛气重,能令日食时日光开大,月视径反曲而小。故查视径表,月半径先减一分用总能合天。”(9 ,页53)但实际上只是说明了修改的原因,并没有给出减一分的理由。或许这一问题的答案要从算法本身的确定过程中寻找。在编算交食表的“视半径表”时,传教士实际上参考了第谷和隆格蒙塔努斯(ChristenSorensenLongomontanus,156 2 一1647)的“视

47、半径表”,后两者虽然都指出朔时太阴视半径会变小,但确定方法却略有不同。第谷直接在“视半径表”中给出朔、望时的太阴视半径,但其朔时太阴视半径不能简单根据望时推得,需要根据观测确定。隆格蒙塔努斯虽在其“视半径表”中只给出望时太阴视半径,但紧接着根据观测经验给出了当北极出地从2 0 增加至7 4时,朔时太阴视半径相对于望时应减去的常数,其中,当北极出地为40(与北京很接近)时,朔时太阴视半径减小3 0 2 0 。此外,他还专门对其原因进行了解释,即蒙气导致日光开大,从而使月亮的视半径变小。由此可见,传教士一开始就清楚朔时太阴视半径会小于望时。但由于与第谷和隆格蒙塔努斯所处的环境不同,传教士没有直接采

48、用他们的参数,而是明确指出“欲定本地之日食分,必先定本地之蒙气差,以限本地之视径。又宜累验本地之食分、加时,然后酌量消息,蒙差、视径可得而定也”(8 ,页56 9)。相较而言,隆格蒙塔努斯的方法只需在望时太阴视半径的基础上减去一个常数,不仅无需进行大量的日食观测,可以大大缩短编制算表的时间,而且还能简化“视半径表”。换言之,传教士只需给出相当于第谷的望时太阴视半径,朔时太阴视半径在此基础上减去一常数便可得到。相应地,日食食分算法就会有所变化,而该常数则通过观测来确定。根据治历缘起,在崇祯改历正式开始后的第一次日食观测中,即崇祯四年十月初一日,传教士便发现“食甚分数比原推亦少半分以下”(8 】,

49、页3 3 一3 4)。之后,通过对日食的继续观测,他们最终确定朔时太阴视半径应减小1。由此可见,传教士对已有日食食分算法进行修改,其实是他们在当时改历时间较为紧迫的情况下所采取的一种应对方式。5日食算法精度分析根据前文研究,治历缘起及钦天监档案中的部分预报记录有误,而清朝文献通考中的交食数据又并非由崇祯历书交食算法推得。可见,前人利用预报记录分析崇祯历书日食算法精度存在问题。因此本文直接从日食算法人手,根据日食算法步骤和交食表,利用计算机编程模拟的方法推算崇祯二年后一百年内的北京日食(总计41次),并与由于交食表中太阳视半径的范围是15 153 0 ,根据日食食分算法,相应的食分会减少0.3

50、2 0.3 3 分,基本符合日食食分减少半分以下的要求崇祯历书交食算法可能沿用至康熙末年。224中史国志心杂科 技44卷现代理论值进行比较。如此不仅可以规避上述问题,而且还能得到崇祯历书日食算法的长期精度水平。如图5所示,与现代理论值相比,食分的计算值偏小约0.17 分。如此来看,传教士所确定的太阴视半径减小值有些偏大,若改为0.5,即隆格蒙塔努斯根据经验给出的减小值更为合适。整体来看,日食食分精度在一百年间变化不大,其平均误差为-0.17 54分,平均绝对误差为0.43 49 分,误差最大不超过1分半。相比之下,崇祯历书月食食分的整体精度反而不及日食,前者在一百年内的平均误差为0.549 4

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 论文指导/设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服