蒙古以前根本没有自己的历法。成吉思汗当政的第十五年,他驻扎在撒马尔罕城。有个回鹘人报告说,五月十五那天晚上月亮被遮住了。当时的中书令耶律楚材,根据《大明历》推算,发现月亮的确应该被遮住一部分,而且最严重的时候是在子时(晚上11点到凌晨1点)。结果呢,还没到晚上刚过一点的时候,月亮就已经开始被遮住了。

那年二月和五月的初一,月亮都出现在西南方,而且很小。耶律楚材发现以前的历法根本不准,于是另起炉灶,编制了一部新的历法,叫做《庚午元历》。这部历法是根据《大明历》修改的,把周天减少了七十三秒,岁差也减少了七十三秒。他根据中元庚午年(即成吉思汗登基的那一年)全国基本平定,推算出上元庚午年(成吉思汗受命的那一年)十一月壬戌日(阴历十一月某日)的子时是冬至,认为这是成吉思汗受命于天的吉兆。他还考虑到西域和中原相隔万里,根据唐代僧一行关于里差的理论进行增减调整,这样一来,东西方观测的结果就完全一致了。

然后,耶律楚材上奏成吉思汗说:“从汉朝到唐朝以来,历法不断改进,各种历法不下百种。可是,这些历法在气候早晚、朔望快慢、日月盈亏、五星运行等方面,都存在疏密不均、先后不一的问题。这主要是因为各地地理位置不同,或者历法年代久远造成的误差。唐朝的历法改过八次,宋朝的历法改过九次,金朝的《大明历》一百年才改一次。而现在我们距离中原万里之遥,过去适用的历法,现在可能就不准了。比如,东西方观测的差异,以及今年二月和五月的初一,月亮都出现在西南方,而且很小,这和以前的历法都对不上。从汉朝到唐朝以来,关于历法的书籍很多,但都没有提到这种情况。虽然正月和四月也是小尽(指月球盈亏的程度),但从没有出现过初一就能看到月亮的情况。”

当时成吉思汗正在西域用兵,所以耶律楚材的奏章没有被采纳。耶律楚材曾经说过,西域的五星运行比中原密集,他还编制过一部叫做《麻答历》的历法,但是现在已经失传了。耶律楚材的父亲耶律履,在金朝灭亡之前编制过一部《乙未元历》,耶律楚材编制的《庚午元历》就是在他父亲的基础上修改而成的。

到了忽必烈当政的至元四年,西域人札马鲁丁用回回历法编制了一部《万年历》,忽必烈皇帝稍微采纳了一些。这部历法是默特纳国王马哈麻所创,以西域阿剌必年(相当于隋朝开皇己未年)为起始年,不设闰月,一年三百六十五天,一年十二宫,每个宫都有闰日。一百二十八年,宫闰三十一日;三百五十四天为一周,一周十二个月,每月有闰日,三十个月闰十一日;一千九百四十一年的周期之后,宫、月、日、辰再次重合。这就是这部历法的基本原理。

元世祖忽必烈在位十三年的时候,下令让许衡、王恂、郭守敬三位大臣负责修订新的历法。之前,刘秉忠丞相觉得《大明历》沿用多年,已经和实际情况脱节了,建议修改,但刘秉忠去世后,这事儿就搁置了。

等到世祖忽必烈想起这事儿,就让王恂和郭守敬带队,带着全国各地的一帮天文专家,比如陈鼎臣、邓元麟、毛鹏翼等等,一起搞天文观测和计算。因为许衡对天文历法也很懂,所以也让他参与进来。

郭守敬首先说,修历法最重要的是观测,而观测需要仪器。当时司天台的浑仪是宋朝皇祐年间在汴京造的,和现在这儿的地理位置对应的天文数据对不上,南北极的偏差大概有四度。而且,观测用的圭表也老旧损坏,不能用了。于是,他们就把旧仪器都检查了一遍,重新调整摆放。

然后,他们又设计建造了一个新的观测平台,用木头搭了个大棚子,在里面制造了简仪、高表等等一系列新的天文仪器。 为了更精确地观测北极星,他们还发明了候极仪;为了更直观地了解天体运行,他们又发明了浑天象和玲珑仪;为了测量天体的角度,他们发明了仰仪;为了简化观测方法,他们发明了立运仪;为了验证日月的运行规律,他们发明了证理仪;为了更精确地观测日影,他们发明了景符和窥几;为了预测日食月食,他们发明了日月食仪;为了测量时间和天体的方位,他们还发明了星晷定时仪。 总共设计制造了十三种天文仪器。 此外,他们还设计了正方案、丸表、悬正仪、座正仪等四种仪器,方便各地观测人员使用。 同时,他们还绘制了《仰规覆矩图》《异方浑盖图》《日出入永短图》等五幅图,辅助天文观测。

