由祖冲之《驳议》看大明历法创设理路

2021-10-10 03:08邓可卉
中国科技史杂志 2021年3期
关键词:祖冲之历法测量

邓可卉

(东华大学人文学院,上海 200051)

南朝祖冲之大明历问世后遭到当时宠臣戴法兴的攻击,为了澄清造历事实,祖冲之完成了千古名篇《大明历议》(以下统称为“《驳议》”)。学术界相关研究主要集中于1970年代[1,2]。时至今日,中国古代历法的研究进入了一个新的历史时期,有必要对其再研究,全面分析并了解祖冲之历法改革的思想。祖冲之《驳议》以“撰正众谬,理据炳然”([3],页1760)的姿态自信地陈述他的历法,并且指出前人“匪谓测候不精,遂乃乘除翻谬,斯又历家之甚失也”。对于离他最近的何承天历出现的误差现象,祖冲之说“臣历所改定也”。祖冲之的做法是追源畅要,目的是使“躔次上通,晷管下合”([3],页1761)。众所周知,祖冲之大明历在历法史上占有重要地位的原因是他的一系列创造。但是祖冲之如何“沿波以讨其源,删滞以畅其要”([3],页1761)的?大明历与何承天历的关系如何?它是如何继承吸收从而提出历法的核心要素的?大明历有哪些历法改革思想?其合理性如何?尤其是如何看待学术界最具争议的大明历上元积年计算[4,5]?本文以历史与逻辑相统一的视角,基于上元计算是中国历算史上一种主流方法,在前人研究的基础上,结合祖冲之的历法思想对这个问题进行讨论;另外澄清大明历造历过程,探究祖冲之创设新法的思想,以期对中国古代历法的测量与计算的理论问题获得新的认识。

1 重视测影验气及回归年常数的取得

大明六年,祖冲之上表曰:“何承天所奏,意存改革,而置法简略。”([6],页1743)说明祖冲之熟知何承天历的主要内容,也承认这些内容本身具有革新意义。《南史》卷七十二“祖暅”条有“父所改何承天历时尚未颁行”[7]。以上内容说明祖冲之历法与何承天历有绝对的关系,那么这个关系如何呢?

何承天元嘉历创于元嘉二十年(公元443年),祖冲之大明历创于大明七年(公元463年),相距只有20年。而且这两部历法的观测地同在建康(今南京,地理纬度是32.0667)。元嘉历在历法史上的地位不容忽视([8],页34)。其中与测影有关值得称道的是何承天在“上元嘉历表”中说的:

案后汉志,春分日长,秋分日短,差过半刻。寻二分在二至之间,而有长短,因识春分近夏至,故长;秋分近冬至,故短也。杨伟不悟,即用之……何此不晓,亦何以云。是故臣更建元嘉历。([9],页1716)

如果说这段话没有表达清楚何承天意思的话,那么再看元嘉历术文:

元嘉二十年,承天奏上疏:“今既改元嘉历,漏刻与先不同,宜应改革。按景初历,春分日长,秋分日短……今二分二至,各据其正。则至之前后,无复差异。”([10],页1739)

上面第一段话中,何承天表达了在他之前的两部重要历法——东汉四分历和杨伟景初历中对于二分二至日影变化的认识。东汉四分历在历史上第一个给出晷漏表,当时有八家参与改历,最后数据经过准确测量与对比,它的晷漏表各节气之间已经显露出一些规律性。何承天关注到了这一点。陈美东认为元嘉历的二十四节气昼漏刻几乎是取东汉四分历中对称两节气平均值而得到([11],页226)。

后一段直接澄清何承天历关于日影变化的规律性认识。它表达了两个意思:一是春秋分昼夜漏刻理应相等;二是冬至前后对称两节气昼漏刻理应相等,也即冬至前后对称各节气间昼漏刻的增减进退理应两两相等。看一下元嘉历“二十四气晷影漏刻表”([10],页1734—1735)就会发现符合这两个规律。

