《应天历》求赤道日度算法的构造过程

张鹏雷 ,  李刚

内蒙古师范大学学报(自然科学版) ›› 2025, Vol. 54 ›› Issue (04) : 437 -440.

PDF (465KB)
内蒙古师范大学学报(自然科学版) ›› 2025, Vol. 54 ›› Issue (04) : 437 -440. DOI: 10.3969/j.issn.1001-8735.2025.04.015

《应天历》求赤道日度算法的构造过程

作者信息 +

Construction Process of Equatorial Degree Day Algorithms in Yingtian Calendar

Author information +
文章历史 +
PDF (475K)

摘要

中国古代历法中依岁差求冬至赤道日度的算法几乎是相同的,《应天历》则是一个例外,算法复杂且难于理解。通过重构《应天历》赤道日度算法的构造过程,解释为什么设计这一复杂算法。研究认为历法家在调取岁差常数后,为了解决岁差常数精度与常数表述形式的矛盾,引入过渡恒星年值,并通过添加修正项改造了传统的赤道日度算法。

Abstract

The algorithms for calculating the equatorial degree day in the winter solstice based on axial precession in ancient Chinese calendars are almost the same, but Yingtian Calendar (应天历, compiled by Wang Chune during Song Dynasty) is an exception, which has a complex algorithm and is difficult to understand. Previous scholars have explained the astronomical significance of the equatorial degree day algorithm in the Yingtian Calendar and calculated the true sidereal year constant for the calendar. This paper explains why this complex algorithm was designed by reconstructing the construction process of the equatorial degree day algorithm in the Yingtian Calendar. It believes that after adjusting the axial precession constant, calendarists introduced the transitional sidereal year value and modified the traditional equatorial degree day algorithm by adding correction terms to resolve the contradiction between the accuracy of the axial precession constant and the expression form of the constant.

关键词

《应天历》 / 赤道日度 / 岁差

Key words

Yingtian Calendar / equatorial degree day / axial precession

引用本文

引用格式 ▾
张鹏雷,李刚. 《应天历》求赤道日度算法的构造过程[J]. 内蒙古师范大学学报(自然科学版), 2025, 54(04): 437-440 DOI:10.3969/j.issn.1001-8735.2025.04.015

登录浏览全文

4963

注册一个新账户 忘记密码

赤道日度算法用来计算由岁差引起的冬至时刻太阳所在的赤道宿度变化,中国古代历法中几乎均采用如下公式或其等价公式计算1
tNnrmods
其中,已知回归年常数t,恒星年常数s,所求年n距上元的积年数Nn。从上元冬至点赤道宿度位置起算,r度外即为所求年冬至时刻太阳的赤道宿度。
《应天历》则是一个例外,其赤道日度算法23
tNn=Z1s1+r1,0r1s1
r=r1+Z1100 A
其中,Z1为总数,s1为过渡恒星年值,r1为中间量,A为元法。从上元冬至点虚宿4度起算,r度外即为所求。
由于《应天历》添加了一个修正项Z1/100 A,使得该算法变得复杂而不易理解。王应伟4的历法解读给出了算法公式(2)和(3),但未解释其算法意义。陈美东5认为此处需要校正,或是误解了修正项的意义。曲安京3在岁差常数的相关研究中,已经阐释了《应天历》算法的意义,并指出了s1不是真恒星年常数,并推算出真恒星年常数:
s=s1-1100 A
基于已有研究,本文希望通过重构《应天历》赤道日度算法的构造过程,解释为什么历法家设计这一复杂算法。
本文将以下面的逻辑展开论证:首先,论述《应天历》岁差常数的调取;其次,论述该岁差常数在应用到《应天历》历法编制中所遇到的问题;再次,论述《应天历》引入过渡恒星年常数,并对求赤道日度算法进行修改,得到修正项;最后,论述求赤道日度算法添加修正项后对计算复杂度的影响,确认算法添加修正项的根本原因。

1 岁差常数的调取

