节气交节时间的计算

由 eureka 提交于 星期一, 2005-03-28 14:38

考察时序所用的历法资料和天象数据:《近世中西史日对照表》

在我国漫长的历史上,各个历史时期所使用的历法并不一致。即使明清以来,虽然都用阴历,但明代用的是“大统历”,清朝入关后,从顺治二年(1645年)起,弃明朝的“大统历”而改用“时宪历”,颁行《时宪万年书》,“时宪历”一直施行到清末。因此,无论是《红楼梦》前八十回的作者,还是后四十回的作者,在创作时一定是以《时宪万年书》为小说时序的基础。故考证小说中具体事件所隐藏的真实的年、月、日、时乃至节气,《时宪万年书》可以起到至关重要的作用。

郑鹤声先生编撰的《近世中西史日对照表》上起1516年(明代中叶正德十一年),下迄1941年(民国三十年),将阴历的年月日与阳历的年月日一一对照排列,其中“节气纪载,自清世祖顺治二年起,全以《万年书》为依据”[4];书的中缝,从上到下,排有当年的干支、公元和朝代年号纪元。因此《近世中西史日对照表》所载的小说作者所处时代的干支历日和节气等资料数据,与作者创作时所依据的历法资料和天象数据是完全一致的。

《近世中西史日对照表》虽然记载了1516年至1941年每一个节气的交节日期,但没有记载交节的时刻。要了解具体节气的交节时刻,最直接的办法当然是去查阅各朝代官方制订的天象档案史料。一般读者和研究者无法接触到这些档案史料,因此只能依赖于其他精确的天象推算工具和方法。

以美国太空总署喷气推进实验室星历表为基础的节气推算电脑程序

二十四节气标记的是太阳相对于地球的视运动位置

中国古代的历法为阴阳合历。中国古代的阴历是根据月相周期定月的长短,即一朔望月的长度,年的长度随月数而定,而月数是人为规定的。阴历又称“夏历”、“旧历”和“农历”。中国古代的阳历就是二十四节气。二十四节气是中国人的独特创造,它根据太阳在黄道上的位置(黄经)将全年分为24个段落。由于二十四节气是根据太阳直射地球的某些纬度而确定的,所以它属于阳历的范畴,每个节气与阳历的日期基本对应。例如,春分、秋分,黄道和赤道平面相交,此时黄经分别为0度、180度,太阳直射赤道,昼夜相等。夏至,太阳直射北纬23.5度,黄经90度,北半球白昼最长。冬至,太阳直射南纬23.5度,黄经270度,北半球白昼最短。春分和秋分(二分)正处春秋两季中间,夏至和冬至(二至)正处夏冬两季中间。这样,一年就可用春分、夏至、秋分、冬至划为四段。如将每段再分成6小段,太阳在黄道上移动15度,每小段约15天左右,全年就可分为24小段,即24个节气,每15天为一个“节气”。

星历表是指标记一段时期内一些天体在特定时间的位置或坐标的表册。由于二十四节气是标记太阳相对于地球的视运动位置,因此标记太阳和地球相对位置的星历表就可以当作查阅和推算节气及其交节时刻的基础数据。星历表记录的时段越长,人们就能知道越为久远年代的节气时刻。

喷气推进实验室研制的DE系列星历表

美国太空总署(NASA)喷气推进实验室(Jet Propulsion Laboratory)研制的DE系列星历表是国际天文学界使用最多的星历表。

在“夏商周断代工程”中,上海交通大学的江晓原教授带领两名博士生钮卫星和卢仙文,没有承袭以往学者文献考证的老路,而是独辟蹊径,根据历史上关于武王伐纣的天象记载,运用电脑和现代天文学星历表进行推算,终于成功地考订出3000多年前周武王讨伐商纣的日程表。江教授所依据的星历表,正是喷气推进实验室研制的DE系列星历表。《以天文学方法重现武王伐纣之准确年代及日程表》一文写道:

著名的喷气推进实验室(JPL)之斯坦迪士(Standnish)等人,长期致力于行星和月球历表的研究工作,他们用数值积分方法,结合最新的理论模型和观测结果,研制出了与各个时期的科学水平相适应的系列星历表,并无偿提供给全世界学者使用(目前)。八十年代他们制作了长时间跨度的行星历表DE102 ,在国际上得到广泛使用。