我们再回到祖冲之大明历。大明历二十四气晷影漏刻表中的昼、夜漏刻与元嘉历完全相同;二十四气冬至、夏至日影长相同,其余有差别,相差最多七八分,但是仍然保持对称节气日影长相同,并且与上一节气的增减量相等。这说明祖冲之认同何承天的两个晷影漏刻原则,在晷影漏刻表中有所反映。

祖冲之也对东汉四分历倾注精力,获得的思想更是不一般。在《驳议》中记载道:

四分志,立冬中影长一丈,立春中影九尺六寸。寻冬至南极,日晷最长,二气去至,日数即同,则中影应等,而前长后短,顿差四寸,此历景冬至后天之验也。二气中影,日差九分半弱,进退均调,略无盈缩,以率计之,二气各退二日十二刻,则晷影之数,立冬更短,立春更长,并差二寸,二气中影俱长九尺八寸矣。即立冬、立春之正日也。以此推之,历置冬至,后天亦二日十二刻也。熹平三年,时历丁丑冬至,加时正在日中。以二日十二刻减之,天定以乙亥冬至,加时在夜半后三十八刻。([3],页1766—1767)

以上术文的前半段是祖冲之对东汉四分历影长规律的进一步认识,去冬至日数相同的立冬、立春晷影长本应该相等,但是却相差达到四寸,祖冲之因此提出造成这种现象的真正原因是冬至后天了。这个发现是他大明历四项发明的基石,是他超越何承天工作的重点。从上文后半段可以看到祖冲之利用前人测量结果,巧妙地确定了熹平三年(1)大明历采用夏历,故熹平三年加时冬至相当于上一年十一月冬至时刻,即熹平二年的冬至时刻。另据《古历新探》知,东汉四分历采用的冬至时刻是熹平二年十一月丁丑50刻。而这里冬至时刻为乙亥38.079刻,符合-239刻误差范围。加时冬至时刻是乙亥日夜半后38.079刻。

祖冲之在《驳议》中记载了测量大明五年冬至时刻的一套方法为学术界所重视。根据这段术文作示意图(图1)如下。本文强调的是,他这个方法不是孤立出现的,它的前提是对二十四气晷影漏刻的规律性认识,以及东汉熹平二年冬至时刻的获得,而冬至后天是他进行冬至测影的出发点。据记载,祖冲之以他“臣测景历纪,躬辨分寸,圭表坚刚,暴润不动,光晷明洁,纤毫尽然”的铜表,测得大明五年冬至时刻为十一月三日夜半后三十一刻([3],页1767)。

图1 祖冲之测量冬至时刻方法示意图

祖冲之利用测得的冬至时刻进一步求回归年长方法如下,他将所在的大明五年与熹平二年冬至时刻相减,然后被间隔年数相除,得:

(461年12月20日31刻-173年12月22日38刻)/288

=(288×365.25-2.07)/288=365.2428125日。

以上计算的理论依据是祖冲之《驳议》中说的“量检竟年,则数减均同;异岁相课,则远近应率”([3],页1767),两个不同年代的冬至时刻能够相减的前提是日影和时刻是均匀而连续变化的。上述实测值与大明历实际采用的回归年长有微小差别,因为依据大明历岁余9589,纪法39491,相除得到0.2428148日。后面这个值与新的章闰有关,是在新闰法的基础上推求的。正因为如此,学术界有观点认为历法中的回归年长是导出常数,有一定的道理[12]。

但是,如何正确看待祖冲之的冬至晷影测量工作,它与推算值之间有什么联系?首先,祖冲之大明历的测量值和计算值的误差范围都比较小,通过查找陈美东历代冬至时刻和回归年误差分析的数据表可知,大明历前者误差范围是-20刻,后者是-46刻,而何承天元嘉历前者误差范围是-50刻,后者是-382秒。大明历冬至时刻误差在历代首次减小,而它的回归年长度的误差更小,历史上精度超过它的只有北宋杨忠辅的统天历(-22秒)和元代郭守敬的授时历(-23秒)([11],页53—54、216、221)。其次,他的这两组数据都是测量在先,计算基于实际天文测量。测量是取信的证据,也即“信而有征”;计算是为了维持系统的协调,也即“数皆协同”([3],页1769)。祖冲之关于测量与计算有一个比较明确的处理准则,正如他在上大明历表中也说:“亲量圭尺,躬察仪漏,目尽毫厘,心穷筹策。”他不但重视精细的测量,而且对测得的数据用心计算和分析,以明白其中的奥妙。

