明天历的修订,是从嘉祐年间后期开始的。英宗皇帝登基后,命令殿中丞兼司天监判官周琮,以及司天监的王炳、王栋、周应祥、周安世、马杰几位官员,还有灵台郎杨得言一起编制新历法。他们花了三年时间才完成。周琮说:“旧历的气候节气时间都加多了半天;五星运行的计算也差了半个周期;日食预测的时间也差了十刻钟。”

后来,司天监中官正舒易简和监生石道、李遘又提出了他们的看法。于是皇帝下令让翰林学士范镇、各王府侍讲孙思恭、国子监直讲刘攽来审查这些说法,并参考《尚书》里“辰弗集于房”的记载和《春秋》里关于日食的记载,对照现在历法的预测结果来进行判断。结果发现舒易简他们提出的东西太粗糙,根本不能用,而新编的历法却非常精密。于是皇帝赐名这部新历法为《明天历》,并请翰林学士王珪写序言,周琮也写了一篇说明历法原理的文章放在前面。下面是《明天历》的具体算法:

调日法(朔余、周天分、斗分、岁差、日度母附)

编制历法,首先要确定一个起始点,也就是历元。确定了历元之后,才能制定计算日期的算法。算法确定后,再计算周天(即黄道一周的度数),并确定节气、中气。这三点确定了,历法也就完成了。日期的计算,是通过累积余数得到的;度数的计算,是通过累积积分得到的。日月运行的起始点不同,最初运行产生的度数也不同,这些度数累积起来就形成了日期。从《四分历》到古代的其它六种历法,都用940作为日法(一天的度数)。按照每天运行一度的速率,经过365又四分之一天,就完成了一周天;月亮每天运行13又七十九分之七度,大约29天多一点就和太阳会合,这就是朔日。史官的任务就是把日月运行的情况综合起来,计算出朔日。

从汉朝的太初历到现在,冬至的日期已经差了十天。像刘歆的《三统历》就比古代的历法偏差更大,所以古代的学者认为它是最不准确的。东汉的刘洪检验过《四分历》,发现它和天象不符,于是就减少了朔余(朔日与上一个朔日之间的天数),勉强凑合着用。从那时起,人们编制历法就只是随意地增减数据。宋朝的何承天又用四十九分之二十六作为较大的速率,用十七分之九作为较小的速率,在两者之间寻找日法。何承天的日法是752,相当于十五个较大的速率加一个较小的速率。此后,编制历法的人,都沿用何承天的方法,不断累加较大和较小的速率,却没有人明白日月运行本身就存在着自然合会之数。

现在我稍微明白之前的错误了,重新制定历法,用三万九千作为日法,六百二十四万作为度母,九千五百作为斗分,二万六百九十三作为朔余。这样既能追溯到古代,又能符合现代的观测结果,反复推算,都非常精确。

我又用二百三十万一千作为月运行的余数(月行十三度之余),一百六十万四百四十七作为日运行的余数(日行周天之余)。然后把日月运行的盈亏进行平衡,把盈数和不足的数加起来,这就是一个朔日的算法(日法,也叫元法)。现在用大月乘以不足的数,用小月乘以盈余的数,把它们加起来平均,这就是一个朔日的实际数值(周天分)。用算法来推算实际数值,就能得到日月相会的天数,用相同的数约分,就能得到现在我们使用的数值(盈数是朔虚,不足的数是朔余)。再用两种算法相乘得到本母,各个本母互相相乘,再减去周天数,剩下的就是岁差,同样用相同的数约分,就能得到岁差、度母、周天实际使用的数值。这个方法,道理非常精妙,所谓反复推求,相互关联,数字冥冥之中自有其规律,方法也恰好符合,古代的历法家都没有达到这种水平。(用相同的数约分,得到三万九千为元法,九千五百为斗分,二万六百九十三为朔余,六百二十四万为日度母,二十二亿七千九百二十万四百四十七为周天分,八万四百四十七为岁差。)

岁余是九千五百。(古历叫它斗分。)古人用周天三百六十五度又四分之一度,这就是斗分。能够在中间找到正确的数值,上溯到古代,下验于当代,反复推算,符合实际,然后才能施行于几百年,成为不会改变的方法。后来制定历法的人,测量现在冬至日的日影长度,用来校正古代的方法,发现有盈余,就用万作为母数,推算各种节气的数值,把二千五百以下、二千四百二十八以上的数值作为平均数值。新历的斗分是九千五百,用万来平均,得到二千四百二十五,略有盈余,得到了平均数值。而三万九千年冬至日的剩余天数是九千五百天,满朔的实际天数是一百一十五万一千六百九十三天,年数和日数相等,节气和朔日相合。

咱们先说一年的天数,也就是岁周。这怎么算呢?用14244500(元法)乘以365(一年天数),再减去9500(内斗分),算出来的结果就是一年有多少个日分,所以叫它岁周。 括号里的那句,意思是如果把这总数平均分成24份,每一份是15天,还余下8520秒,也就是15秒,这是算一气(节气)的方法。

接下来是朔实,也就是一个朔望月的天数。这个数是1151693。它是根据日月运行规律算出来的,盈亏互相抵消后,还剩2693,这叫朔余,具体算法在调日法术里。这个朔余,是四象全策余数的总和。现在,我们用元法乘以四象全策的总数29,把它们加起来,就得到一个朔望月的实际天数。古代历法用一百万来平均朔余,得到的结果在536000到536570之间,这是个平均值。新的历法用一百万来平均,算出来是535589,也是个平均数。括号里的意思是:如果把这个数平均分成四象,每份是7天,还余下14923秒。这是算弦(上弦、下弦)的方法。

