首先,咱们算算太阳和行星的位置。用太阳的运行速度减去行星的运行速度,剩下的部分,如果能被太阳运行速度整除,就得到一个整数,然后按照之前的计算方法,就能算出行星出现时和太阳的距离。 用行星运行速度的分母乘以刚才算出来的距离,剩下的部分,如果能被太阳运行速度整除,就得到一个整数;如果除不尽,超过一半就也当作一个整数。然后把这个整数加到行星的运行速度上,如果加到等于行星运行速度的分母,就相当于行星运行了一度。顺行和逆行的时候,分母不一样,所以要根据当时的运行速度的分母,乘以之前算出来的数值,再除以原来的分母,才能得到正确的行星运行速度。 剩下的部分就继承之前的计算结果,如果是逆行就要减去。如果算出来的度数不够,就要用斗宿(二十八宿之一)来除以这个数值,以行星运行速度的分母为基准,这样计算出来的数值会有增减,前后要互相校正。总之,那些什么“盈”、“约”、“满”之类的说法,都是为了求得精确的除法结果;而“去”、“及”、“除”这些,则是为了求得尽数的除法结果。

接下来,咱们看看木星的情况。木星早上和太阳在一起,然后开始伏行(逆行),顺行需要16天,运行距离是1742323分,行星运行2度323467分,然后在东方出现,落后于太阳。顺行速度快,每天走58分之11,58天走11度。再顺行,速度慢了,每天走9分,58天走9度。然后停止运行,25天后又开始运行。逆行时,每天走7分之1,84天后退12度。然后又停,25天后开始顺行,每天走58分之9,58天走9度。顺行速度快,每天走11分,58天走11度,这时它在太阳前面,傍晚在西方落下。16天后,运行距离是1742323分,行星运行2度323467分,然后又和太阳会合。一个周期结束,一共是398天3484646分,行星运行43度2509956分。

太阳:早上跟太阳一起出现,然后就潜伏起来了。它运行的轨迹是:先顺行71天,走了1489868分,行星走了55度242860.5分,然后早上在东方出现,在太阳后面。顺行的时候,每天走23分之14,184天走112度。再顺行,速度慢一些,每天走23分之12,92天走48度。然后停下来,十一天不动。接着反向运行,每天走62分之17,62天倒退17度。再次停下来,十一天后又开始顺行,每天走12分,92天走48度。再次顺行,速度快了,每天走14分,184天走112度,这时它在太阳前面,傍晚在西方落下。71天,走了1489868分,行星走了55度242860.5分,然后又跟太阳一起出现。这样一轮周期下来,一共是779天973113分,行星走了414度478998分。

土星:早上跟太阳一起出现,然后就潜伏起来了。它运行的轨迹是:先顺行16天,走了1122426.5分,行星走了1度1995864.5分,然后早上在东方出现,在太阳后面。顺行的时候,每天走35分之3,87.5天走7.5度。然后停下来,34天不动。接着反向运行,每天走17分之1,102天倒退6度。又过了34天后开始顺行,每天走3分,87天走7.5度,这时它在太阳前面,傍晚在西方落下。16天,走了1122426.5分,行星走了1度1995864.5分,然后又跟太阳一起出现。这样一轮周期下来,一共是378天166272分,行星走了12度1733148分。

金星啊,它早上跟太阳会合的时候,先“伏”,也就是逆行,五天倒退四度,然后早上就能在东方看到它,在太阳后面。继续逆行,每天走五分之三度,十天倒退六度。然后它“留”,停了八天不动。接着“旋”,也就是转向顺行,速度慢些,每天走四十六分之三十三度,四十六天走三十三度,开始顺行了。速度加快,每天走一度九十一分之十五,九十一天走一百六度。 更顺更快了,每天走一度九十一分之二十二,九十一天走一百一十三度,这时它在太阳后面,早上出现在东方。 最后顺行四十一天,走了五万六千九百五十四分之一圈,行星也走了五十度五万六千九百五十四分之一圈,又和太阳会合了。一次会合,一共是二百九十二天五万六千九百五十四分之一圈,行星也是同样的运行轨迹。