祖冲之取得回归年长后说:“臣因此验,考正章法。”([3],页1767)不难判断,祖冲之的章闰改革与晷影测验有关,其直接动因是晷影测量发现的冬至后天;由于年代积累导致冬至日所在发生变化,就要重新给出一个安放的宿度,这就是祖冲之所说的“冬至所在,岁岁微差”。

2 考正章法

关于章闰改革的必要性,实际上何承天在“上元嘉历表”中已经讲过了,“……然则今之二至,非天之二至也。天之南至,日在斗十三四矣。此则十九年七闰,数微多差。复改法易章,则用算滋繁,宜当随时迁革,以取其合”([9],页1716)。他又说:“又月有迟疾,合朔月蚀,不在朔望,亦非历意也。故元嘉皆以盈缩定小余,以正朔望之日。”([9],页1716)

我们知道,何承天元嘉历为了简便,仍使用旧章法,五星各设近距历元,历元取雨水,他意识到月行迟疾,并且有意在历法中推定朔法。以上术文说明何承天是了解历法深意的,他的“随时迁革,以取其合”意在在章闰与回归年常数之间建立一个动态的平衡也有进步性,但是“用算滋繁”显然不是他考虑的问题,当然也并不排斥。祖冲之对何承天做法评论道:“算自近始,众法可同,但《景初》之二差,承天之后元,实以奇偶不协,故数无尽同,为遗前设后,以从省易。”([3],页1770)明确指出杨伟、何承天的做法导致了奇偶不协,数无尽同。戴法兴也清楚元嘉历的做法,因为他说:“景初所以纪首置差,元嘉兼又各设后元者,其并省功于实用,不虚推以为烦也。”([3],页1769)(2)由这句话可看出来,戴法兴的批评是有主观意愿的。这里他为了批评祖冲之的甲子上元做法,反而认为各自立元的做法值得肯定。但是实际上对戴法兴这样的保守派来说,认可上元做法才是其正宗。

但是祖冲之是改革派,是个大胆革新的人,他说:“臣生属圣辰,逮在昌运,敢率愚瞽,更创新历。”通过上文分析得知,祖冲之改革章闰的决心建立在他对晷影漏刻和回归年测算的基础上,那么他如何得到新的章闰呢?朱文鑫对李淳风之前的各历法章闰进行研究后认为,“元始以来章法,不过增损旧章,而加十一年及四闰”[13]。这句话的意思是,元始以来章法更迭频繁,但是它们都是在19年7闰的基础上通过加11年4闰的弱率,通过调日法得到。具体公式如下:

从而得到了大明历的新章法,章岁391,章闰144。以上等式的原理也可以用上元积年算法解释如下。设章岁为a,章闰为b,则7a-19b=1,或

a≡11(mod 19)

b≡4(mod 7)

可见,调日法中的11年和4闰相当于一次同余式方程组中的余数。大明历距何承天历只有20多年时间,这样得到新的章闰,不仅践行了何承天改革章法的想法,而且很自然地把章闰计算纳入大明历上元积年算法系统中。

正如祖冲之在上大明历表中所讲:

若夫测以定形,据以实效,悬象著明,尺表之验可推,动气幽微,寸管之候不忒。今臣所立,易以取信。但深练始终,大存整密,革新变旧,有约有繁。用约之条,理不自惧,用繁之意,顾非谬然。何者?夫纪闰参差,数各有分,分之为体,非细不密。臣是用深惜毫厘,以全求妙之准,不辞积累,以成永定之制。非为思而莫悟,知而不改也。([6],页1744)

祖冲之认为通过圭表、浑仪等仪器测量可以降低历法误差,是实测依据,所以他说“测以定形,据以实效”,只有这样才能易于取信。他在《驳议》中也强调了天文数据“非出神怪,有形可检,有数可推”,可见祖冲之在测算基础上对“形”与“数”有了进一步认识。但是他紧接着又强调了他的数学方法,即要做到“非细不密”。祖冲之的“深练始终,大存整密”则表达了他的历法整体思想。“非为思而莫悟,知而不改”显然是他对何承天的批评。下文将说明大明历岁差值也是为实现这一目的而推算得到的。