然后是中盈分和朔虚分,这两个跟闰余有关。日月合朔是历法的起点,节气是以斗建(斗柄指向)为准。所以,节气运行中会有盈余,这就是中盈分。我们把两个节气之间的天数,用一个月的天数30减去,每次到中气的时候,就剩下17040秒(12秒),这就是中盈分。反过来,朔望月运行中也会有不足,这就是朔虚分。我们用一个月的天数30,减去朔策和朔余,剩下的18370秒,就是朔虚分。把中盈分和朔虚分加起来,就是闰余,一共是35345秒(13秒)。这些盈余和不足,都是根据日月运行的规律得来的。

最后是纪法,也就是六十。这数字从《易经》里来的。《乾卦》的爻数是九,《坤卦》是六,《震》、《坎》、《艮》三卦都是七,《巽》、《离》、《兑》三卦都是八。把八卦的爻数加起来,一共是六十,也就是六旬。纪,意思是终结,数到六十,八卦就走完一个循环,所以叫纪法。

好家伙,这说的啥玩意儿?咱一句一句掰扯掰扯。

“天正冬至:大余五十七,小余一万七千。” 意思就是说,算冬至那天,大余是57,小余是一万七千。这大余小余是啥玩意儿?咱先别管,反正就是两个用来算冬至的数字。

“先测立冬晷景,次取测立春晷景,取近者通计,半之,为距至泛日;” 先测量立冬那天的日影长度,然后测量立春那天的日影长度,挑个跟冬至更接近的,把这两个长度加起来,再除以二,得到一个“距至泛日”的数值。这“距至泛日”大概就是离冬至还有多少天的意思吧。

“乃以晷数相减,余者以法乘之,满其日晷差而一,为差刻;乃以差刻(求冬至,视其前晷多则为减,少则为加,求夏至者反之。)加减距至泛日,为定日;仍加半日之刻,命从前距日辰,算外,即二至加时日辰及刻分所在。” 然后呢,用这两个日影长度相减,剩下的数再用某个方法(这“法”具体啥意思咱不懂)乘一下,算出一个“差刻”。这个“差刻”要加到或者减去刚才算出来的“距至泛日”,才能得到准确的冬至日期。具体加还是减,要看立冬的日影长短,跟夏至相反。最后还要加上半天的时间,算出冬至的具体时刻。

“如此推求,则加时与日晷相协。今须积岁四百一年,(治平元年甲辰岁,气积年也。)则冬至大、小余与今适会。” 这么算下来,就能让计算出来的冬至时间和日影长度匹配上了。 要想得到现在这个大余和小余的值,得从治平元年(甲辰年)算起,积累了401年。

接下来是关于朔日的计算:

“天正经朔:大余三十四,(小余三万一千。闰余八十八万三千九百九十。)” 这回是算朔日(农历初一)了,大余是34,小余是三万一千,闰余是八十八万三千九百九十。 这几个数字又是用来算朔日的。

“此乃检括日月交食加时早晚而定之,损益在夜半后,得戊戌之日,以方程约而齐之。” 这些数字是根据日月食发生的时间推算出来的,调整是在半夜之后进行的,最终算出是戊戌日,再用某种方法(方程)进行调整。

“今须积岁七十一万一千七百六十一,(治平元年甲辰岁,朔积年也。)则经朔大、小余与今有之数,偕闰余而相会。” 要得到现在这些大余、小余和闰余的值,得从治平元年(甲辰年)算起,积累了711761年。

总之,这段文字描述的是一种古代天文历法计算方法,涉及到很多专业术语,我们现在很难完全理解其具体计算过程。但大体上,它描述了通过观测日影长度和日月食来推算冬至和朔日的方法,以及需要积累多年的数据才能得到现在使用的数值。

咱先说这岁差的事儿。古书上说,用正南方的星星来确定方向,这是古代帝王用来确定时间、教化百姓、奉行天道的办法。不过,古人对岁差的解释说法不一。虞喜说,尧的时候,冬至那天太阳在星宿昴的位置,现在过了两千七百多年,太阳跑到东壁星宿附近了,由此可以知道每年太阳的位置都会慢慢变化。何承天也说,《尧典》里记载:“太阳最长的时候,星宿火正值仲夏;夜晚最长的时候,星宿虚正值仲秋。”现在用中星来校对,发现差了二十七八度,也就是说,尧的时候冬至,太阳在须女星附近十度的位置。所以祖冲之修订《大明历》的时候,第一次正式确定了岁差,计算出大约四十五年九个月,太阳的位置会退后一度。虞邝、刘孝孙等人也根据这个继续研究,各自做了些调整,提出了新的方法。如果按照虞喜的观察,太阳在昴宿的位置,大约五十年太阳会退后一度;如果按照何承天的观察,太阳在火宿的位置,一百年内太阳还不到退后一度。后来《皇极历》综合了这两个历法的计算结果,取了个平均值,大约七十五年太阳退后一度,这虽然抓住了主要意思,但还没完全精确。现在我们重新计算,确定了新的岁差数值,大约七十七年七个月,太阳退后一度,上元节的星宿在虚宿九度,这样就能把过去和现在都联系起来了。从尧帝时代以来,经过反复验证,新历的岁差计算结果最准确,最接近实际情况。

