大衍历的基本数据是:
通法三千四十——即每天由3040分组成,全历中每一数据都以此数为分母策实百一十一万三百四十三——即1年的长度为11103433030=3652444,天揲法八万九千七百七十三——即1朔望月的长度为897733040=29.53059天乾实百一十一万三百七十九太——即一周天度数为1110379343040=365779343040岁差三十六太——为36343040度,约82年半差1度转终日二十七余千六百八十五秒七十九——即一近点月为27168579803040=2755460天交终日二十七余六百四十五秒千三百二十二——即交点月为271685132210000304327.21221天五大行星的会合周期为:
水星一百一十五日余二千六百七十九秒七十二,即1152679721003040=115881天金星五百八十三日余二千七百一十一秒十二,即5832679121003040=583892天火星七百七十九日余二千八百四十三秒八十六,即7792843861003040=770.935天木星三百九十八日余二千六百五十九秒六,即398265961003040=398875天土星三百七十八日余二百七十九秒九十八,即378279981003040=378.921天根据这些基本数据,再按照一定的法则就可以安排年的日历,推算交食和五星出没。中国古代历法中这些本数据所用的名称很古怪,这给我们研究古历中的计算法带来了麻烦,但弄清了这些名字的天文含义,其中计方法是不难的。现在有些同志称古代历法著作为“天书”主要是因为弄不清这些古怪名字的意思而难于理解。
《十二气历》和《天历》
古代的100多种历法中,绝大多数是阴阳合历,即太阳的视运动周期为年的单位,以月亮圆缺周期为月的位。由于两者没有整数倍数,所以要采用一定的调整措施这是阴阳合历不可避免的问题。但历史上有两种历法是纯阳历设计,避开了这个问题。其中一个是沈括提出的《十二气历》,一个是太平天国颁行的《天历》。著名的科学家沈括晚年在风景宜人的梦溪园里,记录他自己一生中对各种问题进行研究的心得和收获,写成著名的《梦溪笔谈》。书中提出了我国历史上第1个阳历方案:每年12个月,大月31天,小月30天,大小月相间。二十四节气分成两组,立春、惊蛰、清明、立夏、芒种……称为节气,置于每月的开头;雨水、春分、谷雨、小满、夏至……称为中气,置于月中。这样每年的日期和节气都固定不变,也不用设置闰月,推算很简便。沈括的阳历方案在历史上是无先例的,他明知会遭到攻击,但还是坚信以后总会使用这种设计的。
事情真如沈括所预言的,800年之后的太平天国起义军颁布了《天历》。
《天历》的基本结构,以366为1年,没有闰月。单月31日,双月30日,节气为月首,中气为月中。大月中气从每月的十七日开始,小月从十六日开始。这样除立春、清明、芒种、立秋、寒露、大雪6个节气为16日外,其余都为15日,所以非常简明整齐,几乎人人都能用它的推算方法来推算历谱。《天历》保留了古代的干支纪年、记日、记月的方法,并且使用星期周法。它是以立春为岁首的。《天历》1852年立春与清朝的《时宪历》一致,大约就是以此年立春作为历元。
《天历》将回归年取为366整,大概是为了从整齐完满和推算方便着想的,但这个数值与真值相差较大,4年就差了3天。考虑到这一缺点,太平天国的一位领导人洪仁歼于1859年对天历作了每40年一斡旋的修正。具体地说:每逢40的年份,改用每月28天;每个节气都恒定为14天。经过这次改定以后,天历的回归年长度相当于世界上通用的《儒略历》或我国古代的《四分历》。
农历的闰月
注意一下农历每年所包含的月数,容易发现有的年是12个月,有的年是13个月。这究竟是怎么一回事呢?
我们在前面曾经提到,我国的农历是一种阴阳历,同时把回归年和朔望月的长度做为制历的基本周期。回归年的长度是3652422日,朔望月的长度是295306日,这两者不能通约。如果规定12个朔望月构成1个农历年,这个农历年的长度就是295306×12=3543672日,比回归年的长度少11天左右;如果规定13个朔望月构成一个农历年,那么295306×13=3838978日,又比回归年多了18天多。显而易见,按照这两种规定制定历法都会出现天时与历法不合,时序错乱颠倒的怪现象。比如,按前者规定,某年春节在大雪纷飞的冬天,过了1个农历年,下一个春节就要比前一个春节在季节上提前11天出现,这样过了16个农历年以后,春节就会提前到赤日炎炎的盛夏了。春节可以发生在一年的任何季节里,这样的历法又有什么可用的价值呢?
为了克服这个缺点,同时兼顾到太阳和月亮的运动,我们的祖先在辛勤的天文实践基础上,至迟在春秋时代就创造了“十九年七闰法”,相当完满地把我国的历法建筑在坚实的科学基础之上,远远地走在当时世界各国的最前列。“十九年七闰法”,就是在19个农历年中设12个平年,每1平年为12个朔望月;设7个闰年;每1闰年为13个朔望月。这就是说,19年中总共有12×19+7=235个朔望月,总共的日数为235×29.5306=6939.6910日。另一方面,19个回归年的总日数为365.2422×19=6939.6018日。比较这两个总日数,相差仅为0.0892日。这表明按照“十九年七闰法”可以把太阳和月亮的运动很好地协调起来,就能制定出精度相当高并与天象密切符合的阴阳历。
由此我们可以明白,农历年有时是12个月,有时是13个月,并不是杂乱无章的,而是有着严格的科学规律的。
古历的“三正”之说
古历的“三正”之说历史悠久,其实就是历法的岁首问题。岁首,顾名思义就是一年的开头。现在大家都很明白,阳历的岁首是元旦,农历的岁首是春节,但在历史上却不是这样的。在漫长的观象授时时代,那时还没有历法,是按照物候的变迁和天体的运转判断新的一年的到来,谈不上是从哪一天开始的。后来产生出历法,东周统治者所颁行的历书规定新的1年从子月开始,即现在农历的十一月,包含冬至的那1个月,后代称为周正;春秋时代的郑国、宋国、齐国,它们的历法岁首在丑月,即现在农历的十二月,包含大寒的月分,传说殷代历法的岁首与此相同,故称为殷正;而晋国、秦国以及春秋时代的小国,它们的历法与今天农历一致,以寅月为岁首,传说夏朝的历法岁首与此相同,这就是夏正。正因为这个原因,所以有人把我们现在行用的农历称为夏历。
周正、殷正、夏正的三正之说是表示不同岁首的几种历法。当然历史上还有其他岁首的历法,例如秦和汉初的历法就是以亥月(现在农历的十月)为岁首的。不同的岁首只是一个习惯问题,各个民族也不一致,有的曾将一年的开始设在春分,有的在冬至,有的在泼水节(相当清明左右)。就是目前也还存在各种不同的岁首之说:例如学年的岁首目前统一在秋季的9月份左右,新生人学,旧生升级都在秋季;有的国家的财政年度的岁首放在7月1日,到下年6月30日结束,这是便于财政统计,这也是一种不同岁首的实例。
大月和小月的安排
月大30天,月小29天,可认为是古代历日制度上最巧妙的安排之一。朔望月的长度不是整数天,大约是29天半,客观存在使生活在不同地区的各族人民互相独立地做出了这样巧妙的安排。
朔望月的周期由月亮的圆缺变化明显地体现出来,它周而复始地变化着,圆了又缺,缺了又圆,以它的周期作为一月也有个从什么状态开始的问题。我国有的少数民族曾经以月圆至月圆作为1个月,以月圆作为1个月的开始。至今藏历、傣历还是先确定月望,规定日落时月亮正从东方地平线升起的那1天为十五日,由此再推定初一,这就是以月圆作为月首的遗留;汉族人民古代以月牙儿初见于西方的1天为一月的开始,西周初年称这一天为“肌”。
后来懂得了以间接方法推算日月合朔的时刻,就取那个时刻为1月的开始,称为朔。这显然前进了一大步,这个时代大约在西周末年。
日月合朔是看不到的,因为那时月亮以太阳照不到的半边对着我们。我国古代以观测太阳、月亮在恒星间的位置变化来推算日月合朔的时刻,以发生日食来检验这个时刻。当测得某一个合朔时刻之后,就以加上1个朔望月长度的方法推得下一个合朔时刻。逐次相推,可以确定各月初一的日子,用这种方法推算出来的月份大都是大小月相间的。由于一个朔望月比29天半还多一点,每隔17个月安排一个连大月,连续两个月都是30天的大月,这种方法古代称做平朔法。是取朔望月长度的平均值来推算的。
事实上,月亮公转的轨道是椭圆而不是正圆,这就决定了它的运动速度是不等的,用以上方法推出的日月合朔时刻与实际有出入,所以日食有时出现在晦,有时出现在初二。月亮运动的不均匀性,在西汉末年就已经发现,所以刘向和东汉的贾逵、张衡等多次提出用九道术来推算,东汉末的刘洪,第一次在他的《乾象历》中提出推算真朔的方法。他实测月亮在一个近点月内每日实际运行的数值,用一次内插法推算真朔发生的时刻,这就比平朔法推算的结果准确。推算合朔时刻要同时算出太阳月亮的位置,而实际上太阳的运动也是不均匀的,这一事实到南北朝的张子信才发现。隋朝的刘焯在推算日月合朔时第一次考虑到太阳运动的变化。从此各家历法在推算日月合朔时,都同时考虑到日月运动的不均匀性。在推算中刘焯用了二次差的内插法。唐朝的一行用了不等间距的二次差内插法,元朝的郭守敬用到三次差的不等间距内插法,所得结果越来越精确。考虑到日月运行不均匀性而推算合朔时刻的方法称做定朔法。按照定朔法的安排,月份的大小就不老是大小月相间,这就是现在农历上会出现连大月或连小月的原因。