3 岁差理论及岁差值的确定

祖冲之首次在历法中采纳岁差,此后历代历法中,岁差值成为必然考虑的一个历法常数。但是如何得到岁差常数?从历史上看,第一种方法是源于历代对冬至点日所在宿度的观测。晋代以前,中国天文学家们已经意识到冬至点的移动,如刘歆发现太初历所记载的冬至点位置与古代不同,东汉贾逵坚持认为冬至日在斗二十一度四分度之一,结果与前代天文记录相差明显。东晋虞喜开始讨论并提出岁差,也是由于冬至日所在“五十年退一度”。

何承天历在这个问题上表现最为突出。虽然何承天历没有采纳岁差常数,但是学术界就他在“上元嘉历表”及元嘉历术文中的叙述得到不同岁差值。首先,认为何承天赤道岁差应是 100 年西退一度,其依据是“上元嘉历表”中的一段话:“迩来二千七百余年,以中星检之,所差二十七八度”([9],页1715),当代很多学者支持这个观点[5,14,15];其次,根据东汉《四分历》参考了西汉太初元年以来的观测记录以及当时的实测记录,认为冬至日在斗二十一度四分度之一,该历于元和二年(公元85年)颁行,去元嘉二十年358载,冬至点移动7.25度,所以得到岁差约五十年退一度([8],页273)。朱文鑫《历法通志》曾支持这一值([13],页117)。

另外,“上元嘉历表”中记载:

汉之《太初历》,冬至在牵牛初,后汉四分及魏景初法,同在斗二十一。臣以月蚀检之,则景初今之冬至,应在斗十七……然则今之二至,非天之二至也。天之南至,日在斗十三、四矣。([9],页1715—1716)

这里说的到底是斗十三度,还是斗十四度?太史令钱乐之等奏上元嘉历中明确说:“今之冬至乃在斗十四间,又如承天所上。”如果取日在斗十四,那么又得到:

(元嘉二十年443-景初元年237)/(17-14)=206/3≈68.7。

这是另一个岁差值。何承天用中星法定岁差本意不错,但是他对岁差的态度莫衷一是,这不能不说是一件非常遗憾的事情,其原因何在呢?

祖冲之对岁差改革的态度和信心有一方面来自他的实际测量,一是本文前面提到的晷影测量发现的冬至后天,二是二十八宿日所在的测量。祖冲之《驳议》中驳斥了戴法兴的四个日所在宿度值,他利用了姜岌的“月蚀冲法”,具体方法是,他先给出元嘉十三、十四与二十八年和大明三年的四次月食尽时月球所在的宿度值,然后按照“月蚀冲法”推算出对面的日所在宿度值,均“纤毫不爽”地与大明历的推断相符。他得到结论说:“故知天数渐差,则当式遵以为典。事验昭皙,岂得信古而疑今。”

第二种方法如下。祖冲之将岁差(恒星年)引入历法,必然要使之在形式上成为构建理想上元的一部分,由此他把历法视作一个完整系统。戴法兴也质疑大明历是“术体明整,则苟合可疑”,这或许可以说明一些问题。祖冲之岁差值“四十五年十一月,率移一度”,可以从其回归年岁实与周天数相较得出,即

曲安京认为,“在中国传统历法的天文常数系统中,岁差(恒星年)是一个很重要的‘导出常数’”。而这个方法是由祖冲之首次创设的,这种从上元导出岁差常数的方法对后世产生了深远的影响([16],页132—133)。他仔细分析后认为,祖冲之首创用上元调整岁差常数的做法,由于取周天分S为整数,往往需要较大的选择空间而导致精度不高;但是这些并不能反映出治历者的测算水准。可见对这一做法的评价是客观的。

陈美东认为,“祖冲之虽用了姜岌法,但所得结果却有较大误差(其因不明),这样,他据以计算岁差的冬至点宿度变化量偏大了数度之值”([11],页263)。我们上文分析或许可以解答“其因不明”,就是祖冲之首次采用由上元导出岁差的方法,使得其值误差较大。