接下来咱们说说周天度数的事儿。周天一共是二十二亿七千九百二十万四百四十七度。这个数字是根据日月运行规律,推算出朔日(农历初一)而得来的。(这是在调整日法中的计算方法)。我们既参考了古代仲康时期房宿和宿交的记录,又验证了姜岌时期月食的现象,经过三十年的观测,结果跟计算结果非常吻合,所以新历的周天度数,跟实际情况非常接近,非常精确。

老黄历算日子,讲究个盈亏变化,说法还挺多。张胄玄管这叫“盈缩数”,刘孝孙又把它叫“朏朒积”。你看《皇极历》里说“陟降率”、“迟疾数”,《麟德历》说“先后”、“盈缩数”,《大衍历》说“损益”、“朏朒积”,《崇天历》说“损益”、“盈缩积”。 古时候算日子,要是月亮一会儿早上在东边出现,一会儿晚上在西边出现,史官就管这叫“朏朒”。现在咱们算日子,就根据太阳月亮运行的快慢变化,调整日子,让朔日(农历初一)更准确。 这快慢变化是自然规律,不是算错了。新历法用7100作为盈亏的极限值,这个数字和月亮的运行轨迹有关,用“损益”、“盈缩”来命名,简洁明了。

接下来说说日升日落的问题。《皇极历》里讲到太阳运行的衰旺有“陟降率”,《麟德历》用日影长短变化、 “陟降率”、日晷的影长变化来计算,这和漏刻(古代计时工具)的原理是一样的。 过了冬至之后,太阳运行逐渐上升,离北极点近了,所以日影短,万物开始生长茂盛;过了夏至之后,太阳运行逐渐下降,离北极点远了,所以日影长,万物开始慢慢衰败。从《大衍历》以后,都沿用《麟德历》的方法。现在咱们的历法,就是根据太阳每天运行的升降变化,累积起来,算出盈亏的。

话说汉朝一百多年的时候,就开始研究制定历法了。那时候,人们就确定了东西方向,还造了日晷和漏壶,用来观测二十八宿在天空中的位置和距离。赤道宿度,就是当时测算出来的结果。具体来说,斗宿是26度又几分,牛宿8度,女宿12度,虚宿10度,危宿17度,室宿16度,壁宿9度,奎宿16度,娄宿12度,胃宿14度,昴宿11度,毕宿16度,觜宿2度,参宿9度,井宿33度,鬼宿4度,柳宿15度,星宿7度,张宿18度,翼宿18度,轸宿17度,角宿12度,亢宿9度,氐宿15度,房宿5度,心宿5度,尾宿18度,箕宿11度。后来的历法都沿用这个数据。

到了唐朝初期,李淳风造了浑天仪,也没对这些数据进行修改。开元年间,一行和尚编制了《大衍历》,皇帝还让梁令瓒制作了黄道游仪,重新测量了毕、觜、参、鬼四宿的赤道宿度,结果和以前的不一样了。(新的数据是:毕宿17度,觜宿1度,参宿10度,鬼宿3度。)从一行和尚之后,大家就一直沿用他的数据,即使过了五代十国,也没什么变化。

直到宋仁宗皇祐年间,才重新下令制造黄道浑天仪,用铜铸造的。后来再次测量赤道宿度,又发现有十四个星宿的数据和一行和尚测量的不同。(新的数据是:斗宿25度,牛宿7度,女宿11度,危宿16度,室宿17度,胃宿15度,毕宿18度,井宿34度,鬼宿2度,柳宿14度,氐宿16度,心宿6度,尾宿19度,箕宿10度。)其实啊,古人用八尺大小的圆形仪器就想测量整个天体,这本身就很难做到准确。更何况,古代的星图和观测方法也存在误差,所以现在测量的赤道宿度和古代的不一样,也就不足为奇了。

从汉朝太初年间到唐朝开元年间,八百年里历法都没怎么改动过。现在虽然测量结果和以前不一样,但时间也不长。新的历法里两种数据都保留了,就像李淳风那样,沿用了旧的数据。

咱们先说说这个“月度转分”。《洪范传》里说啊,月亮晦暗之后,在西方出现叫“朏”,这时候月亮还没合朔,应该在太阳后面,可现在跑到前面来了,速度太快了!这“朏”啊,象征着君主宽松,臣下骄横专权。要是月亮合朔后,在东方出现叫“侧匿”,合朔就意味着月亮和太阳重合,现在却在太阳后面,这速度太慢了!“侧匿”呢,象征着君主严厉,臣下危急恐惧。月亮盈亏圆缺,运行九个星宿,周期三十天,观察它的变化规律,自有它固定的数字。书上说,君主有宽松严厉的变化,却没意识到月亮也有快慢的规律。东汉的刘洪大概懂了一点皮毛,后来算历法的人,都沿用老办法,计算月亮快慢的差异,调整朔日的平分,等到月亮追上太阳,就确定朔日。至于时间早晚,快慢不同,都是因为转分强弱造成的。以前的历法计算转分,用九分之五作为强率,一百一分之五十六作为弱率,在强弱之间寻找精确值。新的历法,转分是二百九十八亿八千二百二十四万二千二百五十一,除以一百万,得到二十七日五十五万四千六百二十六,这才是最平均的数字。旧历法是先算出剩余的天数,再计算朏和朒的数值,结果乱七八糟的。现在按照这个度数来算,快慢就逐渐有规律了,月亮的推算结果,也更符合天象了。