金星晚上跟太阳会合的时候呢,先“伏”,这次是顺行,四十一天走五万六千九百五十四分之一圈,行星走了五十度五万六千九百五十四分之一圈,傍晚就能在西方看到它,在太阳前面。然后继续顺行,速度加快,每天走一度九十一分之二十二,九十一天走一百一十三度。速度又加快了,但减慢了加速度,每天走一度十五分,九十一天走一百六度,继续顺行。速度慢下来,每天走四十六分之三十三度,四十六天走三十三度。然后“留”,停了八天不动。“旋”,转向逆行,每天走五分之三度,十天倒退六度,这时在太阳前面,傍晚出现在西方。“逆”,速度加快,五天倒退四度,最终又和太阳会合了。两次会合算作一个周期,一共是五百八十四天十一万三千九百八分之一圈,行星也是同样的运行轨迹。

水星呢,它早上跟太阳会合的时候,先“伏”,逆行,九天倒退七度,然后早上就能在东方看到它,在太阳后面。继续逆行,速度加快,一天倒退一度。“留”,停了二天不动。然后“旋”,转向顺行,速度慢些,每天走九分之八度,九天走八度,开始顺行了。速度加快,每天走一度四分之一,二十天走二十五度,这时它在太阳后面,早上出现在东方。最后顺行十六天,走了六百四十一万九千六十七分之一圈,行星也走了三十二度六百四十一万九千六十七分之一圈,又和太阳会合了。一次会合,一共是五十七天六百四十一万九千六十七分之一圈,行星也是同样的运行轨迹。

夕阳和太阳同时落下,然后太阳运行,按顺序,十六天走过三百六十四万九千六百六十七分之一圈,也就是三十二度三百六十四万九千六百六十七分之一度,这时傍晚就能在西方看到它,在太阳前面。运行速度快的时候,一天走一度四分之一,二十天走二十五度。运行速度慢的时候,一天走八分之七度,九天走八度。停滞的时候,两天不动。反向运行的时候,一天倒退一度,在太阳前面,傍晚在西方落下。反向运行速度慢的时候,九天倒退七度,然后和太阳同时落下。总共两次同时落下算作一个周期,一共是一百一十五天六百一万二千五百五分之一天,行星也是这样。

计算太阳运行剩余度数加上星体与太阳会合的剩余度数,剩余度数达到日度法的一整圈,就按之前的方法计算,就能得到星体出现的时间和剩余度数。用星体运行的分母乘以看到的度数,如果结果等于日度法的一整圈,分母除不尽,超过一半也取一整圈,然后加上运行的度数,度数达到分母就等于一度。正向和反向运行的分母不一样,用当时的运行分母乘以剩余度数,如果结果等于原来的分母,就是当时的运行度数。停滞的时候继承之前的度数,反向运行的时候就减去,如果度数不够一整圈,就除以斗分,用运行分母作为比例。度数会有增减,前后相互制约。

武帝的侍中平原刘智,用斗历修改了历法,推算出《四分法》,三百年减少一天,用一百五十作为度数的法则,三十七作为斗分。推算出甲子为上元,到泰始十年,岁在甲午,一共是九万七千四百一十一岁,上元天正甲子朔夜半冬至,日月五星开始于星纪,得到了元首的起点。用一些虚夸的说法装饰它,命名为《正历》。

当阳侯杜预著有《春秋长历》,书中说:

日行一度,月行十三度十九分之七有奇,负责天文历法的官员应该把月亮运行的快慢计算在内,以此来推算朔望,设置闰月。闰月没有中气,而北斗星的指向在两辰之间,所以和其他的月份不同。积累这些数据互相联系,四时八节就不会有偏差,才能构成一年,其精细程度达到了极致。能够掌握其精微之处,符合天道,那么事情就能按顺序进行而不会出错。所以《春秋》说:“闰月是为了改正时间,时间是为了安排事情。”然而阴阳的运行,会随着运动而产生差异,差异不断积累,最终和历法产生偏差。所以孔子和丘明经常在朔日和闰月写文章,大概是为了纠正得失,借此来阐明历法。