岁差是赤道日度算法的基础,构造赤道日度算法需要先调取岁差常数。根据历取岁差常数的选择算法3]129-130,《应天历》回归年常数t=5×730 635/10 002,积年Nn =4 825 558,取参考岁差值p0=0.011 8,岁差常数P=Ap的精确小数位数k=2。根据原文(3-32)式,算得m0=155;根据原文(3-31)式,算得|δ|<1.036 4。历法编制年冬至点约为斗宿8度,《应天历》赤道宿度同开元赤道数据,算得据虚宿5度的值β0=43,根据原文(3-33),算得θm0)=117.435 2,φm0)=0.757 1,则《应天历》可取岁差值见表1

其中,P值根据原文(3-30)式选取,β值根据原文(3-28)式算得,编制年冬至点选取斗8附近,上元冬至点取虚宿整度,得表1。考虑到冬至点在斗8附近和上元尽量起于虚4或7,可选定表1中的最优值为历取岁差常数:

P=118.19

2 岁差常数精度与常数表示形式的矛盾

根据选取岁差常数,得恒星年常数S=At+P=3 653 293.19。考虑《应天历》常数表示形式,入算恒星年常数应为S/5。例如

天总:七十三万六百五十八、秒六十四。[6]2455

即过渡恒星年值S1/5=730 658.64,其中S1=As1,又如回归年常数T/5=730 635,其中T=At。根据《应天历》常数表示形式的这一特征,真恒星年常数应改写为S/5=730 658.638,其中S=As

如果将真恒星年常数S/5作为天总的值,入算赤道日度算法,那么天总常数术文应为

天总:七十三万六百五十八、秒六十三,微八十。

显然,该天总值精度为4位小数,已经超过了2位小数,会给历法术文表述和数值计算带来麻烦,历法家并不希望采用这样的常数。

也就是说,《应天历》调取的岁差常数P=118.19,该值本应该直接用于历法编制,但是,从术文表述所允许的精度来说,该值的表述需要4位有效小数,这与《应天历》常数表示形式中的2位有效小数产生了矛盾,因此,该岁差常数无法直接用于历法编撰,这就需要进行相应的改变。

3 历法家对赤道日度算法的改造

为了解决上述矛盾,历法家根据常数表示形式的要求,就近选取过渡恒星年值S1/5=730 658.64,此时

S15=S5+0.002

真恒星年常数S/5满足公式(1)

T5Nn=ZS5+rA5,0rA5S5

其中,Z为计算中的整恒星年数,r为算法所求日度。对过渡恒星年常数S1/5也作公式(1)的计算:

T5Nn=Z1S15+r1A5,0r1A5S15

通过具体数值的计算可知Z=Z1,那么联合公式(6)—(8),可算得:

r=r1+Z1100 A

该式即为所求日度,此时,已将原本需要S参与的计算转化为S1参与的计算。

不难发现,所推出的公式(8)和(9)就是《应天历》赤道日度算法公式(2)和(3)。也就是说,根据传统的赤道日度算法,以过渡恒星年常数S1/5替代真恒星年常数S/5,就需要在第一步计算所得r1后加入修正项Z1/100 A,从而构造出了《应天历》赤道日度算法:

求赤道日度:以天总除元积,为总数。不尽,半而进位,又以一百收总数从之,以元法收为

度,不满为分秒,命起赤道虚宿四度分。[6]2464

这说明,《应天历》在此处引入了过渡恒星年常数代替真恒星年常数,随着这一改变,同时需要对求赤道日度算法进行改动,则引入修正项Z1/100A。至此,可以揭示出《应天历》求赤道日度算法与传统算法不同的原因。

4 算法改造前后对计算的影响

《应天历》相关常数积年Nn =4 825 558,回归年T/5=730 653,恒星年S/5=730 658.638,过渡恒星年S1/5=730 658.64。以历法编制年为例,分别给出算法改造前后的计算过程。

如果采用传统算法公式(1)计算:

730 635×4 825 558646 866.162mod730 658.638

算得r=5×646 866.162/10 002≈323.368 4,以虚宿4度起算,算得所求年冬至在斗宿8.1度。