接下来咱们说说“转度母”。(转法、会周附。)它原本是用朔日分来计算周天,这就是会周。(一朔之月常度也,名周本母。)减去朔差就是转终。(朔差乃终外之数也。)用相同的数字约分,就能得到实用的数字。然后用相同的数字约分本母得到转度母。(齐数也。)再用相同的数字约分月分得到转法。(亦名转日法也。)用转法约分转终,就能得到转日和余数。咱们这套新历法创造了这些数字,都是以前历法里没有的。(约得八千一百一十二万为转度母,二百九十八亿八千二百二十四万二千二百五十一为转终分,三百二十亿二千五百一十二万九千二百五十一为会周,一十亿八千四百四十七万三千为转法,二十一亿四千二百八十八万七千为朔差。)

月亮运行快慢的确定,说法还真不少呢。《皇极历》里用加减限、朏朒积来算;《麟德历》说用增减率、迟疾积;《大衍历》和《崇天历》都用损益率、朏朒积。意思就是说,太阳运行,如果没到平均速度就减,超过了就加,这是顺应阳气的规律;月亮运行,如果没到平均速度就加,超过了就减,这是遵循阴气的规律。阴阳互相交错,所以用损益、迟疾来命名。咱们的新历,把一万四千八百一十九定为月亮运行快慢的极限值,算出来是五度八分,这个数字和月亮运行的轨迹互相对应,就能知道月食发生时间的早晚。

接下来说下“进朔”的事儿。“进朔”这个方法,最早是《麟德历》提出来的。后来的历法都沿用了这个方法,但具体做法又有点不一样。比如说,仲夏时节,月亮运行速度最快,如果该合朔的时间是亥时正,如果不“进朔”,那月亮就会在第二天早上出现在东方;但如果按照《大衍历》的方法,在戌时初就“进朔”,那朔日晚上,月亮就会出现在西方。咱们的新历,会仔细观察朔日剩下的时间,检验月亮运行的快慢,改变计算方法,反复验证加时的情况,主要看定朔的小余:秋分之后,如果四分法算出的结果超过三分之三,就提前一天算朔;春分之后,如果定朔时晨昏线的差值跟春分那天的差值一样,就取平均值,减去四分之二;如果定朔的小余超过这个数值,也提前一天算朔。这样循环计算,就能保证月亮不会在朔日的早晨出现;交会时刻不会有误差,月亮一定会在朔日的晚上出现。如果加时在中午,那么晦日的早晨和次日的晚上,都能看到月亮;如果加时在酉时(下午五点),那么晦日的早晨还能看到月亮,次日的晚上还没看到;如果加时在子时(晚上十一点),那么晦日的早晨看不到月亮,次日的晚上才能看到。确定了晦朔的时间,月亮在早晨或晚上的出现时间就能知道了;计算好小余,加时早晚就不会出错。这样就能坦然处之,不会迷惑,举一反三,就都明白了。

这篇文章讲的是古代计算时间的方法,跟日影长度和漏壶水位变化有关。首先,它解释了“消息数”这个词的含义,说它指的是日影长度的变化,也就是白天黑夜长短的变化,这跟古代的历法有关,也跟《易经》里讲的阴阳消长道理相通。

你看啊,《麟德历》里就用“屈伸率”来表示这种变化。白天和黑夜的长短,就像《易经》里说的“进退”一样,有规律地变化着。冬至的时候,阳气开始生长,白天变长,夜晚变短,这就像君子的德行在增长一样,所以叫“息”;夏至的时候,阴气开始生长,白天变短,夜晚变长,这就像君子的德行在衰减一样,所以叫“消”。日影的长度和太阳的位置有关,日影长的时候,夜晚也长,所以日影长度的变化和漏壶里水位变化是对应的。

现在我们用“屈伸”来比喻月亮运行的轨迹,而“消息数”就是指漏壶刻度变化的数值。因为太阳在黄道上运行,它距离南北极的距离会变化,所以日影的长度和漏壶里的水位也会变化。但是,日影长度变化的速度并不总是相同的,这是因为几何原理造成的。日影垂直于晷针的时候,变化就慢;日影和晷针的夹角大时,变化就快,这都跟北极星的高度有关,不同的位置,变化情况也不一样。

所以,要计算“消息数”,就要综合考虑太阳在黄道上的位置、日影长度、漏壶水位和星辰的运行规律。这些方法互相验证,互相补充,最终目的是为了精确计算时间,以适应全国各地不同的气候和地理条件。通过这些方法的运用,我们就能简单易懂地掌握时间,方便人们的生活。

话说啊,这六十四卦,最早是从孟氏那儿传下来的,十二月卦也是从他那儿来的;而七十二候呢,则源于《周书》。后来,宋景业时期,因为刘洪传播八卦,李淳风又根据旧历元图推算,都没能完全弄懂阴阳变化的奥妙。直到开元年间,有个和尚叫一行,他研究了扬子云的《太玄经》,把里面的数字仔细推敲,又深入研究了周公的三统历法,纠正了一些错误的解释,把这些东西综合起来,融会贯通,最终体现在卦象之中。要做到这一步,可不是一般人能做到的,必须对《易经》的卦象有非常深入的理解才行!现在我们用的,都是沿袭一行和尚的解释,一直到周朝的历法计算方法,都是根据他的推算来调整变化的。