刘子骏弄了个《三正历》来研究《春秋》,算出来日食有甲乙两种情况的共有34次,可他的《三正历》只算对了一次,跟其他人的结果比起来,差得最远。而且,他的历法还说每6000多年要多加一天,一年一年地累积下来,这日子就越来越不对了,这简直是太离谱了!

自古以来,好多研究《春秋》的人都搞错了,要么是自创一套方法,要么是用黄帝时代以来的各种历法来推算经文中记载的朔日(农历每月初一),结果都对不上。日食发生在朔日,这是天象的验证,《春秋经传》里也记载了这些朔日发生的日食,这说明《春秋》的记载是符合天象的。可是刘向、贾逵这些儒生,却偏偏说日食发生在每月二号或者三号,他们违背了圣人的明确记载,问题就在于他们死守一种历法,不肯根据天象来调整。

我因为《春秋》里的这些事儿,写过一篇《历论》,详细解释了历法的道理。我的主要观点是:天体运行永不停息,日月星辰各自运行在自己的轨道上,都是运动着的物体。运动的物体,它的状态不可能完全一样,虽然运行的规律和速度大体上可以确定,但一年一年、一月一月地累积下来,总会有细微的差别,这是自然规律。所以,《春秋》里记载的日食,有的年份很多,有的年份好几年都没有,这很正常,不能用一个固定的数字来解释,所以历法总会有先后之差。一开始的误差可能很小,几乎感觉不到,但时间长了,误差就会越来越大,导致朔望日和晦朔日(农历每月最后一天)的推算出错,这时就不得不修改历法来适应实际情况。《尚书》说“钦若昊天,历象日月星辰”,《易经》说“治历明时”,意思就是要顺应天象来制定历法,而不是为了验证天象而制定历法。根据这个道理,春秋二百多年间,历法的调整和变化肯定很多。即使古代的算法失传了,我们也可以从《春秋经传》中找到一些蛛丝马迹,推算出大概的情况。那些历法推算错误的地方,《春秋经传》里就有验证。所以研究《春秋》的人,就应该仔细地根据《春秋经传》中记载的月日和日食来考证晦朔,来推断当时的日期;可他们偏偏不这样做,各执己见,用自己的方法来推算《春秋》的历史,这就好比量自己的脚来做鞋子,却要削别人的脚来适应鞋子一样。

我写完《历论》之后,到了咸宁年间,有两个擅长计算的人,李修和卜显,他们根据我的《历论》的理论,创造了一种新的历法,叫做《乾度历》,然后把它呈献给了朝廷。这个历法计算太阳每天运行的度数是四分之一度,还略微增加了月亮运行的度数,它采用三百年的周期来调整历法,用二元法推算,七十多年后,再根据盈亏的强弱来调整,强弱的差别很小,但足以保证长期计算的准确性。当时,尚书和史官们把《乾度历》和当时的《泰始历》拿来一起,对照古代的记录进行校对,结果发现《乾度历》比《泰始历》要好很多,比官方使用的历法准确了四十五处。现在这个历法的计算方法都还保存着呢。我们还把古代和现代的十种历法都拿来验证《春秋》的记载,发现《三统历》的误差最大。

《春秋》一共记载了七百七十九次日食,其中《经》三百九十三次,《传》三百八十六次,一共记录了三十七次日食,其中三次没有记载甲乙(指日食发生的具体日期)。

《黄帝历》记载了四百六十六次日食,只有一次日食的记录。

《颛顼历》记载了五百九十次日食,有八次日食的记录。

《夏历》记载了五百三十六次日食,有十四次日食的记录。

《真夏历》(宋仲子修正后的夏历)记载了四百六十六次日食,只有一次日食的记录。

《殷历》记载了五百零三次日食,有十三次日食的记录。

《周历》记载了五百六十次日食,有十三次日食的记录。

《真周历》(宋仲子修正后的周历)记载了四百八十五次日食,只有一次日食的记录。

《鲁历》记载了五百二十九次日食,有十三次日食的记录。

《三统历》记载了四百八十四次日食,只有一次日食的记录。

《乾象历》记载了四百九十五次日食,有七次日食的记录。