到了元世祖在位十六年的时候,天文机构改名为太史院,王恂当了太史令,郭守敬当了太史院同知,还给他们发了印章,正式设立了机构。 这一年,郭守敬向皇帝汇报了他们研制的新仪器,详细地讲解了它们的原理和使用方法。他从早到晚地给皇帝讲解,皇帝一点儿也不觉得烦。

郭守敬还建议说:“唐朝一行和尚在开元时期曾经在全国各地进行过天文观测,书上记载了十三处观测点的数据。现在咱们国家的疆域比唐朝还大,如果不能在全国各地进行观测,那么日食月食的时间和具体数据、昼夜长短、日月星辰的高度都会不一样。所以,应该先在南北各地设立观测点,进行统一的观测。” 皇帝同意了他的建议,派出了十四名官员,分赴各地进行天文观测。

观测结果显示:南海北极高度为15度,夏至日影长1尺1寸6分,白天54刻,夜晚46刻;衡岳北极高度为25度,夏至日影长0,白天56刻,夜晚44刻;……(此处省略各地观测数据,数据较多,为避免冗余,仅保留开头和结尾部分)……琼州北极高度为19度。

十七年,新历终于完成了,守敬上奏皇上说:我们听说啊,对于帝王来说,没有什么比历法更重要的了。从黄帝开始迎着太阳推算历法,尧帝用闰月来确定四季和年岁,舜帝则用璇玑玉衡来调整七政(日、月、五星)。到了夏商周三代,历法都没有固定的方法,到了周朝和秦朝之间,闰月和节气更是错乱不堪。西汉时期创造了《三统历》,一百三十年后才算确定了它的对错;东汉时期创造了《四分历》,七十年后才完善了它的仪式;又过了百二十一年,刘洪创造了《乾象历》,这才明白了月亮运行有快有慢;又过了百八十年,姜岌创造了《三纪甲子历》,这才明白了可以用月食来检验太阳运行的度数;又过了五十年,何承天创造了《元嘉历》,这才明白了可以用朔望和弦来确定大小余;又过了六十五年,祖冲之创造了《大明历》,这才明白了太阳有岁差;又过了五十二年,张子信明白了日月交道有表里,五星运行有快慢、停留和逆行;又过了三十三年,刘焯创造了《皇极历》,这才明白了太阳运行有盈有缩;又过了三十五年,傅仁均创造了《戊寅元历》,他参考了以前的历法,开始使用定朔法;又过了四十六年,李淳风创造了《麟德历》,因为他发现以前的历法在章、蔀、元、首、分、度等方面都不统一,所以他制定了一个总的办法,用进朔法来避免晦晨月见;又过了六十三,僧一行创造了《大衍历》,他根据朔有大小来确定九服交食的不同;又过了九十四年,徐昂创造了《宣明历》,这才明白了日食有气、刻、时三种误差;又过了二百三十六年,姚舜辅创造了《纪元历》,这才明白了食甚的误差。以上这些加起来一共一千一百八十二年,历法改了七十次,其中创造历法的有十三个大家。

过了百七十四年后,皇上您统一了全国,开创了盛世,特地命令我们来修订新历法。我们利用创造的简仪和高表,根据实际测量的数据,对七个方面进行了校正:

第一,咱们来说说冬至。从丙子年立冬开始,我每天都测量日影长度,一天天对照着记录,找到冬至前后日影长度变化相同的日期作为标准。结果算出来,丁丑年的冬至在戊戌日夜里十二点后八刻半(大约五个小时);丁丑年的夏至在庚子日夜里十二点后七十刻(大约四十二个小时);戊寅年的冬至在癸卯日夜里十二点后三十三刻(大约二十个小时);己卯年的冬至在戊申日夜里十二点后五十七刻半(大约三十五小时);庚辰年的冬至在癸丑日夜里十二点后八十一刻半(大约四十八个小时)。把这些时间都减去《大明历》里说的十八刻,前后都对得上,误差很小。