这六十四卦啊,按照正常的顺序,先是从诸侯开始,然后是六天,也就是三千四百八十六秒后,大夫才能接受;接着是九卿,再然后是三公,最后才是天子。这五六爻互相交错,又和每个月的顺序相对应。如果九三爻对应上九爻,那就是天象平静;如果六三爻对应上六爻,那就是地气稳定;九三爻对应上六爻就温暖,六三爻对应上九爻就寒冷。上爻是阳爻就刮风,是阴爻就下雨。总之,只要仔细观察对应的爻,就能从卦象中看出五等爵位和君主治国得失、过与不及的地方。

至于七十二候,从李业兴开始,到《麟德历》为止,一共七种历法,都把“鸡初鸣”定为立春的第一候,“东风解冻”定为第二候,其他的依次类推。但是跟《周书》一比对,发现相差二十多天,错误的地方就更多了。而一行和尚呢,他改回了古代的解释,现在我们也还是以《周书》为准。

岳台,就是现在北京的岳台坊,地方叫浚仪,以前是候景待过的地方。《尚书·洛诰》里也提到过这块地方是东土。古书《礼记》里说,玉人负责用土圭测量日影长度,土圭长一尺五寸,用来测定太阳的方位和高度。这就是说太阳的运行是有规律的。司徒的职责是用土圭来校正日晷,当太阳到达正午的时候,日影长一尺五寸,这叫做“地中”。也就是说,地面的日影长度和土圭长度相等。不过,根据《周髀算经》,测日影的表长是八尺。总之,天体的运行有规律,地面也有它的中心点,历法反映了天象,测日影的表也有固定的长度。说“日至”,就是说太阳运行到这一点了。日影长一尺五寸和土圭长度相等,这是日影测量的真实结果。但是,夏至那一天,日影长一尺五寸,如果没有八尺长的表,怎么测出来呢?所以经书上记载夏至日影长度,是为了说明表有固定的长度。新历法里一年中日影长短的变化,都是用八尺长的表来测量的,测得的结果就是日影常数。日月交会,在天空中形成各种景象,以此来辨别日月的地位高低。太阳代表君道,月亮代表臣道。日食的发生,都和人事相应。如果人君修德来避免它,那么有时虽然该发生日食,但可能就不会发生。

所以,如果月亮运行改变轨道避开太阳,就不会发生日食;如果五星运行到太阳下方,为月亮抵挡灾难,保护它,就不会发生日食;如果日月交会的程度不深,或者发生在阳历,阳光强盛,阴气微弱,就不会发生日食;如果君主德行光明,即使有小的过失,上天也会隐瞒,用微弱的光芒遮蔽它,即使日月交会,也不会发生日食。这四种情况,都是由于君主的德行感动了上天。根据《大衍历议》记载:开元十二年七月戊午朔,应该发生日食。当时从交趾到朔方,同一天各地都进行日影观测,天气晴朗无云,但却没有发生日食。根据历法推算,那天日月交会的时间是七百八十四分之一,应该发生八分之五的日食。开元十三年,冬至那天,东封祭祀完毕,皇帝返回梁州、宋州的途中,史官说:“十二月庚戌朔,应该发生日食。”皇帝说:“我正忙于处理政务,日食现象出现在天上,这是我的过失,没有办法回报上天的恩泽。”于是他便撤去膳食,穿素服等待,结果日食并没有发生。朝中大臣都为此庆贺,认为皇帝的德行感动了上天,不需等待很久。根据历法推算,那个月日月交会的时间是二度弱,应该发生十五分之十三的日食,但是阳光依然如故,没有任何变化,即使计算有误差,也不应该这样。

总而言之,制定历法,最重要的是精确计算,如果增减毫厘,都不能准确,那么上溯到《春秋》时代以来日月食的记载,必然会有误差。如果制定历法的人根据开元这两次日食没有发生的情况来调整历法,那么符合实际的情况就很少,而误差就会很多。由此可以看出,《诗经》里说的“此日而微”,并不是天体的常数。旧历法直接计算月亮运行到交会点的时间,现在则先计算交会点的位置,然后与月亮运行互相参照,力求精确计算。

首先,咱们来说说“四正食差”这回事。你看这日食,正对着的时候就像两堵墙紧紧挨着,可稍微偏一点,就差得远了。日食发生时,在太阳中心看到的食分多,在边缘看到的就少;关系越浅,看起来就越远,关系越深,看起来就越近;观察地点不同,看到的也不一样;观察时间不同,看到的也不一样。总之,除非是在地球正中心观察,否则都会因为位置的不同而有所差异。就算是在南方,同样是正对着的日食,冬天看到的食分也比夏天多。就算冬夏一样,早晚也会有区别,南北高低不同,东西远近也有差异。所以说,这日食的观测,角度和位置都会影响结果,根本没法完全一样。《大衍》里说,根据阳历推算古今的日食,亏损程度最多不会超过一半。把这四种情况的误差都考虑进去,就能精确计算出日食在卯酉之间(正东正西)的偏斜程度,以及在子午之间(正南正北)的增减情况,务必做到细致入微,才能计算精准。

接下来,咱们说说“五星立率”。这五颗行星的运行,都是以太阳为基准来确定的,这体现了尊卑有序。太阳一年四季周而复始地运行,普照万物,这就像君主的道;而星星们则按照各自的轨道运行,这就像臣子的道。阴阳的消长变化,也以此为准则。所以,行星运行到太阳的阳面就前进,运行到阴面就后退,这都是正常的规律,所以要根据情况进行加减运算。古代推算星象运行,都是按照顺行的规律来,直到秦朝才出现了金星和火星逆行的说法。

