古代“校准历法”其实分两档:一档是调常数,在原有框架里把回归年、朔望月的长度修一修;另一档是改历,推翻重做、另立历元。主要原因是:

一是基本数据取不准,误差会累积。回归年和朔望月的长度只能靠长期观测去估,多算或少算几十秒,当时看不出来。可一年差几十秒,三百年就差出一两天——朔日算错,初一就错;闰月放错,月份和季节就脱节。这是最日常、也最要命的理由。

日昝
打开网易新闻 查看精彩图片
日昝

二是岁差让冬至点慢慢挪位置。节气是按太阳相对春分点的位置定的,古人测定它却靠恒星,看冬至黄昏哪颗星在中天。春分点每年西退约五十角秒,七十多年偏一度。于是历书上写的“某月昏中某星”,过几百年就跟实际天象对不上,《尧典》的“日短星昴”到汉代已经不准了。东晋虞喜说“天自为天,岁自为岁”,祖冲之把它正式写进《大明历》。岁差是慢刀子,它不催你马上改,但保证任何一部历法都有保质期。

三是月亮比太阳难算得多。月球近地点在进动,白道交点在退行,大约十八年一圈,运动还有长期加速。这些周期短、幅度大,对日月食预报的杀伤力远大于岁差。而交食是唯一能当众验证的项目,皇帝又最忌讳验出来是错的,所以历代修历的头号硬指标其实是交食,不是节气。关于交食,我再补充一下:交食就是日食和月食的合称。“交”字是关键:月亮绕地球走的路(白道)和太阳在天上走的路(黄道)不在一个平面上,斜着交叉,有两个交点。只有太阳和月亮都跑到交点附近,又正好赶上朔或望,三者才真能排成一条线,发生食。不在交点附近,朔只是朔,望只是望,天上什么事都没有。所以古人管这叫“交食”,也叫“日月交会而食”。它之所以成为历代修历的头号硬指标,是因为它是唯一一件能当众验算的天象

朔望月与日月交食
打开网易新闻 查看精彩图片
朔望月与日月交食

四是仪器和方法进步了。圭表测影更精、浑仪改进、算法从等间距内插发展到招差法,同样的天象新工具算得更准,旧历自然显得落后。元代郭守敬修《授时历》前搞了几年全国实测,就是这一类。

五是政治需要。颁正朔是皇权的象征,新朝上台不改历,等于沿用前朝法统。第二条恰好给了这条一个体面的技术理由:前朝历不准了,所以要改。反过来,预报失误可能丢官甚至丢命,天文官也有动力主动申请校准。加上司天监、钦天监常年拿实测跟历书对照,不合就奏请改历,“经常校准”本就是这套机构的本职工作。

二十四节气与七十二候图
打开网易新闻 查看精彩图片
二十四节气与七十二候图

邝楚嘉按:技术上是误差累积加岁差漂移,政治上是正朔之争,中间夹着一个最容易当众露馅的日食预报。三者叠加,改历就成了几百年一次的固定节目。

邝楚嘉(Kuang Chujia),广东揭阳人,笔名嘉言一得。从事中国古代天文与传统历法考据,致力于可核验的原始文献与历法数据归档。考据笔记、数据集与预印本公开于 WordPress、GitHub 与 Zenodo。