第二,咱们再来说说一年的时间长度。从刘宋的《大明历》开始,每次测量日影、观察天象,算出冬至的准确时间,一共六次。用这六次的数据来比较,算出每年的时间长度。现在已经验证了四年,结果都完全一致。从宋朝大明壬寅年到现在,一共八百一十年,平均每年是三百六十五天二十四刻二十五分,这二十五分就是现在历法里一年时间长度的剩余部分。

第三,咱们说说太阳的运行轨迹。利用至元丁丑四月癸酉日发生的月食,推算出太阳的运行轨迹。结果发现,冬至时太阳在赤道坐标系上位于箕宿十度,在黄道坐标系上位于箕宿九度,有点偏差。之后,我又每天测量太阳的运行位置,或者用星星来测月亮,或者用月亮来测太阳,或者直接用星星的位置来测太阳,建立了计算方法。从丁丑正月到己卯十二月,一共三年,总共有一百三十四次观测结果,都显示太阳位于箕宿,这和月食的观测结果一致。

第四,咱们说说月亮的运行轨迹。从丁丑年到现在,我每天都测量月亮每时每刻的运行位置,并推算出月亮在黄道上运行速度最慢、最快以及平行运行的位置。一共观测了十三次月亮的运行周期,总共五十一件事,去除不准确的,有三十件事的结果和《大明历》计算的月亮运行结果一致。为了验证日食,我又在《大明历》的基础上加了三十刻,这样就和实际的天象吻合了。

第五,咱们说说月亮交点。从丁丑五月开始,我每天都测量月亮到天极的距离,并与黄道到天极的距离进行比较,从而确定月亮轨道与黄道的交点。一共观测到八次,并且根据日食的规律推算,每次都有食发生,并且算出的时间和《大明历》算出来的差不多。

首先,咱们来说说二十八宿的距离。从汉朝的《太初历》开始,这二十八宿之间的距离就一直不太统一,各个历法都有增减,改来改去的。《大明历》呢,在度数的余数后面还加了个“太半少”之类的说法,都是个人主观臆断,并没有真正测量过。我们现在用的新仪器,把周天度分都刻画得很细致,一度分成了三十六分,用精确的距离线代替过去的粗略观察,二十八宿的度数和余数都是实测得来的,不再凭空猜测了。

接下来是每天日出日落和昼夜时间的计算。《大明历》计算日出日落和昼夜时间,都是以汴京为标准的,在别的地方就不准了,比如大都就不一样。我们现在根据本地北极星的高度、黄道出入的角度,制定了一个新的计算方法,算出每天的日出日落和昼夜时间。比如,夏至那天昼最长,日出是寅时正二刻,日落是戌时初二刻,白天是六十二刻,晚上是三十八刻;冬至那天昼最短,日出是辰时初二刻,日落是申时正二刻,白天是三十八刻,晚上是六十二刻。这些都是固定不变的。

我们这次改进的历法,主要有五个方面:第一,关于太阳的运行速度变化,我们用四个节气来确定太阳运行速度的升降界限,然后计算出每天太阳运行的起始和终止位置以及极差和累积度数,比以前更精确;第二,关于月亮运行的快慢,以前的历法都用二十八个限来计算,我们现在用八百二十分之一万分日为一个限,一共分成三百三十六个限,用叠加差值法计算月亮运行的快慢,这样就能精确到每个时刻月亮运行的速度,这在以前可是没有的;第三,关于黄赤道交角,以前的方法是用一百一度相减相乘,我们现在用的是勾股定理、弧矢、圆周率等数学方法计算黄赤道交角的度数和差值,计算结果与实际的天文观测结果非常吻合;第四,关于黄赤道内外度,我们根据多年的实测数据,得出黄赤道内外极度是二十三度九十分,然后用圆内接正方形、勾股定理等方法计算出每天与极点的距离,结果与实测数据相符;第五,关于月亮运行轨道与黄道的交点,以前的方法是根据黄道的变化推算月亮运行轨道的交点,方法比较间接,我们现在用浑天仪来测量,得到了月亮运行轨道与赤道正交时,与春秋分时黄赤道正交点相距十四度六十六分,以此为依据,推算出月亮运行轨道每个月与二十八宿的交点位置,这在理论上是比较完善的。

