中秋时节的赛博月饼,各位大人请用。
一、
小时候只熟悉公历的闰日法则,在听说农历有闰月的说法时被惊到了:为什么累积误差有一个月之巨的历法还会有人用?
很多人会提到,农历本质上是阴阳合历:以月亮的圆缺周期定月份,以太阳的回归周期定年份并据此划分节气。太阳的位置决定了水热光等条件,所以节气才是真正用来指导农事的标签。但这种说法反而让人更困惑了:那阴阳历中阴历的部分又有何用?
如果看到了这里,请各位大人放下手机,考虑一个问题:今天是九月几号?如果你不知道,那么没有手机的古人也不知道,而他们遇到的问题甚至更严峻:为了知道「什么时候进入下一个月」这样简单而必要的问题,都需要自行维护一个每天记得更新的计数器。
接下来,请再考虑第二个问题:还有几天到周末?想必能答上来这个问题的人会更多些,因为现代人是自带七日计时器的。那么,生活没那么规律的古人有类似的人尽皆知的计时器吗?没错,那就是抬头可见的月亮。朔望月以月相变化为单位,这正是各大文明中「月份」这一词汇的源头。
二、
闰年是因为一年的时间不是一天时间的整数倍,所以要在适当的年份添一日以补足。那么闰月又是什么机制呢?可以类比想到,一年的时间也不是月相的周期的整数倍,所以要在某些年里添一月以对齐。
先秦的历法以365+1/4日为一年,因此也称四分历;19年里设置7个闰月,可以得知此该历法以(365+1/4)*19 / (12*19+7) = 29+499/940日为一月,这样的一个周期称为一“章”。根据现代的观测数据可以算得,这种算法每章会错位两个小时左右。这对于古人的一生来说已经很精确了,但对于动辄以百年计的王朝来说累计的误差就会很可观了。解决方法有两种:
其一是“正朔”,即每隔一段时间根据天文观测来校准误差。在讲究君权天授的封建社会,正朔经常有着浓烈的政治意味,故经常会在王朝更替时举行仪式。
其二是根据累积的观测数据以颁布更精确的历法,所谓“敬授民时”。例如,汉武帝推行了太初历,并改当年年号为太初。根据其规则可以推算得知,该历法中的一年为365+385/1539日,一月为29+43/81日,故也称为八十一分律历。
三、
很多人会觉得,测出精确时间有什么了不起的,统计的时间足够长总能算出个平均数——这其实忽视了天体运动的复杂性与历法在数学上的妥协。
首先,地球的自转轴是在缓慢变化的,周期约25722年,这将使得(根据太阳方位而测算的)回归年的实测长度也发生缓慢变化,这种“岁岁微差”的现象很早就被古人发现。南朝宋的大明历是第一部考虑岁差影响的历法,其一年为365+9589/39491日,并采用391年置144闰月的算法。
其次,月球的轨道并非正圆,其速度也因轨道的偏心而时时刻刻发生变化,甚至近地点也会有周期性变化。因此在以均匀运动为假设推算的朔/望时刻,月球往往还没有/已超过既定位置,因而产生误差。东汉末年的乾象历考虑了这一点,并随历法规则制订了月离表以修正这方面的误差,自此以后的中国古代王朝历法均会附带当下最精确的月离表。
最后,历法不能为了精确度,将规则制定得过于复杂。例如,主导太初历的落下闳、制定三统历的刘歆,均指出了自己的历法与实际观测值的细微差异。但为了维持规则的简洁程度,他们还是放弃了匹配精确值的尝试。更为精确但规则复杂的大明历,则在南朝陈灭亡后不再使用。甚至于我们今日的农历,依旧是19年7闰的魔改版。
除此之外,二十四节气、甲子记数法等等一系列内容都是农历的重要组成部分,每个都为中国古代历法增添了复杂性。但复杂的计算是留给天文台的,古时广大劳动人民只需知道哪天是新年,之后抬头就能明白当下的日子——复杂的另一端反而是简单与精确。
四、
今人不见古时月,今月曾经照古人,数学也是沟通古今的明月。在这个月圆之夜,就以一个数学小八卦作为结尾吧。
最简单的闰月规则,本质上是在用整数除法去拟合小数。比如M年N闰,就是在用12+N/M来拟合“每年有12.3683…个月”这个实际观测的值。对中国数学史有所了解的人可能会有点似曾相识的感觉——祖冲之算出的圆周率近似值,疏率22/7,密律355/113,似乎也是在用整数除法拟合既定的无限不循环小数。
没错,搞出391年置144闰月的大明历的人正是祖冲之。
发布于 北京