最近,斯坦迪士等人又研制了时间跨度更长的行星历表 DE404(公元前3000年~公元3000年),它不但吸收了雷达、射电、VLBI(甚长基线干涉)、宇宙飞船、激光测月等等高新技术所获得的最新观测数据,而且在力学模型上有所改进,保证了积分初始值的精确性和理论的先进性。并且在积分过程中,不但与历史上的观测记录进行了比较,而且同时对比了纯粹用分析方法所的结果。这样就进一步保证了星历表的稳定性和可靠性。

经我们与斯坦迪士本人联系,他将全套DE404软件无偿提供给我们使用。这也可以看作国际天文学界对我们研究工作的支持。

另一个比较重要的软件是Skymap3.2,这是一个非常先进的天象演示软件,能够在给定观测时间、观测地点之经纬度后,立即演示出此时此地的实际星空,包括恒星、太阳、月亮、各行星、彗星乃至河外星云等几乎所有天体的精确位置。我们用DE404检验了该软件的精度,发现在前推3000余年时,其误差仍仅在角秒量级,这对本专题的研究来说已经绰绰有余。[5]

从江教授的这篇论文可知,喷气推进实验室研制的DE系列星历表具有稳定、可靠和高精度的特点,并已经在“夏商周断代工程”中得到了成功的运用,取得了很大的成果。

以DE系列星历表为基础开发的精确节气计算程序

台湾的一位电脑程序员(姓名不详)以喷气推进实验室研制的DE系列星历表为基础,开发了一套可以精确计算公元前5400年到公元5400年(前后共10800年)节气时刻的电脑程序,目前放在互联网上供人免费使用[6]。

该程序员关于这套程序的说明可以在其创制的网站上全部搜索到[7]。2001年2月20日,该程序员(站长)在其网站上发表声明,称“已经可以利用 JPL 喷射系统实验室的资料库准确计算九大行星以及许许多多小行星的位置了,计算范围至少可达五千年,精确度可达‘千分之一秒’”。他还称,“可以利用此程式判断节气,绝对比坊间的万年历精确”。

2002年2月22日,站长对星历表发表评论称:“事实上,最精准,最多人使用的,是美国太空总署(NASA)喷射推进实验室所观测的称为JPL星历(JPL Ephemeris)。我比较过,有把握把误差都压在秒以下。”

在使用该程序检索节气时,必须注意到一点,即该程序输出的节气时刻一律采用格林威治天文台时间,因此大陆中原地区和台湾的使用者还需要自行加上8小时,才能得出交节时刻的北京时间。此外,该网站还设有阴历和阳历日期转换的程序。

湖北荆门市一位名叫张涛的电脑程序员开发了一款“专业命理软件”《命理玄微》(可在互联网上搜索和下载),这款软件将复杂的八字命理演算变成了简单的电脑计算程序,同时还提供了从公元1年至公元2100年之间节气数据。后文将会用到该软件的命理演算功能,考察元妃及其原型人物的生辰八字。至于节气数据,笔者曾去信请教张涛先生其来源,张先生回信称其节气数据均来自上述的台湾网站[8],并特别告诉笔者:“节气日期的农历数据,则是通过公农历对照转换得来。请注意软件中列出的公历日期是格里历,在18世纪前,格里历与儒略历(当时的公历)是有区别的。”

以《星历表推算原理》一书为基础开发的节气计算程序

《星历表推算原理》(Fundamental Ephemeris Computations)[9]一书是一部为业余天文爱好者撰写的介绍计算天体位置的电脑程序原理及运算法则的著作。亚马逊网站(www.amazon.com)上有读者关于这部著作的评论。从这些评论可以看出,按照这部著作提供的运算法则编定的电脑程序可以“非常精确地”计算出天体位置,制定星历表,其结果堪与权威的天文历表相媲美。不过有评论指出,这部著作并没有给出任何一个公式或运算法则的算法证明,有些资料的来源也不甚明确。总体来说,读者对这部著作的评价甚高,认为其填补了天体位置计算领域的一个空缺。遗憾的是,这部著作似乎暂时没有中译本。

法国一家中文网站设有介绍中国文化的栏目,其中就有介绍中国农历和二十四节气的内容。该网站提供了在线计算节气及交节时刻的电脑程序[10],可以推算公元前20800年到公元26800年间任何一年的二十四节气交节的公、农历日期及时刻。