祖冲之在上表中提出大明历“改易之意有二”包括了章闰和岁差两大改革;“设法之情有三”,其一就是子为辰首,虚为北方,认为“前儒虞喜,备论其义”,可见命起虚宿是虞喜提出来的,这说明祖冲之引进岁差在观念、思想、算法上均有回应与表现。其二,日辰之首,甲子为先,历法上元,应在此岁。可见祖冲之设上元甲子,取其数字整齐,计算简易。其三,日月五纬,交会迟疾,悉以上元岁首为始。严敦杰分析后认为:“大明历却把这上元统一起来。骤然看来,觉得大明历是凑合上元数,不如元嘉历。但实际上大明历五星用数比元嘉历还密,说明并不是凑数。以上三种设法,其实为一,此中祖冲之必有创见,故特表而为三。”[17]肯定了祖冲之做法。祖冲之对于其上元计算有充分的算理铺垫,并且前后呼应,这尤其体现在他的岁差值上。大明历中的相关内容都具有理法上的关联性,这是何承天历没有做到的。

4 对非为合验天思想的新见解

天文学史上,何承天曾经在晋代杜预的基础上重申“当顺天以求合,非为合以验天”的重要思想,在其元嘉历中为近点月、交点月以及五星各立后元,也反映了其顺天思想。“非为合验天”的思想来源于汉代历法的某些弊端,如历法的内容必须符合图谶、黄钟之数等。到了元代它发展出新的内容,如元代李谦在《授时历议》中写道:“晋杜预有云:治历者,当顺天以求合,非为合以验天。前代演纪之法,不过为合验天耳。”这里明确指出为合验天的动机就是上元演纪。曲安京认为,何承天至李谦之间800余年中,鲜有傥言指责这种现象者,其原因在于各治历家无不潜心构算,努力使七曜并发上元,自然不便对自己的追求进行非议([16],页51)。很明显,论述七曜并发上元与岁差有关,这也能从另一个角度说明,何承天对岁差语焉不详的隐衷就是他坚信不能为合验天。

那么祖冲之对这一思想的态度如何?显然,按照戴法兴的观点,祖冲之也是“冲之苟存甲子,可谓为合以求天也”,直截了当指出祖冲之以甲子为历元就是以自己的主观意见来符合天意的。祖冲之在其《驳议》中阐述了以下观点,来说明他对为合验天思想的态度。首先,对于景初历和元嘉历存在的至差三日、影当后天的现象,他批评道:“至于中星见伏,记籍每以审时者,盖以历数难详,而天验易显,各据一代所合,以为简易之政也?”他认为古代书本中以中星的始见和落下审定时令,是因为确定历数比较困难。相对而言,以天象验证很容易,所以每一朝代都据当时所见写下来,认为这是最简易的办法。但是这就够了吗?他又说“诚未睹天验,岂测历数之要”([3],页1776),无论是元嘉历还是景初历,它们对应的闰法和二至时刻以祖冲之时代的天象看,都存在误差,也就是“未睹天验”,既然这样怎么谈得上“测历数之要”?可见祖冲之是同意“当顺天以求合,非为合以验天”的,但与此同时他也指出这句话在逻辑上是有问题的,也就是能验证当时的天象,但却不能验证未来的天象。即使他与元嘉历的年代相距只有20年,这个效果也是明显的。

其次,针对戴法兴提出历法要“夫置元设纪,各有所尚,或据文于图谶,或取效于当时”的思想,也就是说为合验天一方面符合图谶纬书,一方面要符合当时的天象。但是在祖冲之看来不是这样,他反驳曰:

夫历存效密,不容殊尚,合谶乖说,训义非所取。虽验当时,不能通远,又臣所未安也。元值始名,体明理正。未详辛卯之说何依,古术诡谬,事在前牒,溺名丧实,殆非索隐之谓也……以臣历检之,数皆协同,诚无虚设,循密而至,千载无殊,则虽远可知矣。备阅曩法,疏越实多,或朔差三日,气移七晨,未闻可以下通于今者也。元在乙丑,前说以为非正,今值甲子,议者复疑其苟合,无名之岁,自昔无之,则推先者,将何从乎?历纪之作,几于息矣。夫为合必有不合,愿闻显据,以核理实。([3],页1768—1769)

