编修《奉元历》是沈括提举司天监时期的一个重大事件。北宋时期的历法修改频繁,每一个在位的皇帝都颁布过新的历法。虽然更换频繁,但历法依旧存在偏差,并不能很好地契合天文实际。在沈括之前采用过的历法包括《应天历》《乾元历》《仪天历》《崇天历》《明天历》五种,它们使用的时间也都有长短,有长达40年的,也有短至10年的。一般来说,用了二十多年的历法就必须要更换,但为什么会出现未及时更换历法的情况呢?对此,沈括做了分析,他认为根本的原因是这些历法都没有以实际测量的数据作为依据,只是沿用了唐代的《大衍历》进行计算,而《大衍历》年代久远,误差比较大,并且没有人对其进行勘误纠正。加上当时负责天文历法的官员也比较无能,因循守旧,最后导致“岁未五更,历凡再弊”的局面的出现。而事实上,在更早一些的时候,沈括就发现了这个问题,宋神宗曾命令历官编修新历,但由于各种原因,迟迟没有成功。沈括到司天监之后,便让精通天文、数学的新人卫朴来负责修历的工作。但即便是再次修历,由于设备不精密,新修的历法依然与实际天象有着较大的差异。同时,时任官员的不负责任,导致司天监以往的观测记录和天象资料存在较多的错误。在编新历的时候,卫朴既没有先进的精密仪器,又没有准确的基础资料,虽然纠正了一些错误,比之前的历法准确了些,但依旧不可避免地存在差错。更让人意外的是,这部新编的历法在颁布之后不久,竟然出现了月食没有验证的情况:据新历推算,熙宁元年(1068)七月望夜将有一次月食,但实际却没有得到应验。
熙宁八年(1075)正月,宋神宗决定重新校正新历,此时的沈括已经升任三司使。沈括向神宗举荐了卫朴,他建议由卫朴根据新制作的天文仪器测得的数据来校订新历。卫朴是一位没有任何背景,来自平民阶层的新人,沈括能如此重用他,并让他负责编撰和校订历法这样重要的工作,说明沈括在用人方面很有勇气,同时秉承着务实的态度,这点也恰好与王安石在变法中对人才的要求有着相通之处。
在沈括的一再坚持和举荐之下,神宗皇帝最终同意再次由卫朴来校订新历,沈括继续统领修纂新历法。在卫朴的帮助之下,沈括专心观测天象,最终在熙宁八年(1075)修纂完成了《奉元历》。这部新历法把一个回归年(即太阳再次经过春分点的时间间隔)定为365.243585天。尽管与现在的365.2422天有些许差距,但是相比于之前宋朝旧的历法,《奉元历》更贴近实际情况。经过这次校订的新历比原来的旧历更精准,赢得了神宗皇帝的赞赏。新历得以顺利启用。
《奉元历》修成之后,神宗命沈括写了一篇序言。那篇被收录进《奉元历序》的表文至今依然留存在沈括的文集中,可惜这篇序言已经失传了。
然而新历仅仅使用了19年,到绍圣元年(1094)就和它之前的那些历法一样被弃用了。仅仅19年就将一部新历法废黜,从一个侧面说明在那个时代,虽然沈括有创新的主张,卫朴有精湛的技术,但历法的精准程度依旧不算理想。同时,沈括生活在封建时代,在当时的政治形势和官僚势力的控制下,沈括这样的革新行为也是不被提倡的,改革必然会受到百般阻挠。从这个角度来说,《奉元历》是“先天不足”的。
在沈括主持修纂新历的时候,司天监内部和外部展开过一场激烈的斗争。那些反对修新历的人企图从根本上推翻新历,他们用“改定朔法”为题,来势汹汹,使得新历的推行岌岌可危。当时卫朴极力主张历法要精准,必须移改《大衍历》的闰朔法,将熙宁十年天正元(冬至),由午时改用子时,闰十二月改为闰正月。但是这个主张一经提出就遭到了各方面的攻击。这么一来,卫朴的主张受到阻挠,有可能无法贯彻。但是对于赞成改革的人们来说,态度是非常鲜明的,他们建议进行一次实地试验:用日晷来测定立春、立冬两个节气的日影,看看是否和历法推算相符。结果显示,要将旧朔法提早50多刻,两个节气的日影才显示出相同的长短。用事实说话,让反对的人无话可说。如此一来,修改历法的大原则才被确定下来。
另外,在修订历法的过程中也出现了一些争端。沈括、卫朴等人认为,必须从观察五星运行情况入手来验证所推日历。这个主张如果得到实现,修成的历法就一定可以超过以往水平。但那些无能的官员却纷纷反对,甚至对卫朴进行了人身攻击。沈括在《梦溪笔谈》卷8《象数二》中记载了这种事:
熙宁年间,我担任太史令,让卫朴编制新历法,节气、朔日等已经修正过来,但是金、木、水、火、土五星并没有供以检验的天文观测记录。之前修正的历法,大多只是增删旧历上的文字罢了,并没有切实地考察过天象。这种方法便是必须在每天的黄昏、拂晓及半夜时分观察月亮以及五星所在的位置,并记录在簿册内,如此坚持五年,其间剔除阴天以及白天出现五星的天数,可以得到三年的实际运行数据,然后再根据这个数据计算把它们连接起来,就是古人所说的“缀术”。当时司天监的历法官员,大多是袭承祖辈的职位,延享俸禄名号,原本都是一些不懂得历法的人,他们嫉恨卫朴的本领超过自己,便群起而攻之,多次挑起重大争议想要陷害卫朴。虽然这些事情最终都没能动摇卫朴,但是观测记录五星运转的事情还没有完成。因此《奉元历》中五大行星行度的推算,也只能是增删了旧历,纠正了其中重大的谬误,准确率也不过十之五六而已。卫朴的历法算术,从古到今没有人这样做过,却被一群所谓的历法官员排挤、阻挠,使得卫朴无法将他全部的才能发挥出来,真是非常可惜啊!
这段记载记录了当时掀起过的政治迫害,但当时究竟是什么样的状况,现在已无从得知。
新历终于修成了,所幸卫朴本人没有受到太大的伤害。但新历因为缺乏实测基础,卫朴的本领并未得到充分施展,据他自己估计,才不过使出了十分之六七。但这一回合到底还是改革派失败了。再加上无论卫朴的推算如何精准,由于受当时各种条件所限,还是会有一些疏漏,新历也并非尽善尽美。《奉元历》颁行的第二年,正月十五晚上,本来算好的月食,又没有应验。反对派乘机发难,宋神宗也向修历官追究责任。此时,沈括已经离开司天监,却依旧挺身而出,替卫朴和新历法辩护。他提出一个补救办法,让天文院的学生用浑仪、浮漏和圭表测验,每天记录天象,然后交给原撰历人用新历进行参校,如果遇到不准确的,马上改正。神宗思忖再三,采纳了这个建议。
新历没有立即被废弃,总算是沈括争来的胜利。但毕竟重修时间仓促,实测工作又由于各种各样的原因没有很到位地得到执行,《奉元历》没有达到预期的水平,平心而论,它算不上是宋代最好的历法。重修后的第十二年,即宋哲宗元祐五年(1090),又发生了所算冬至落后一天的误差。尽管如此,这个历法还是具有鲜明特色的,宋神宗就曾说过:
提举司天监近校月食时分,比《崇天》《明天》二法,已见新历为密。
沈括在《梦溪笔谈》卷18中也客观地说,《奉元历》因为缺乏观测记录,没能充分发挥其作用,准确度不过六七成,但已经比其他历法精密了。
沈括去世186年后,他那根据实测来修历的主张才得以实现。元朝至元十八年(1281),另一位天才科学家郭守敬修成著名的《授时历》,他运用了沈括一再提倡的“数据实测”之法。《授时历》是一部先进的历法,是我国古代天文历法发展的智慧结晶。它所用的回归年周期和地球实际公转周期只差26秒,与现在国际通用的公历周期一样。
■ (元) 郭守敬 《授时历》
事实上,沈括对历法的贡献不仅限于修《奉元历》,他也是《授时历》的先驱。