该网站还提供公元前20800年到公元26800年间任何一年公、农历日期的换算程序,该程序是根据《历法计算:千禧年版》(Calendrical Calculations: The Millennium Edition)[11]一书介绍的运算法则及计算机语言开发设计的。这部著作似乎也没有中译本。

《四千年气朔交食速算法》介绍的节气时刻推算方法

曾次亮先生编纂的《四千年气朔交食速算法》是专为研究历史、考古、治历者设计的检算公元前后四千年气朔交食的速算法[12],内容包括从阳历、回历的年月日检算星期或或纪日干支,阳历、回历、标准夏历间的互求法,二十四节气平定两方面的时刻,朔、望、两弦平定方面的时刻,一切月食可见与否的推定及其食分与各限时刻,一切日食各地可见与否的推定及其食分与食甚时刻。

曾先生在该书《前言》中写到,经过多次计算和对比,速算法的计算结果与其他各种计算在节气朔望方面的最大差别是:上考三千年前节气朔望,最大差30分钟;推求今日节气朔望,最大差10分钟[13]。

曾先生又指出,我国清以前用平气,自清初起用定气,因此用速算法检算标准历时应加注意[14]。也就是说,在推算清代的节气时,应该用《速算法》一书第四部分第五章介绍的“夏历定节气交节日时检算法”。

尽管曾先生的速算法采用了大量表格作为检算的基础,将复杂的天文推算变成了简单的四则运算,但其过程和步骤与电脑计算程序相比较,仍然显得相当繁琐和复杂,不便于进行大量节气数据的推算。因此本文在检算具体节气时,主要以前两种电脑计算程序为主,曾先生的速算法则作为验证重要节气数据的一个参考。

电脑计算程序推算结果与《近世中西史日对照表》的对比:交节日期

电脑计算程序推算古代节气的交节日期与时刻是否准确,可以用古代的天象记载来即时验证。首先以《近世中西史日对照表》所记载的节气日期为准,验证两种电脑计算程序推算的结果。验证步骤如下:

(1)列举《近世中西史日对照表》所记载的明代、清代和民国三个时期各任意两个年代中任意两个节气及交节日期(公历和农历两种日期);

(2)用两种电脑计算程序,输入(1)中列举的年代,检索(1)中所列节气的交节日期;

(3)对比三种结果。
按照以上步骤,取例和对比的结果列表如下:

《近世中西史日对照表》 台湾网站 法国网站
明武宗正德十二年丁丑(1517年) 3月21日14时9分 3月21日13时54分,
春分:阳历3月10日,阴历二月十八日[15] 阴历二月十九日 阴历二月十九日

明神宗万历四年丙子(1576年) 8 月23日15时5分 8月23日14时50分,
处暑:阳历8月13日,阴历七月十九日[16] 阴历七月十九日 阴历七月十九日

清世祖顺治十八年辛丑(1661年) 5 月21日2时29分 5月21日2时15分,
小满:阳历5月21日,阴历四月二十三日[17] 阴历四月二十三日 阴历四月二十三日

清德宗光绪五年己卯(1879年) 11月8日2时27分 11月8日2时12分,
立冬:阳历11月8日,阴历九月二十五日[18] 阴历九月二十五日 阴历九月二十五日

民国八年己未(1919年) 9 月9日1时27分 9月9日1时13分
白露:阳历9月9日,阴历闰七月十六日[19] 阴历闰七月十六日 阴历闰七月十六日

民国三十年辛巳(1941年) 6月22日3时33分 6月22日3时33分
夏至:阳历6月22日,阴历五月二十八日[20] 阴历五月二十八日 阴历五月二十八日

由上表可以看出,对于实行“大统历”的明代的节气,《近世中西史日对照表》所载的交节日期与两种电脑计算程序的推算结果并不一样,公历日期相差10日或11日,阴历日期相差1日;但两种电脑计算程序推算的节气交节日期完全一致,只有交节时刻相差数分钟或数十分钟。

对于实行“时宪历”的清代的节气,以及民国的节气,《近世中西史日对照表》所载的交节日期与两种电脑计算程序的推算结果完全一致,但两种电脑计算程序推算的交节时刻稍有差别,最大相差15分钟。本文读者可以运用以上三种工具反复验证笔者的对比结果,亦可自行取例,进行反复对比验证。

由于本文考察的小说的天象数据俱以《时宪万年书》为依据,因此凭借以上三种工具足以进行准确的推算和辨析。