皇上给新历法赐名《授时历》。过了十八年,新的历法才在全国推行。到了十九年,郭守敬觉得推算历法的方法和最终得出的数据都不够完善,于是他又写了《推步》七卷、《立成》两卷、《历议拟稿》三卷、《转神选择》两卷、《上中下三历注式》十二卷,然后把这些书都呈献给了皇上。第二年,皇上又命令太子少保李谦,对郭守敬的《历议》稿子进行修改润色,好让大家更明白新历法遵循天理、符合实际的道理。

大德三年八月初一,那天是巳时,按照新历法预测,应该发生日食,而且时间还比较长。可是到了那个时候,日食并没有发生,天文台的官员们都吓坏了。保章正齐履谦说:“日食预测对了,但实际没发生,这种情况古书上也有记载,何况当时接近中午,阳气盛,阴气弱,日食不发生也是正常的。”然后他查阅了唐朝开元年间以来,预测有日食但实际上没发生的十个例子,向皇上做了汇报。六年六月初一,那天是戌时,新历法预测会发生日食,持续时间是五十七秒。很多人觉得时间太短,而且这事情不太光彩,想瞒报。但齐履谦说:“我负责的是天文历法,日食发生与否,这可是天意啊!”于是他独自向皇上报告了这件事,结果真的发生了日食。那些高深莫测的事情,必须经过长时间的反复验证才能看出端倪。《授时历》推算日食的方法,比以前十三种历法都要精确,但还是会有几分钟的误差。所以元朝这四十五次日食中,有一次预测有日食但没发生,有一次预测错了日食发生的时间,还有一次把夜间的日食错当成白天的日食了。齐履谦说日食发生与否系于天,这还是沿用了以前那些“预测有日食但没发生”、“预测没日食但发生了”的错误说法,真是太荒谬了!

泰定年间,齐履谦担任太史院使,发现《授时历》已经使用了五十年,从来没有进行过复核,于是他亲自测量日影,观察晨昏以及五星的运行轨迹,从至治三年冬至到泰定二年夏至,他发现实际的天文数据,比《授时历》记录的都要早两刻钟,于是撰写了《二至晷景考》两卷。虽然《授时历》有经文和注释,但经文只是记载了推算方法,注释只是记载了最终结果,至于方法的原理和结果的来源,却解释得不够详细。于是他又写了《经串演说》八卷,来解释《授时历》的原理。

赵友钦是鄱阳人,他深入研究《授时历》的原理,写了五卷本的《革象新书》,被认为是新历法的开山之作。他那篇《历法改革》里写道:“从古到今,历法已经有六十多种了,汉朝的《太初历》还算凑合,但还是粗糙,不够精确;唐朝一行和尚编制的《大衍历》,当时觉得很精确了,但现在看来,还是粗糙得很。原因是时间短的话,误差小,感觉不出来,时间长了,误差越积越大,不得不改。关键是要随时观测检验,才能得到准确的数据。”

他那篇《日道岁差》里写道:“《统天历》说,周天赤道是三百六十五度二十五分七十五秒,一年是三百六十五日二十四分二十五秒,一百年差一度半。但是它又说,一年之长也并非一成不变,古代一年天数多,后世一年天数少,这样一来,古代的岁差就小,后世的岁差就大。现在的历法沿用这种方法,设立增减闰年的规则,推算古代,一百年加一秒;推算未来,一百年减一秒。”

他那篇《黄道损益》里写道:“冬至和夏至那两天,太阳运行的黄道和赤道是平行的,黄道与赤道的夹角每一度大约是赤道的九十二分之九十。现在的《授时历》计算冬至时太阳在箕宿,由此可知,寅申两度的数值最小,己亥两度的数值最大,其余的数值则介于两者之间。”

他那篇《积年日法》里写道:“以前那些编历的人,是反过来推算古代的,说要从上元时期推算出总的天数,所以必须建立日法。但是,所谓截元法,只是把推算出来的数字按顺序算一遍,然后反过来推算,并不求得完全一致。现在的《授时历》采用旧历的截元法,但对积年日法,它却完全没采用。”

他那篇《日月盈缩》里写道:“月亮每月运行十三度多,还差十九分之七,但有时提前,有时延后,误差甚至达到四五度。东汉的刘洪第一个研究这个问题,知道了月亮有盈亏;隋朝的刘焯第一个发现太阳也有盈亏,盈亏最大时在春秋二分,误差有两度多。李淳风有推算月孛的方法,说它六十二天运行七度,六十二年运行七周天。所谓的‘孛’,是一种彗星,光芒偏斜的叫彗星,光芒四射像个圆球的叫孛星。但是,用月亮来命名孛星,是因为孛星所在的位置,是月亮运行最慢的地方;月亮在孛星的对面,运行速度最快。孛星不常见,只能根据月亮运行最慢的地方来推测它的位置。”