祖冲之认为历法主要考虑是不是与天文实际相符,并不是简单凑数。谶纬所本的错误学说,不能拿来作证。历元以甲子开始,体例齐整,理论正确,用他的历法检验,并不凭空假设一些数据,而是自始至终遵循精密的计算,则推算上千年都没有什么不同。他立足测量,进行精密计算是好的,但是一部历法要达到“千载无殊,虽远知矣”过于理想,不符合实际情况。

由此可见,祖冲之大明历首重冬至晷影测量,运用数学方法解释和融通历法,尝试探讨与建立古代历法体系与思想。参考陈美东的各项误差分析数表发现,大明历五星会合周期高于它之前的所有历法,只有土星、木星精度不及元嘉历。大明历交点月精度高于元嘉历,近点月误差较大([11],页238、255、393)。客观地说,祖冲之历不是所有常数精度都最好,但他的历法理论相对完善,为进一步强化中国古代历算学体系奠定了基础。

最后,他说“夫为合必有不合,愿闻显据,以核理实”,这里的所谓“理”就是围绕上元精密推算得到的一系列理论数据,包括回归年长度、章闰、朔实、岁差等等,所谓“实”就是不厌其烦地测量获得的第一手依据,祖冲之认为只有这两件事是“显据”,他不但追求“诚无虚设”,杜绝谶纬,而且直接丢弃这些虚设数字,强调了“理实”思想,即测量和推算的重要性。祖冲之对何承天等人的非为合验天提出自己的看法,就是为合验天固然不对,但是如果单纯为了合于当时的天象,那么“为合必有不合”。可见祖冲之对“非为合以验天”有了新的认识,它植根传统历算学的测算实践,也是一种进步。

5 结论与余论

祖冲之大明历中有一系列创新。对于他的这几个创新点,祖冲之的大致工作顺序是:考校晷影,从而测算得两个跨越年代的冬至时刻,接着依据一定的规则计算得到相对准确的回归年长度,再依算改旧章法,然后进一步通过观测验证月食冲时的日所在二十八宿度值,进一步获得改正岁差的实测依据,然后“通而计之”计算出新的岁差值。

祖冲之是一个审慎而勤勉的改革派人物。这可以从他创大明历的过程得到验证。首先,本文通过两条史料证实了,祖冲之大明历学习并继承了何承天的相关历算学思想。其次,祖冲之不盲目效仿前人的工作,他非常重视并亲自进行天文测量,其中,重新考正东汉四分历的晷影漏刻长度获得冬至后天的事实,是他围绕一系列改革进行实际测量的核心依据,二十八宿冬至日所在的测量是他获得岁差改正的实测依据,实现了祖冲之的“测以定形,据以实效”和信而有征的历法思想。再次,大明历构建出来一套包括冬至时刻、回归年长、新的章闰、岁差值和历元起算等内容,实现了祖冲之的数皆协同和体明理正思想。祖冲之历法思想中重视实际测量,进行数学解释,实现对历法各项内容的融通,反映出他历算探索的数理天文学倾向。在此过程中,上元计算是实现他的历法系统性、完整性的重要环节,他借助实际观测和数学手段实现上元计算具有一定的合理性,但是他追求上元能够“通远”太过理想了。另外,祖冲之在测算基础上产生了“夫为合必有不合,愿闻显据,以核理实”的思想,这里的“理实”既包括围绕上元推算得到的一系列理论数据,也包括天文测量获得的实测依据,从而使他对“非为合以验天”产生了新的认识。

致 谢感谢审稿专家对论文提出的宝贵建议和意见!

猜你喜欢
祖冲之历法测量
让祖冲之死不瞑目的《大明历》
从走马楼西汉简歧异干支谈汉初历法混用问题
“笨蛋”祖冲之
发明新历法
祖冲之
把握四个“三” 测量变简单
滑动摩擦力的测量和计算
滑动摩擦力的测量与计算
测量
祖冲之序列密码算法