如果采用《应天历》改造后的算法公式(2)和(3)计算:

730 635×4 825 558=730 658.64×4 825 401+637 215.36

算得r=5×637 215.36/10 002+4 825 401/(100×10 002)≈318.544 0+4.824 4=323.368 4,同样得到斗宿8.1度。

比较两算法可知,在计算不同年的值时,后者算法附加项变化不大,可采用4.82计算,并且入算值730 658.64位数较前者730 658.638短,总体上改造后算法计算较为简便。

这里需要指出的是,《应天历》赤道日度算法改造后虽然使得计算更为简便,但是其改造目的并不是得到更简便的算法。因为该算法还可以继续改造使得计算更为简便,例如取S2/5=730 658.7,对应修正项改为31Z2/100 A。其实,冬至赤道日度变化因岁差引发,《应天历》岁差值相当于84.63年变化一度,在已算得历法编制年冬至赤道日度的情况下,可利用该岁差值更为便利地计算附近年的冬至赤道日度。

可见,赤道日度算法的改造可以使计算得到一定的简化,但是设计这一复杂算法的原因仍是为了解决前文所述的常数精度与历法术文表述之间的矛盾。

5 结论

《应天历》求赤道日度算法与传统算法不同,添加了一个修正项Z1/100A,使得该算法变得复杂而不易理解。本文通过复原《应天历》赤道日度算法的构造过程,解释历法家设计这一修正项的原因。

历法家《应天历》赤道日度算法的构造过程如下:

第一步,历法家调取赤道日度算法基础常数岁差值P=118.19。

第二步,历法家会面临所调取的岁差常数的精度与历法常数表示形式之间存在矛盾这一事实。历法编制中的常数为2位小数,而调取的岁差常数有4位小数,因此,调取所得岁差常数无法直接用于历法编撰。

第三步,就近选取过渡恒星年值S1/5=730 658.64入算,并对传统算法添加修正项Z1/100 A,最终给出了历载的赤道日度算法。

对赤道日度算法的重构工作,可以直接推导出求赤道日度算法中的修正项。这样,不仅给出了算法修正项的来源,也解释了历法家构造这一添加修正项的复杂算法的原因。

构造这一算法的根本原因在于:在保证岁差常数的精度和日度算法原理正确性的情况下,历法家会考虑满足历法常数表示形式的统一性,从而选择改变传统日度算法的形式。从现代角度来看,这是一个“舍近求远”的选择,但是在古代历法家看来,历法常数的表示形式是历法编制中需考虑的重要因素。

《应天历》赤道日度算法中的这一特殊修正项与“总数”Z1有关,通过总数修正项算法的设计,将历取常数转变为历载常数应用到历法编撰中,本研究将这一特殊的算法称为总数算法。这种将总数参与算法设计的情况在《应天历》中多次出现,可视为一种处理这类常数变换问题的一般性方法,其背后蕴含着一种解决数值问题的数学思想,值得深入探讨其算法思想的来源。但限于其他的算法相对独立,并涉及较为复杂的相关历取常数复原和历载常数校勘,本课题组将另行撰文讨论。

参考文献

[1]

曲安京.中国数理天文学[M].北京:科学出版社,2008:217.

[2]

曲安京,纪志刚,王荣彬.中国古代数理天文学探析[M].西安:西北大学出版社,1994:128.

[3]

曲安京.中国历法与数学[M].北京:科学出版社,2005:129-130,150.

[4]

王应伟.中国古历通解[M].沈阳:辽宁教育出版社,1998:524.

[5]

陈美东.古历新探[M].沈阳:辽宁教育出版社,1995:88-99.

[6]

中华书局.历代天文律历等志汇编:八[M].北京:中华书局,1976:2455-2464.

基金资助

国家社会科学基金冷门绝学研究专项学术团队资助项目“中国古代历法中的‘步五星术’研究”(20VJXT005)

AI Summary AI Mindmap
PDF (465KB)

96

访问

0

被引

详细

导航
相关文章

AI思维导图

/