他那篇《月有九道》里写道:“月亮运行在黄道内侧和外侧,最远的地方离黄道六度二分。月亮的运行轨道和黄道有两个交点,交点开始的地方叫罗睺,交点中间的地方叫计都。从交点开始到交点中间,月亮在黄道外,叫阳限;从交点中间到交点结束,月亮在黄道内,叫阴限。所谓‘九道’,可以用图来解释,画四张图,每张图都画一个黄道,像一个圆环,环的南边是夏至,环的北边是冬至,环的西边是春分,环的东边是秋分。第一张图画一条青色的轨道,和黄道在南北两个方向相交,南交点是罗睺,北交点是计都,青色轨道的一边从黄道的西边进入,这是内青道,另一边从黄道的东边出来,这是外青道。第二张图画一条白色的轨道,也和黄道在南北两个方向相交,南交点是计都,北交点是罗睺,白色轨道的一边从黄道的东边进入,这是内白道,另一边从黄道的西边出来,这是外白道。第三张图画一条红色的轨道,和黄道在东西两个方向相交,东交点是计都,西交点是罗睺,红色轨道的一边从黄道的南边进入,这是内朱道,另一边从黄道的南边出来,这是外朱道。第四张图画一条黑色的轨道,也和黄道在东西两个方向相交,东交点是罗睺,西交点是计都,黑色轨道的一边从黄道的北边进入,这是内黑道,另一边从黄道的北边出来,这是外黑道。虽然画了四张图,但八条轨道其实是一条轨道。之所以说九道,是因为北边的轨道和黄道相交,所以用九来表示。八条轨道经常变化,不能放在浑仪上,也不能画在星图上,只有黄道和赤道可以画出来。为了区别于黄道,所以用红色来表示赤道。赤道附近的八条轨道都和赤道相交,距离远近不同,朱道最远十八度,黑道最远三十度,青白两道大约二十四度。”

他那篇《地域远近》里写道:“古代是用八尺高的表来测量四季日影的,在中原地区,夏至的影子在表的北边一尺六寸,冬至的影子在表的北边一丈三尺。到了南方交广地区和北方的铁勒地区,测量结果都不同。八尺高的表似乎太短了,元朝以后,表的高度是四丈,这才是万古不变的标准。所谓的土圭,古已有之,但是,由于地球是圆的,太阳和人的距离不同,影子移动的速度也不同,中午时太阳和人距离远,影子移动慢;早上和晚上太阳和人距离近,影子移动快。所以,各地土圭的刻度都是一样的,这怎么能避免午时侵占己未时辰,早晚时间都出现误差呢?中原地区已经这样了,如果用八个方向不同的地方来测量,土圭就更不准了。偏东的地方,早上的影子移动快,晚上的影子移动慢,中午的影子提前到来;偏西的地方,早上的影子移动慢,晚上的影子移动快,中午的影子推迟到来;偏北的地方,影子短而晚;偏南的地方,影子长而早。如果在南越地区,影子短而指向南方,子午线反复变化,那就更错了。”

他那篇《日月薄食》里写道:“太阳的圆形比较大,月亮的圆形比较小;太阳运行的轨道也比较大,月亮运行的轨道也比较小;太阳的轨道离天比较近,月亮的轨道离天比较远。太阳和月亮的大小和运行轨道,虽然略有差异,但是月亮离人近,太阳离人远,所以看起来月亮的大小和太阳的轨道差不多大。日食月食,应该用天球的经纬度来推算,经度相同而纬度不同,就叫合朔;经度和纬度都相同,合朔的时候就会发生日食或月食。人们看到太阳被月亮的黑影遮挡,所以叫日食,其实太阳本身并没有受到损害,所谓‘食’,只是个说法而已。太阳和月亮相对运行,如果不在两个交

总而言之,方形是数的开始,圆形是数的终结,圆形起源于方形,方形最终归于圆形,天文学的计算方法,都离不开这个道理。

友钦先生对历法原理讲解得特别透彻,尤其对《授时历》的理解非常深刻,他还把自己的学问传给了龙游人朱晖。元朝时期,那些不是历官却精通历法的人,只有友钦先生一位而已。“要之,方为数之始,圆为数之终,圆始于方,方终于圆,周髀之术无出于此矣。”