《泰始历》记载了五百一十次日食,有十九次日食的记录。

《乾度历》记载了五百三十八次日食,有十九次日食的记录。

现在通用的《长历》记载了七百四十六次日食,有三十三次日食的记录,这里面少了三十三次,是《经传》记载有误;另外还有四次日食的记录,其中三次没有记载甲乙。

汉朝末年,宋仲子收集了七种历法来考证《春秋》的记载,发现夏历和周历的计算方法,跟《艺文志》上记载的不一样,所以他把它们改名为《真夏历》和《真周历》。

穆帝永和八年,著作郎琅邪王朔创造了一种新的历法,叫做《通历》,他以甲子为上元,计算周期为九万七千年,用四千八百八十三为纪年方法,用一千二百五为斗分(指二十八宿的度数),他认为这个上元是开天辟地之初。

话说西晋灭亡后,后秦姚兴当政的时候,公元404年(东晋孝武帝太元九年,甲申年),天水人姜岌编写了一部叫做《三纪甲子元历》的历法书。书里大概这么说的:“要制定历法,首先必须精确地掌握日月运行的规律,这样才能推算出天象变化,了解地上的物候变化。如果一开始就弄错了,那四季就会错乱。所以孔子编写《春秋》,是按照一日一日、一月一月、一季一季、一年一年的顺序来记载的,这说明了解天象变化是处理人事的基础,所以历来帝王都非常重视它。从伏羲氏开始,到汉魏时期,历代都制定过自己的历法,力求精确。要检验历法的准确性,主要看它对日月交会和日食的推算是否准确。但是,古代文献记载中,只有《春秋》详细记载了日食的现象,从隐公到哀公,一共242年间,记载了36次日食,但我们不知道《春秋》是用什么历法来推算这些日食的。班固认为《春秋》是根据鲁国的历法编写的,而鲁国的历法不准确,所以闰月安排得乱七八糟。鲁国历法把闰余一年作为纪元开始,但检查《春秋》的闰月安排,却和鲁国历法的纪元对不上。 《命历序》里说:孔子为了编写《春秋》,重新研究了殷商时期的旧历法,使它的计算方法能够流传后世。这样看来,《春秋》应该用殷历来校正。

但是,我们现在用殷历来推算《春秋》中记载的日月交会,发现很多时候和殷历对不上。用殷历来校对《春秋》,很多朔日(每月初一)都和《春秋》记载的日期对不上,有的比《春秋》早一天,有的晚一天。《春秋》的经文和传文记载的朔日也不一样,从道理上讲,可以取其一,但是经文有日食的验证,传文却错了。服虔解释说《春秋》传文用的是太极上元历法,太极上元历是刘歆制定的《三统历》的纪元,这怎么能用在《春秋》上呢?用汉朝的历法来解释《春秋》,是不是太牵强了?《春秋》传文有很多错误,不止这一件事。襄公二十七年十一月乙亥朔日发生日食,《春秋》传文说:“辰星在申位,司历官失职,两次安排闰月都错了。”但是,根据推算,日月交会确实应该在这个月,根本没有两次安排闰月出错的情况。刘歆的历法和《春秋》记载的日食,只有一次朔日相符,其余的都相差两天。刘歆还附会了《五行传》中的说法,说春秋时期诸侯们大多失政,所以月亮运行总是比较慢。刘歆不认为是历法本身有问题,却编造了这种奇怪的解释。日食这种现象是天象的直接验证,刘歆却用自己的历法否定它,这是冤枉天象,误导后世啊!

杜预也认为,周朝衰败,天下大乱,学者们都无法掌握真正的历法,现在流传的七种历法,未必都是当时帝王使用的。现在我们用这七种历法来推算古代和现代的日月交会,发现都不准确,这都是因为斗分的数值不同造成的。《殷历》的斗分是四分之一,《三统历》是1539分之385,《乾象历》是589分之145,《景初历》是1843分之455,这些历法的斗分大小不同,计算方法也不一样。《殷历》的斗分太粗,所以不适用于现在;《乾象历》的斗分太细,所以不适用于古代;《景初历》的斗分虽然比较适中,但是太阳的位置却差了四度,日月食的推算结果也都不准确。比如,如果太阳在东井星附近发生日食,用月球的位置来推算,却在参宿附近,相差这么大,怎么能用来推算天象和人事呢?