《大衍》里还说:“木星的运行跟其他星星不太一样:商朝、周朝的时候,一百二十年才会超出一个周期;到了战国时期,它的运行速度越来越快;到了中平年间以后,八十四年就超出一个周期了,之后就一直保持这个速度。”木星的运行是这样的:一开始跟太阳重合,十八天运行四度,然后在东方出现。然后顺行一百八十天,大约运行二十二度多一点,然后停留二十七天。接着逆行四十六天半,逆行五度多一点,跟太阳相对。然后继续逆行,又四十六天半,逆行五度多一点,再停留二十七天。然后顺行一百八十天,运行十八度多一点,在西方消失。然后十八天运行四度,又跟太阳重合。

最后,咱们说说火星的运行。一开始跟太阳重合,七十天运行五十二度,然后在东方出现。然后顺行二百八十天,大约运行二百一十六度半少一点,然后停留十一天。接着逆行二十九天,逆行九度,跟太阳相对。然后继续逆行,又二十九天,逆行九度,再停留十一天。然后顺行二百八十天,运行一百六十四度半少一点,在西方消失。然后七十天,运行五十二度,又跟太阳重合。

土星这颗星啊,一开始和太阳在一起,过了21天,它走了两度半,然后咱们就能在早上东方看到它了。接着它顺行84天,一共走了九度多一点,然后停了35天。之后它开始逆行,49天走了三度半,这时候它和太阳正好相对。然后它又继续逆行,又是49天,走了不到三度,又停了35天。接下来它又顺行84天,走了七度多,然后晚上就跑到西方去了。再过21天,走了两度半,又和太阳重合了。

金星呢,一开始也和太阳在一起。过了38天半,它就走了49度多,然后晚上就能在西方看到它了。之后它顺行231天,一共走了251度半,然后停了7天。接着它逆行9天,退了四度半,晚上就看不见了。又过了6天半,它又退了四度多,再次和太阳重合。再过6天半,又退了四度多,早上就能在东方看到它了。然后它又逆行了9天,退了四度半,又停了7天。之后它又顺行231天,走了251度半,早上就看不见了。最后再过38天半,走了49度多,又和太阳汇合了。

水星嘛,一开始也和太阳在一起。15天走了33度,晚上就能在西方看到它了。然后它顺行30天,一共走了66度,停了3天,晚上就看不见了。然后它逆行10天,退了8度,又和太阳重合了。再逆行10天,退了8度,早上就能在东方看到它了,然后又停了3天。接着它顺行33天,走了33度,早上就看不见了。最后再过15天,走了33度,又和太阳重合了。

一行先生说:“这五星的伏、见、留、逆这些现象,以及它们表里、盈缩的运行规律,都和时间密切相关,也和国家的政事息息相关。小的偏差会导致小的变化,大的偏差会导致大的变化;事情细微,征兆也细微;事情显著,征兆也显著。这都是上天降下警告来警示君主的。有时候,算命的人不懂得其中的象征意义,占卜的人又迷信于数字,看到五星运行异常,就都说是历法出了问题,只顾着数字和现象的对应,却丢掉了事情的本质。总而言之,要验证这些现象,一定要查阅古今的记录,上下求证,反复推敲,如果单独出现异常情况,就能知道是运行出现了偏差。”

五星运行的位置和速度是不一样的,尤其火星变化最大,一会儿跑到南边,一会儿跑到北边,变化莫测,跟其他星星完全不同。所以,每天星星运行的距离,会有盈有缩。这是因为天上的星宿分布不均匀,运行的规律也有差异,我们通过观察星星运行的升降来计算盈缩的数值。过去计算五星运行的盈缩,是从张子信开始的,后来的术士们都在他的基础上进行增减,力求精确。而《开元历》则另辟蹊径,用四象六爻来计算进退,现在我们则另立盈缩的算法,与过去有所不同。

五星的出现和消失,都是以太阳的运行为标准。太阳运行的速度是不固定的,星星运行的快慢也随之变化。所以,要确定五星的出现和消失,首先要计算太阳运行的距离,现在我们则要仔细研究太阳运行的盈缩,以及星星运行的进退,这样才能更精确地推算五星的出现和消失。以前的说法是,水星在雨水后、谷雨前,早上应该出现却看不见;在处暑后、霜降前,晚上应该出现却看不见。还说,五星在卯酉方向偏南,则出现晚、消失早;在卯酉方向偏北,则出现早、消失晚,这都是天象使然。

接下来是关于步气朔术的具体数据。从上元甲子年算起,到治平元年甲辰年,一共是七十一万一千七百六十岁,这个数字不算在内。(过去年份,每年减一算;未来年份,每年加一算。)

元法:三万九千。

岁周:一千四百二十四万四千五百。

朔实:一百一十五万一千六百九十三。

岁周:三百六十五日,余九千五百。

朔策:二十九,余二万六千九百九十三。

望策:一十四,余二万九千八百四十六半。

弦策:七,余一万四千九百二十三,秒四半。

气策:一十五,余八千五百二十,秒一十五。

中盈分:一万七千四十一,秒一十二。

朔虚分:一万八千三百七。

闰限:一百一十一万六千三百四十四,秒六。

岁闰:四十二万四千一百八十四。

月闰:三万五千三百四十八,秒一十二。

没限:三万四百七十九,秒三。

纪法:六十。

秒母:一十八。

要算天正冬至,先把你要算的那几年的天正冬至气积分算出来,然后用元法除,商数就是积日,余数就是小余。再用日盈纪法减去小余,如果减不尽,就用甲子来记,算到外面去,这样就能得到你想要的那几年前天正冬至的日辰和余数了。