电脑计算程序推算结果与南京紫金山天文台节气数据的对比:交节时刻

电脑计算程序推算节气交节时刻是否准确,直接影响到本文的论证,因此有必要详细说明。一个名为“命理玄微”的网站刊载了据称是“南京紫金山天文台颁发的”《100年(1901年至2000年)节气时刻表》[21]。该表所刊说明文字暂不知究竟出自“命理玄微”网站编辑之手,还是出自紫金山天文台。说明文字写道:

“节气时刻的计算是非常复杂的天文学课程,各国天文年历所载的数据亦非完全一致。我国天文年历和历法由南京紫金山天文台编订,由于计算方法的改进,新计算出的节气时刻可能与以前计算的结果有所差异,日期亦可能会相差一天。在这种情况下,为保证历书使用的连续性,通常都会保留以前的计算结果,尽管它不及新的计算准确。”

数据对比

本节文字将对比并讨论该表所载数据与两种电脑计算程序的推算结果。对比方法及步骤是:从表中任意选取两年的节气数据(本文选1901年和1978年),逐项与两种电脑计算程序的推算结果进行对比。数据列表如下:

  紫金山天文台 台湾网站 法国网站
  1901年节气数据
  立春2月4日20时46分 2月4日19时39分 2月4日19时25分
  惊蛰3月6日15时13分 3月6日14时10分 3月6日13时56分
  清明4月5日20时38分 4月5日19时44分 4月5日19时30分
  立夏5月6日14时36分 5月6日13时50分 5月6日13时36分
  芒种6月6日19时17分 6月6日18时36分 6月6日18时22分
  小暑7月8日5时46分 7月8日5时7分 7月8日4时53分
  立秋8月8日15时25分 8月8日14时46分 8月8日14时31分
  白露9月8日17时51分 9月8日17时10分 9月8日16时55分
  寒露10月9日8时49分 10月9日8时6分 10月9日7时52分
  立冬11月8日11时28分 11月8日10时34分 11月8日10时19分
  大雪12月8日3时42分 12月8日2时52分 12月8日2时38分

  1978年数据
  立春2月4日12时27分 2月4日12时26分 2月4日12时26分
  惊蛰3月6日6时38分 3月6日6时38分 3月6日6时37分
  清明4月5日11时39分 4 月5日11时39分 4月5日11时39分
  立夏5月6日5时9分 5月6日5时8分 5月6日5时8分
  芒种6月6日9时23分 6月6日9时23分 6月6日9时23分
  小暑7月7日19时37分 7 月7日11时36分 7月7日19时36分
  立秋8月8日5时18分 8 月8日5时17分 8月8日5时17分
  白露9月8日8时3分 9 月8日8时2分 9月8日8时2分
  寒露10月8日23时31分 10月8日23时30分 10月8日23时31分
  立冬11月8日2时34分 11月8日2时34分 11月8日2时34分
  大雪12月7日19时20分 12 月7日19时20分 12月7日19时19分

结论:本文论证将以台湾网站的推算为最终论据

  对比以上数据可知,两种电脑计算程序推算1901年节气的交节时刻,彼此差别不大,相差仅14或15分钟,但两种结果与紫金山天文台的数据则相差较大,差值达45分钟左右。笔者推测这种差别的原因有二:
  (1)天文台所载的近百年前的数据并不准确;
  (2)天文台所载的近百年前的数据可能属于不同的时区,即节气时刻与两种电脑计算程序的推算结果相差一个时区。如果将1901年的节气时刻全部提前1小时,可以发现三种数据的差值基本上在20分钟以内。
  对比1978年节气的交节时刻,可以发现三组数据几乎完全一致。这很可能是紫金山天文台近年来改进计算方法,提高了精度的结果。
  根据以上对比和讨论可知,两种电脑程序是值得信赖的,可以作为考证节气时刻的基本工具。对于以上的数据和讨论结果,本文读者可以自行任意取例,运用两种电脑程序进行反复对比验证。
  由于各种计算方法依据的原理、运算法则和天体数据未必一致,推算出来的结果也有差别。不过从实际的计算结果来看,彼此差别并不大。在本文的论证过程中,笔者将以本章介绍的精确节气计算程序(台湾网站)的推算结果作为最终论据。

摘自《破译红楼时间之谜》第二章 方法论——对考察时序所用小说版本和工具的说明