现在我制定了一种新的历法,斗分是2451分之605,太阳在斗宿十七度,这是天象的起始点,既可以用来推算《春秋》中的日食,也可以用来验证现在的天象。用这种历法来推算《春秋》中记载的36次日食,有25次是准确的,有2次相差一天,有2次是发生在月底,有5次有误差,总共34次是比较准确的,其余两次经文中没有记载日食发生的具体日期,所以无法验证其准确性。各种图纬书都记载:“三百岁斗历改宪”。

要是把咱们现在用的这种新历法放到春秋时代去用,日食大多发生在朔日(农历初一)。从春秋时代到现在,已经一千多年了,日食的发生总是围绕着朔望(农历初一和十五)前后三次日食的范围里变化。所以说,这个方法可以永远用下去,哪像以前那种三百多年就要改一次历法的麻烦事啊!

你看,咱们现在用的历法,如果放到春秋时代去试试,大部分日食都会发生在农历初一。从春秋时代到现在,已经过去一千多年了,日食出现的时间,总是会在农历初一和十五前后那三次日食的时间范围内波动。所以,这个历法可以一直用下去,不像以前那种每隔三百多年就要改一次历法的制度那么麻烦。

从甲子上元开始,到鲁隐公元年己未年,一共过了八万二千七百三十六年。再算到晋孝武太元九年甲申年,一共过了八万三千八百四十一。

元法是七千三百五十三;纪法是二千四百五十一;总共是十七万九千四十四。日法是六千六百二;月周是三万二千七百六十六;气分是一万二千八百六十;元月是九万九千四十五;纪月是三万三百一十五;没分是四万四千七百六十一;没法是六百四十三;斗分是六百五;周天是八十九万五千二百二十(也叫纪日);章月是二百三十五;章岁是十九;章闰是七;岁中是十二;会数是四十七(日月八百九十三岁,一共四十七会,正好分完);气中是十二。

甲子纪的交差是九千一百五十七;甲申纪的交差是六千三百三十七;甲辰纪的交差是三千五百一十七;周半是一百二十七;朔望合数是九百四十一;会岁是八百九十三;会月是一万一千四十五;小分是二千一百九十六;章数是一百二十九;小分是二千一百八十三;周闰大分是七万六千二百六十九;历周是四十四万七千六百一十(半周天);会分是三万八千一百三十四;差分是一万一千九百八十六;会率是一千八百八十二;小分法是二千二百九;入交限是一万一百四;小周是二百五十四;甲子纪的差率是四万九千一百七十八;甲申纪的差率是五万八千二百三十一;甲辰纪的差率是六万七千二百八十四;通周是十六万七千六十三;周日日余是三千三百六十二;周虚是二千七百一。

这段文字记录了一系列天文历法计算的结果,包括各种不同的纪年法、周期和数值,展现了古代天文历法计算的复杂性和精确性。 这些数字代表着古代天文学家对时间和宇宙运行规律的深刻理解和精密的计算能力。

咱们先说这“五星约法”。这方法呢,是根据实际观测到的结果来确定的,不是死板地套用以前的理论。你看啊,计算星体运行的起始点,那得追溯到很久以前;而咱们现在用的简化算法,则是根据实际情况来调整的。两种方法各有各的好处,所以作者才都写出来了。

这哥们儿还厉害呢,他用月食来检验太阳运行的度数,这可是历法研究者的标杆啊!他还写了本《浑天论》,用精确的计算来确定太阳在黄道上的位置,纠正了以前儒家学者的一些错误,算是把这事儿给彻底搞明白了。“五星约法,据出见以为正,不系于元本。然则算步究于元初,约法施于今用,曲求其趣,则各有宜,故作者两设其法也。岌以月蚀检日宿度所在,为历术者宗焉。又著《浑天论》,以步日于黄道,驳前儒之失,并得其中矣。”