接下来算节气。把天正冬至的大、小余拿出来,加上气策,就能得到次气的余数了。如果秒盈秒母从属于小余,小余满了就从大余里减,大余满了就用纪法减去。用甲子记下大余,算到外面去,就能得到次气的日辰和余数了。余气累加起来再算。

要算天正经朔,先把天正冬至的气积分拿出来,用朔实去减,商数就是积月,余数就是闰余;用盈元法算出天数,不够就用余数表示;然后用这个天数减去天正冬至的大、小余,就得到天正经朔的大、小余了。如果大余不够减,就加上纪法;小余不够减,就从大余里借一,加上元法再减。用甲子记下大余,算到外面去,就能得到你想要的那几年前天正经朔的日辰和余数了。

算弦望和下次朔日,把天正经朔的大、小余拿出来,累加弦策,记法和前面一样,就能得到弦、望和下次朔日的日辰和余数了。

算没日,先找出有“没”现象的节气的小余(二十四节气里,小余超过没限的那些节气),用秒母乘以它(秒数跟着它),再从七十一万二千二百二十五里减去,剩下的数除以一万二千二百二十五就是没日,不够除就算余数。把没日加上节气的大余,用甲子记下,算到外面去,就能得到那个节气的没日日辰了。

算减日,先找出有减现象的朔日的小余(经朔小余不满朔虚分的那些朔日),用三十乘以它,如果满朔虚分就是减日,不满就是余数。把减日加上经朔大余,用甲子记下,算到外面去,就能得到那个月的减日日辰了。

下面是步发敛术里的一些参数:

候策:五、余二千八百四十、秒五。

卦策:六、余三千四百八、秒六。

土王策:三、余一千七百四、秒三。

辰法:三千二百五十。

刻法:三百九十。

半辰法:一千六百二十五。

秒母:一十八。

要算七十二候,先把中节的大、小余记下来,就是初候;加上候策就是次候;再加一次就是末候。分别用甲子记下,算到外面去,就能得到各个候的日辰了。

首先,要算出六十四卦的用事日。每个卦都根据中气的盈余来确定,大余和小余分别对应不同的用事日。用卦策推算,就能得到下一个卦的用事日。如果用土王策来推算诸侯的卦,就能得到十二节气之外的初卦用事日。

接下来,算五行用事日。每个五行都根据四立的节气盈余来确定,大余和小余分别对应春木、夏火、秋金、冬水在每个季节的第一个用事日。用土王策减去四季中气的大、小余,再用甲子来推算,就能得到每个月土开始用事的日期。

然后,计算发敛的加时。先确定小余,用满辰法去除得到辰数,不满的则用刻法换算成刻,再不满的换算成分。从子正开始,加上算出的辰数,就能得到所求加时辰时。如果用半辰数来加,就能得到辰初之后所进入的刻数。

接着,计算发敛去经朔。先确定天正经朔闰余,然后累加每个月的闰余,得到每个月的闰余。用元法去除,得到闰日,余数就是小余,这样就能算出每个月中气距离经朔的天数和余秒。如果闰余满了闰限,就需要置闰,以月内无中气为准。

之后,计算卦候去经朔。用卦、候策以及余秒累加或累减(中气前减,中气后加),就能得到每个卦候距离经朔的天数和余秒。

下面是步日躔术的一些参数:

日度母:六百二十四万

周天分:二十二亿七千九百二十万四百四十七

周天:三百六十五度。(余一百六十四万四百四十七,约分二千五百六十四、秒八十二。)

岁差:八万四百四十七

二至限:一百八十二度。(余二万四千二百五十,约分六千二百一十八。)

一象度:九十一。(余一万二千一百二十五,约分三千一百九。)

最后,计算朔弦望的盈缩度。先确定二至限的度数和余数,用天正闰日及其余数减去,余数就是天正经朔的缩度和余数。然后用弦策累加,满二至限度数和余数就减去,这样就能算出盈缩变化,得到弦、望以及下一个经朔日的盈缩度数和余数。余数乘以一万,再用元法去除,就能得到约分后的结果。

首先,咱们得算出盈缩差和定差。具体方法是:分别把朔、弦、望对应的盈缩度数列出来,如果小于象度分,就记作“初”;如果大于象度分,就用它减去二至的限度,剩下的记作“末”。然后,把“初”和“末”的度数放在上面,二至的度数放在下面,用上面的数减去下面的数,剩下的数再乘以上面的数,得到一个积数。这个积数除以4135,商就是度,余数就是分,这就是盈缩差的度和分。如果把这个积数乘以400,再除以567,就得到盈缩定差。(如果用现成的数值,就用它的度数乘以损益率,再除以元法,所得结果用来调整盈缩积,得到定差的度数;如果损益初、末分是两天,就分别用初、末的数值乘除。后面的计算都以此类推。)

接下来求定气日:冬至和夏至是盈缩的起点,它们的定气日就用常数。其他的,就用它对应的盈缩差的度和分,加上或减去常气日及其约分,就能得到它的定气日及其约分。

下面是赤道宿度:

斗:26度 牛:8度 女:12度 虚:10度及分

危:17度 室:16度 壁:9度

北方七宿共98度。(剩余160447,约分为2564。)

奎:16度 娄:12度 胃:14度 昴:11度

毕:17度 觜:1度 参:10度

西方七宿共81度。

井:33度 鬼:3度 柳:15度 星:7度

张:18度 翼:18度 轸:17度

南方七宿共111度。

角:12度 亢:9度 氐:15度 房:5度

心:5度 尾:18度 箕:11度

东方七宿共75度。

以上都是赤道度数,从《大衍》之后,都是用仪器测定的常数。赤道是恒定的轨道,贯穿天球的中心,用来划分黄道。

最后,我们来算天正冬至赤道日度:用岁差乘以要计算的年数,除以周天分,如果除不尽,就用余数减去周天分,剩下的数再除以度母,商就是度,余数就是分。(余数乘以一万,再除以度母,得到约分。)然后从赤道虚宿6度开始算,一直算到不满一宿,就是所求年份天正冬至赤道日运行到哪个宿度和分。

这段文字讲的是古代天文计算,咱们一句一句地把它掰扯明白。

第一段说的是怎么算夏至那天赤道上太阳运行的度数。先算出冬至那天赤道上太阳运行的度数,然后把冬至和夏至的度数加起来,再减去赤道上总的度数,剩下的就是夏至那天赤道上太阳运行的度数。括号里说,如果要算夏至那天晚上半夜赤道上太阳运行的度数,就要从冬至的度数里减去一点点,再加到夏至的度数里,然后每天加一度,减去赤道总度数,就能算出每天晚上半夜的度数。 这说的都是些很专业的术语,我们现在用不着这么精确的计算了。

第二段说的是怎么算赤道上星宿的累计度数。先算出冬至那天赤道上星宿的总度数,再用冬至那天赤道上太阳运行的度数减去它,剩下的就是距离后面的度数。然后把赤道上星宿的度数累加起来,就能算出每个星宿累计的度数。 这部分计算方法,跟现代天文学的计算方法已经大相径庭了。

第三段说的是怎么算赤道上星宿累计度数在起始和终止范围内的度数。把算出来的累计度数,如果超过90度31分,就减去90度31分,剩下的如果小于45度65分半(分以日为母,这个单位换算比较复杂),就在起始范围内;如果大于45度65分半,就再减去90度31分,剩下的就在终止范围内。 这部分内容涉及到古代天文观测的坐标系和度量单位,理解起来比较困难。

第四段说的是怎么算二十八宿在黄道上的度数。先算出赤道上星宿在起始和终止范围内的度数,再减去110度37分,然后乘以起始和终止范围内的度数,再除以一万,得到黄赤道差的度数。如果是在至点之后、分点之前,就减去赤道上星宿的累计度数;如果是在分点之后、至点之前,就加上赤道上星宿的累计度数,这样就能算出星宿在黄道上的累计度数。最后,用这个累计度数减去前面星宿的黄道度数,就能算出这个星宿在黄道上的度数。括号里说,分数就取最接近的太、半、少。 这段描述的计算过程非常复杂,涉及到黄道坐标系和赤道坐标系的转换。

最后一段列出了二十八宿在黄道上的度数,分别用度、分来表示。 这些数据是古代天文学家观测的结果,现在已经不再使用了。 “斗:二十三半 牛:七半 女:十一半 虚:十少、秒六十四 危:十七太 室:十七少 壁:九太 北方七宿九十七度半、秒六十四。奎:十七太 娄:十二太 胃:十四半 昴:十太 毕:十六 觜:一 参:九少 西方七宿八十二度。井:三十 鬼:二太 柳:十四少 星:七 张:十八太 翼:十九半 轸:十八太 南方七宿一百一十一度。角:十三 亢:九半 氐:十五半 房:五 心:四 尾:十七 箕:十 东方七宿七十四度太。” 这些数据体现了古代天文观测的水平,也反映了古代天文学的独特体系。

咱们先说这天上的星星啊,它们沿着黄道运行,这位置啊,现在咱们用的历法都按这个算。要是想研究过去和未来的星象,就得考虑岁差,每移动一度,就得根据当时的星宿位置调整计算方法,这样才能推算出太阳、月亮和五大行星的位置和运行规律。

接下来,怎么算出冬至那天正午太阳在黄道上的度数呢?先算出冬至那天正午太阳在赤道上的度数和分数,然后减去111度37分,剩下的数再乘以冬至那天正午太阳在赤道上的度数和分数(记得进一位),结果要是超过一万,就取整数作为度数;没超过一万,就保留小数作为分数,这个差值就叫“黄赤道差”。用冬至那天正午太阳在赤道上的度数和分数减去这个黄赤道差,就得到咱们要找的冬至那天正午太阳在黄道上的度数和分数了。

然后,怎么算出冬至那天半夜太阳在黄道上的度数呢?先准备一万份,加上那天太阳升起的时间(用分数表示),再乘以冬至剩余的度数,最后除以一万。把算出来的结果从冬至那天正午太阳在黄道上的度数里减去,就得到冬至那天半夜太阳在黄道上的度数和分数了。

接下来,怎么算每个月朔日(农历初一)半夜太阳在黄道上的度数呢?先算出这个朔日距离冬至的天数,然后根据这个天数,把盈余或不足的度数加减进去。最后把结果加上冬至那天半夜太阳在黄道上的度数,这就得到了这个月朔日半夜太阳所在的星宿位置了。

最后,怎么算每天半夜太阳在黄道上的度数呢?先找到每个月朔日半夜太阳在黄道上的度数,然后每天加一度,再根据每天太阳升降的时间(用分数表示)进行加减。如果超过黄道的度数范围,就减去黄道的总度数,这样就能得到每天半夜太阳在黄道上所在的星宿位置和度数了。如果第二年冬至的计算结果不够准确,那就加上太阳升降的极值。