推朔日算法
用通数乘积分,得到朔积分;除以日法,得到积日,除不尽为小余。积日除以六十,余数为大余,从纪首干支起算,不算大余本身,就是所求年正月朔日。
求下一个月朔日:大余加二十九,小余加三百九十九;小余满日法,进一到大余,就是次月朔。小余在三百五十三以上,这个月是大月。
推弦望算法
在朔的大余上加七,小余加二百八十七,小分加三;小分满四,并入小余;小余满日法,并入大余,按前面规则起算,就是上弦日。继续累加,得到望日;再加,得到下弦日。
推二十四气算法
取入纪年数(不算本年),乘以余数,除以度法三百零四,得到积没,除不尽是小余。积没除以六十,余数为大余,从纪首起算,不算大余本身,就是所求年雨水日。求下一个节气:大余加十五,小余加六十六,小分加十一;小分满气法并入小余,小余满度法并入大余,就是次一气。雨水落在十六日以后的,按规则回减,得到立春。
推闰月算法
用章岁减去闰余,得数乘岁中,除以章闰,得到闰月次序,从正月数起,就是闰月位置。闰月有进退,以没有中气的月份定为闰月。
立春(正月节):限数一百九十四,间数一百九十 雨水(正月中):限数一百八十六,间数一百八十二 惊蛰(二月节):限数一百七十七,间数一百七十二 春分(二月中):限数一百六十七,间数一百六十二 清明(三月节):限数一百五十八,间数一百五十四 谷雨(三月中):限数一百四十九,间数一百四十五 立夏(四月节):限数一百四十二,间数一百三十九 小满(四月中):限数一百三十六,间数一百三十四 芒种(五月节):限数一百三十三,间数一百三十二 夏至(五月中):限数一百三十一,间数一百三十二 小暑(六月节):限数一百三十三,间数一百三十四 大暑(六月中):限数一百三十六,间数一百三十九 立秋(七月节):限数一百四十二,间数一百四十五 处暑(七月中):限数一百四十九,间数一百五十三 白露(八月节):限数一百五十七,间数一百六十二 秋分(八月中):限数一百六十七,间数一百七十二 寒露(九月节):限数一百七十七,间数一百八十二 霜降(九月中):限数一百八十六,间数一百九十 立冬(十月节):限数一百九十四,间数一百九十七 小雪(十月中):限数二百,间数二百零三 大雪(十一月节):限数二百零五,间数二百零六 冬至(十一月中):限数二百零七,间数二百零六 小寒(十二月节):限数二百零五,间数二百零三 大寒(十二月中):限数二百,间数一百九十七
推没灭算法
承接雨水积没,用没余相乘,除以没法,得到大余,除不尽是小余,按前面规则推算,就是雨水之前的没日。求下一个没日:大余加六十九,小余加一百九十六,满没法进到大余,起算方式同上,就是雨水之后的没日。雨水前的没日大多在上一年,一年通常有五没,官府用没日来校正时日;一年一般五没或者六没。小余恰好除尽,就是灭日。雨水小余三十九以内,雨水六十天之后才会出现没日。
推土用事算法
取立春的大小余、小分,大余减十八,小余减七十九,小分减十八,从纪首起算,不算得数本身,就是立春之前土用事的日子。大余不够减,就加六十;小余不够减,先把大余减一,再加度法之后再减。立夏、立冬求土用事,都用这个办法。
推太阳所在星度算法
用度法乘朔积度,除不尽为分。度数从室宿二度起算,依次遍历各宿,不算起算度,就是正月朔夜半太阳所在度数和分。求次日,太阳每日加一度,经过室宿的时候,减去室分。
推月亮所在星度算法
用月周乘朔积日,减去周天,余数除以度法得到积度,除不尽为分,起算方式同上,就是正月朔夜半月亮所在度数和分。求次月朔月亮位置:小月加二十二度,分一百三十三;大月加三十五度,分二百四十五;分满度法进一度,起算同上,就是次月朔月亮所在度。历先月法:用十六除月行分得到大分,再根据入迟疾历加减,经过室宿减去室分。
推合朔、月食算法
取所求年积月,乘会数一百六十,加上入交会纪差二十二,减去会月,余下的就是当年正月朔距离交点的分。求次月,累加会数,满会月就减去。求望日,加朔望合数。朔、望距离交点的分,小于等于朔望合数,或者大于等于交限数;朔日就会发生日食,望日就会发生月食。
推月亮入迟疾历算法
取所求年朔积分,加上入迟疾差一万五千二百四十五,减去通周,余数除以日法得到日数,除不尽是日余,起算不算首日,就是正月朔入迟疾历的日数。求次月朔,加一日,日余加七百三十四。求望日,加十四日,日余加五百七十五半。日余满日法进一日;日数满二十七就减去。日余大于等于周日日余,减去周日日余;不够减,就减一日,加上周虚。满二十七日后,日余不足周日日余,称为损。满周日,减去周日,算作入历一日。
推合朔、月食定大小余算法
用入历日余,乘入历对应的损益率(入历第一日,增益二十五),用来增减盈缩积分;应当减就减,应当加就加,得到定积分。用入历日余乘列差,除以日法,盈减缩加差法,得到定差法。用定差法去除定积分,所得之数,用来加减原本朔望小余:盈就减,缩就加,得到定小余。相加之后满日法,合朔、月食就进一日;不够减,加上日法再减,就退一日。恰逢周日,用周日定数。
推加时算法
用十二乘定小余,除以日法,得到辰数,从子起算,不算子本身,就是朔望加时对应的时辰。有余分再乘四,除以日法,得一叫少,二叫半,三叫太半。还有剩余,再乘三,除以日法得一叫强;过半算作一分,不足半舍去。强和少合并叫少强,强和半合并叫半强,强和太合并叫太强。得二分叫小弱,和少合并叫半弱,和半合并叫太弱,和太合并叫一辰弱。以所在时辰命名。
推合朔月食加时刻数算法
用一百刻乘定小余,除以日法;余数乘十,求刻下分。先减去夜漏的一半,得到昼漏的时刻分。昼漏结束,再计入夜漏。在节气前后四日之内,参照限数;节气前后五日以上,参照间限数。月食加时定小余,小于限数、间数的,都按上一日算。
小分一百零三,损二百二十四,九万三千四百零八,意差法二千,三百零九。
推合朔度数算法
用章岁乘朔小余,除以通法,得到大分,除不尽是小分。把大分加到朔夜半太阳分上,满度法进一度,起算同上,就是正月朔日月合朔的共同度数。
求次月合朔:加二十九度,大分一百六十一,小分十四;小分满通法并入大分,大分满度法并入度。经过室宿减去室分。求望:加十四度,大分二百三十二,小分三十半。求望月所在度:加一百八十二度,分一百八十九,小分二十三半。
推五星基础参数
木星后元丙戌,晋咸和元年,到元嘉二十年癸未,一百一十八年(计算包含本岁)。 火星后元乙亥,元嘉十二年,到元嘉二十年癸未,九年(计算包含本岁)。 土星后元甲戌,元嘉十一年,到元嘉二十年癸未,十年(计算包含本岁)。 金星后元甲申,晋太元九年,到元嘉二十年癸未,六十年(计算包含本岁)。 水星后元乙丑,元嘉二年,到元嘉二十年癸未,十九年(计算包含本岁)。
推五星通用算法
分别取本星后元到所求年份的年数(包含本年),乘以合数,除以合岁,得到积合;除不尽叫合余。合余偏大的,再用合数除合余:商为一,星在上一年会合;商为二,星在前年会合;不足合数,就是本年会合。木星、土星、金星会有上年会合;火星有前年会合;水星一年可以会合三次或者四次。用合数减去合余,得到度分;水星的度分满合岁就减去。用周天十一万一千零三十五乘度分,除以日度法,得到积度,除不尽是度余。度数从室宿二度起算,不算起算度,就是行星会合时所在星度。用合数乘年数,并入雨水小余,再加度余作为日余;日余满日度法进为日,从雨水起算,不算雨水日本身,就是行星会合的日期。
求行星出现日期:用该星伏日、日余(木星是十六日,金星同理),加到会合日、日余之上,满日度法进一日,起算同上,就是行星出现之日。 求行星出现的度数:用该星伏度、度余(木星是二度及余分),加到会合度、度余之上,满日度法进一度,起算同上,就是行星出现时的度数。
用行星顺行分母(木星是二十三)乘见度余,除以日度法得到整数分;之后逐日累加行分。木星顺行每日四分,分满分母进一度。逆行和顺行分母不一样(木星逆行分母是七),分别用对应分母换算度余。停留延续之前度数;逆行就减去行分;隐伏阶段不记录度数。经过室宿减去室分;不够减的,拆开整度来减。五星各自室分不同,计算行分的时候,按各自室分扣除。
木星:一开始和太阳会合,隐伏,十六日,日余四万一千七百八十,运行二度,余七万七千八百四十七半,清晨在东方出现,距离太阳十三度半强。顺行,每日运行二十三分之四度,一百一十五日运行二十度;停留不动,二十六日之后逆行。逆行每日运行七分之一度,八十四日退回十二度;再次停留二十六日。之后顺行,一百一十五日运行二十度,傍晚在西方隐伏,日、度余和初伏相同,和太阳会合。一个终周三百九十八日,日余八万三千五百六十,运行三十三度,余五万九千九百三十五。
火星:一开始和太阳会合,隐伏,七十一日,日余二万四千八百一十二半,运行五十四度,度余四万九千四百三十,清晨在东方出现,距离太阳十七度半强。顺行快的时候,每日运行七分之五度,一百零八日半运行七十七度半;稍慢,每日运行七分之四度,一百二十六日运行七十二度;再慢,每日运行七分之二度,四十二日运行十二度;停留不动,十二日后逆行。逆行每日运行十分之三度,六十日退回十八度;再次停留十二日。之后顺行,慢速阶段四十二日运行十二度;稍快,一百二十六日运行七十二度;再快,一百零八日半运行七十七度半,傍晚在西方隐伏,日、度余和初伏相同,和太阳会合。一个终周七百七十九日,日余四万九千六百二十五,运行四百一十四度,度余三万三千五百;减去一周天,实际运行四十九度,度余一万七千三百七十五。
土星:一开始和太阳会合,隐伏,十八日,日余四千四百八十二半,运行二度,度余四万六千八百四十七半,清晨在东方出现,距离太阳十五度半强。顺行,每日运行十二分之一度,八十四日运行七度;停留不动,三十六日后逆行。逆行每日运行十七分之一度,一百零二日退回六度;再次停留三十六日。之后顺行,八十四日运行七度,傍晚在西方隐伏,日、度余和初伏相同,和太阳会合。一个终周三百七十八日,日余八千九百六十五,运行十二度,度余九万三千六百九十五。
金星:一开始和太阳会合,隐伏,四十一日,日余四万九千六百八十四半,运行五十一度,度余四万九千六百八十四半,傍晚在西方出现,距离太阳十度。顺行快速,每日运行一度十三分之三度,九十一日运行一百一十二度;速度转缓,每日运行一度十三分之二度,九十一日运行一百零五度;再慢,每日运行十五分之十一度,四十五日运行三十三度;停留不动,八日之后逆行。逆行每日运行三分之二度,九日退回六度,在西方隐伏。继续隐伏六日,退行四度,和太阳会合。又六日退行四度,清晨在东方出现,逆行九日退回六度;再次停留八日。之后顺行,四十五日运行三十三度;速度转快,九十一日运行一百零五度;再快,九十一日运行一百一十二度,清晨在东方隐伏,日、度余和初伏相同,和太阳会合。一个终周五百八十三日,日余四万八千六百零一;减去一周天,实际运行二百一十八度,度余三万六千零七十六。一次会合二百九十一日,余四万九千六百八十四半,运行度数同上。
水星:一开始和太阳会合,隐伏,十七日,日余七万一千二百一十半,运行三十四度,度余七万一千二百一十半,傍晚在西方出现,距离太阳十七度。顺行快速,每日运行一度三分之一度,十八日运行二十四度;速度转缓,每日运行七分之五度,七日运行五度;停留不动,四日之后,傍晚在西方隐伏。隐伏十一日,退行六度,和太阳会合。又十一日退行六度,清晨在东方出现;停留四日。之后顺行,慢速七日运行五度;快速十八日运行二十四度,清晨在东方隐伏,日、度余和初伏相同,和太阳会合。一个终周一百一十五日,日余六万六千七百二十五,运行度数同上。一次会合五十七日,日余七万一千二百一十半,运行度数同上。计算时盈加缩减,用十六除月行分,用日法除盈缩分,用来减度分,盈加缩减。
推卦算法
承接雨水大小余,大余加六,小余加三百一十九;小余满三千六百四十八进一日。日满二十七,余分不足以加减,就不加周虚。
元嘉二十年,何承天上奏尚书:如今改用《元嘉历》,漏刻标准和旧历不同,应当一并改革。查《景初历》春分昼长、秋分昼短,沿用旧漏刻,冬至之后昼漏反而比冬至之前更长,长短增减变化没有渐变过程,不只是旧历不精密,也有传抄讹误。现在二至二分都依据实测校正,二至前后不再有反常差异。重新增减旧漏刻,参照日影,删定成固定标准,改用二十五支漏箭。请求台府下令漏郎将核验施行。朝廷准许。
前代儒生依据图纬典籍说,月亮运行有九道,画成九条相交的圆环。但是观测月亮运行轨迹,快慢变化,并不沿着这九条轨道整齐运行。刘向论九道:两条青道在黄道以东,两条白道在黄道以西,两条黑道在黄道以北,两条赤道在黄道以南。又说:立春、春分,月亮沿青道;立夏、夏至,沿赤道;秋天行白道,冬天行黑道,各依方位。太阳行走黄道,是阳的轨道;月亮是阴精,不恒定走黄道,时而在黄道内、时而在黄道外,偏离黄道不超过六度。进入黄道一侧十三日多,穿出;穿出之后又是十三日多再入黄道,一共二十七日,一出一入。月亮运行到黄道交点,和太阳重合遮挡,就发生日食。汉代刘洪核验月行,创立阴阳历术。元嘉二十年,宋太祖让著作令史吴癸依照刘洪的方法,制作新术,交给太史使用。
《元嘉历》月行阴阳法
阴阳历,损益率,兼数 一日:益十七,初 二日前限余六百六十五微分一千七百三十八:益十六,十七初三,增益十五,总数三十三 初四,增益十二,总数四十八 初五,增益八,总数六十 初六,增益四,总数六十八 初七,增益一,总数七十二 初八,减损二,总数七十三 初九,减损六,总数七十一 初十,减损十,总数六十五 十一日,减损十三,总数五十五 十二日,减损十五,总数四十二 十三日以后,上限余二千零一十九微分、一千零七十九,减损十六,总数二十七 分日二千六百八十五又二分之一,减损十六,大数是五千三百七十一分之三千四百七十二,总数十一
历周:五万五千五百一十七又二分之一。 差率:一万零一百九十。 微分法:一千八百七十八。
推算阴阳历的算法:用会月除去入纪积月,余下的数乘以会数,再加上所入纪的交会差,再乘以周天;所得数值满微分法就记作大分,余下不够的部分为微分。大分满周天就舍去,余下数值如果不到历周,就是入阳历。其余的余数,每满一个月周算作一日,算外,就是所求年份正月合朔入历的数值;余下不足一日的,就是日余。
求下一个月入历:加二日,日余一千三百三十一,微分一千五百九十八;按上面的法度积满一日就进一日,日数满十三日就舍去,日余按分日的规则折算。阴阳历一轮结束,就重新从历端起算;入历数值在前限余之前、后限余之后的,代表月亮运行在黄道正中。
求朔、弦、望的定数:各自取迟疾历的盈缩定积分,乘以章岁,除以差法;所得结果满通法记作大分,余下不足的部分乘以微分法,再除以法度得到微分。盈就减去、缩就加上阴阳历的日余;如果减加之后超出或者不足,就用月周进退日数来确定。再用定日余乘以损益兼数,得到加时定数。
推算夜半入历:用差率乘以朔小余,除以微分法,每满一单位得一;用这个数值减去入历余,如果不够减,就加上月周再减,同时退回一日,退回的部分折算成分日加到余数之中,半个微分记作小分,这就是朔日夜半入历的历余、小分。
求次日夜半入历:加一日,日余十六,小分三百二十;小分满会数就并入日余,日余满了月周就舍去,再另外加一日。一轮历走完,下一日的日余满分日就舍去,回到入历初始位置。如果日余不满分日,就保留这个余数,再加余一千二百九十四、小分七百八十九又二分之一,作为进入下一轮历的数值。
求夜半定日:用朔小余减去入迟疾历的日余;如果不够减一日,就退回一个周日,加上余四百一十七,就是月亮夜半入历的日数和余分。用日余乘损益率,得到盈缩积分,就是定积分。定积分满通法记作大分,余下部分乘以会月,除以法度得到小分;盈就加上、缩就减去阴阳历的日余,加减之后超出或者不足,就进退日数确定。再用定日余乘损益率,除以月周,以此来损益兼数,得到夜半定数。
求昏明数:用损益率乘临近节气的夜漏刻数,除以二百,得到明数;用损益率减去明数,得到昏数;再用昏、明的数值损益夜半半数,得到昏明定数。
求月亮距离黄道的度数:取加时或者昏明定数,除以十二,得到度数;余数除以三,一份叫“少”,余下不足一份叫“强”,两份叫“少弱”。算出来的结果,就是月亮距离黄道的度数。
大明六年,南徐州从事史祖冲之上表说:
古代历法粗疏舛误,不够精密,各家说法纷乱,没人能把握其中要领。何承天上奏的《元嘉历》,本意想要改革旧法,但是设置的术法简略,到如今已经和天象偏离很远。臣核验之后,发现三处明显谬误:日月运行的位置,误差达到三度;冬至、夏至的日影,几乎差上一天;五星的出现与隐伏,误差最多可达四十天,五星留、逆、进、退的位置,甚至会偏移两个星宿。二分、二至一旦偏差,节气、闰月就不能摆正;星宿度数和天象不符,观测推算就没有标准。臣生在圣明的时代,赶上太平国运,冒昧献上浅陋的见解,重新创制新历。一共拟定两项改动内容,三项新设法度。
要改动的地方,第一:旧的章法,十九年设置七个闰月,闰数偏多,经过二百年,就会差一天。节气闰月一旦偏移,就必须改历法,历纪多次变更,根源就在这里。现在修改章法,三百九十一年设置一百四十四个闰月。让它回溯契合周代、汉代的天象,往后长久使用,不会再出现偏差。第二:《尧典》记载:“白昼最短,昴星黄昏中天,用来确定仲冬。”以此推算,唐尧时代冬至,太阳位置在当今星宿的东边五十度左右。汉代初年沿用秦代历法,冬至太阳在牵牛六度。汉武帝改立《太初历》,冬至太阳在牵牛初度。后汉《四分历》,冬至太阳在斗宿二十二度。晋代姜岌用月食校验太阳位置,得知冬至太阳在斗宿十七度。如今综合中星观测、月食望日来核验,冬至太阳在斗宿十一度。合计来看,不到一百年,就差了二度。旧历法全都固定冬至太阳位置不变,天度既然慢慢偏移,日月五星的宿度就渐渐和历法不合。谬误明显之后,又要改制,只能勉强贴合一时,不能长久通用,历法不停改易,根源就在这里。现在设置冬至所在宿度每年微微推移,回溯核验汉代注记,全都精密吻合,将来长久使用,不必频繁改动。
另外新设的法度,第一:子是十二辰之首,方位正北,爻对应初九,是元气开端;虚宿在北方七宿正中,元气起始,上元日度应当从虚宿一度起算。前代儒者虞喜,已经详细阐发这个道理。本历上元的日度起点,从虚宿一度开始。第二:干支名号,甲子排在首位,历法设定上元,应当取甲子之年。但是从黄帝以来,历代所用的十一种历法,上元年份都没有恰逢甲子。本历上元,年份定为甲子。第三:上元之年,历法里所有推算条目,都以这一年作为起始;而《景初历》推算交会、月行迟疾,另外设置纪差,只能勉强贴合朔日、节气,条目杂乱,不符合古法本意。现在新法,日月五星、交会、月行迟疾,全部以上元岁首作为起点。日月合璧的天象,推算有凭据;五星连珠的辉光,也可以准确推算,所有推算源头统一,真正契合古法。
至于依靠观测确定形制,凭据实效检验,天上星象昭然,用圭表测量就能推求;节气气运幽微,用律管候气不会出错。臣所创立的历法,容易取信于人。只是深究历法首尾,务求整体周密;革新旧法,条目有简有繁。简约的条目,道理上没有疑问;繁复的设置,也不是凭空错设。为什么?纪法、闰法参差不一,每一个数都带有余分,余分的特性,不精细就不能严密。臣所以珍惜毫厘之差,保全精密的准则,不怕繁复计算,来造就永久可用的历法。不是思虑不通、明知有错而不改。只是担心评议之人,或是厚古薄今,或是轻信传闻、无视实测。所以竭尽浅陋所知,消解各方异同的非议,诚心推究日月运行,盼望得到君主体察。如果臣上奏的历法,万一有可取之处,恳请颁下各官署,让大家仔细研讨,希望这微薄的贡献,能稍稍增益典章制度。
历法
从上元甲子年,到刘宋大明七年癸卯年,一共五万一千九百三十九年,算外。
元法:五十九万二千三百六十五。 纪法:三万九千四百九十一。 章岁:三百九十一。 章月:四千八百三十六。 章闰:一百四十四。 闰法:十二。 月法:十一万六千三百二十一。 日法:三千九百三十九。 余数:二十万七千零四十四。 岁余:九千五百八十九。 没分:三百六十万五千九百五十一。 没法:五万一千七百六十一。 周天:一千四百四十二万四千六百六十四。 虚分:一万零四百四十九。 行分法:二十三。 小分法:一千七百一十七。 通周:七十二万六千八百一十。 会周:七十一万七千七百七十七。 通法:二万六千三百七十七。 差率:三十九。
推算朔日算法:取上元以来的年数,算外,乘以章月,满章岁得到积月,余下的是闰余。闰余大于等于二百四十七,这一年就有闰月。用月法乘以积月,满日法得到积日,余下的是小余。积日除以六十,舍去整轮,余下的是大余。从甲子起数大余,算外,就是所求年份天正十一月朔日。小余大于等于一千八百四十九,这个月是大月。求次月朔:大余加二十九,小余加二千零九十;小余满日法就并入大余,大余满六十就舍去,按前面的方法起干支,就是次月朔日。求弦、望:朔日大余加七,小余加一千五百零七,小分加一;小分满四并入小余,小余满日法并入大余,依前起干支,就是上弦日。继续累加得到望日,再加得到下弦,再加得到后月朔日。
推算闰月算法:用章岁减去闰余,余数满闰法就得到一个闰月,从天正起数,算外,就是闰月所在。闰月位置有进退,以没有中气的月份定为闰月。
推算二十四节气算法:取上元以来年数,算外,乘以余数,满纪法得到积日,余下的是小余。积日舍去六十的整倍数,余下为大余。从甲子起数大余,算外,就是天正十一月冬至日。求下一个节气:大余加十五,小余加八千六百二十六,小分加五;小分满六并入小余,小余满纪法并入大余,依前起干支,就是下一个节气。求土用事:冬至大余加二十七,小余加一万五千五百二十八,是季冬土用事日;再加大余九十一,小余一万二千二百七十,是下一次土用事日。
推算没日算法:用九十乘冬至小余,用没分减去这个得数,满没法得到日数,余下是日余;从冬至起数,算外,就是没日。
求下一个没日:日数加六十九,日余加三万四千四百四十二;日余满没法就进一日,就是下一个没日。日余刚好耗尽,称为灭。
推算太阳所在星宿度数算法:纪法乘朔积日,得到度实,减去周天,余数满纪法得到积度,余下是度余;从虚宿一度起数,依次扣除各宿度数,算外,就是天正十一月朔夜半太阳所在度数。求次月太阳位置:大月加三十度,小月加二十九度,进入虚宿区域时,减去虚分。求行分:度余除以小分法,得数是行分,余下是小分;小分满小分法并入行分,行分满行分法并入度数。求次日太阳位置:加一度;进入虚宿,减去行分六,小分一百四十七。
推算月亮所在星宿度数算法:朔小余乘一百二十四,得到度余;朔小余乘八百六十,得到微分。微分满月法并入度余,度余满纪法化为度数;用这个度数减去朔夜半太阳所在度数,就是月亮所在度数。
求次月月亮位置:大月加三十五度,度余三万一千八百三十四,微分七万七千九百六十七;小月加二十二度,度余一万七千二百六十一,微分六万三千七百三十六;进入虚宿,减去虚分。
迟疾历
推算入迟疾历算法:通法乘朔积日,得到通实;减去通周,余数满通法得日数,余下是日余。从日数起算,算外,就是天正十一月朔夜半入迟疾历的日数。
求次月入迟疾历:大月加二日,小月加一日,日余都是一万一千七百四十六。历满二十七日、日余满一万四千六百三十一,就舍去一轮。
求次日入历:加一日。求太阳所在定度:用夜半入历日余乘损益率,以此增减盈缩积分,除以差率;得数满纪法化为度数,余下是度余。盈就加上、缩就减去平行度以及度余,得到定度。增益之后满法度、减损之后不足,都用纪法进退。求行分,和前面方法一样。求次日定度,按所入迟疾历增减;进入虚宿,减去虚分,规则同上。
阴阳历
推算入阴阳历算法:取通实,减去会周;余数不足交数三十五万八千八百八十八又二分之一,就是朔入阳历分;超过交数,减去交数,余下是朔入阴历分。阳历分、阴历分各自满通法得一日,余下是日余,从日数起算,算外,就是天正十一月朔夜半入阴阳历的日数。
求次月入阴阳历:大月加二日,小月加一日,日余都是二万零七百七十九。历满十三日、日余满一万五千九百八十七又二分之一,就舍去一轮。阳历结束转入阴历,阴历结束转入阳历。求次日入历:加一日。求朔望差:二千零二十九乘朔小余,除以三百零三,得到日余;余数加倍,记作小分,就是朔差数。朔差再加十四日,日余二万零一百八十六,小分一百二十五;小分满六百零六并入日余,日余满通法化为一日,就是望差数。继续累加,得到后月朔差。
推算合朔、月食:取朔、望夜半入阴阳历的日数和余分,如果有半分就去掉;设置小分三百零三,加上差数;小分满六百零六并入日余,日余满通法化为一日,日数满一轮历就舍去。从日数起算,算外,就是朔望加时入历。朔望加时入历,在一日、日余四千一百九十八、小分四百二十八以下,或是十二日、日余一万一千七百八十八、小分四百八十一以上,朔就会发生交会,望就会发生月食。
求合朔、月食的定大小余:用差数的日余加上夜半入迟疾历余;日余满通法进一日,得到朔望加时入历。用入历余乘损益率,增减盈缩积分,除以差法;盈就减去、缩就加上原本的朔望小余,得到定小余。加之后满法度、减之后不足,就进退日法,调整日数。
求合朔、月食的加时:定小余乘以十二,满日法得一辰,从子起数,算外,就是加时所在时辰。有余数,乘以四,满日法一份叫少,两份叫半,三份叫太;还有余数,乘以三,满日法一份叫强;强搭配少叫少强,搭配半叫半强,搭配太叫太强。余数二份叫少弱,和太合并,算作上一个时辰的弱,用前一个时辰命名。
求月亮距离日道度数:取阴阳历余乘损益率,除以通法,以此增减兼数得到定数;定数除以十二为度,余数除以三,分少、半、太;还有剩余,一份叫强,两份叫少弱。这就是月亮距离日道的度数。阳历代表月亮在黄道外侧,阴历代表在内侧。
(表略)
求昏明中星:各自用度数加上夜半太阳所在度数,就是昏明中星度数。
推算五星算法:木星速率:一千五百七十五万三千零八十二;火星速率:三千零八十万四千一百九十六;土星速率:一千四百九十三万零三百五十四;金星速率:二千三百零六万零一十四;水星速率:四百五十七万六千二百零四。
推算五星:取度实,各自减去五星速率;余数再用速率减去它,得数除以纪法,得到入岁日,余下是日余。从天正朔日起数,算外,就是行星和太阳会合的日子。
求行星会合度数:入岁日以及日余,加上天正朔日积度以及度余;满纪法化为度数,满三百六十度连同度分就舍去,从虚宿一度起数,算外,就是行星会合所在度数。求行星出现日子:伏日和伏日余,加上会合日和日余;余满纪法进一日,依前起算,就是行星晨见或者夕见之日。求行星出现度数:伏度和伏度余,加上会合度和度余;余满纪法进度,进入虚宿减去虚分,依前起算,就是行星出现度数。
推算五星运行:度余除以小分法,得数是行分,余下是小分;每日加上当日行分,行分满法度化为度数。留,就保持原有度数;逆行,就减去行分;伏,不计算度数。顺行进入虚宿,减去行分六、小分一百四十七;逆行走出虚宿,就加上这部分。
木星:最初和太阳会合,隐伏,十六日,日余一万七千八百三十二,运行二度,度余三万七千五百四,清晨在东方出现。顺行,每日行四分,一百一十二日,运行十九度十一分。留二十八日。逆行,每日行三分,八十六日,退行十一度五分。再留二十八日。顺行,每日行四分,一百一十二日,傍晚在西方隐伏,日、度余和最初隐伏时一样。一终周期:三百九十八日,日余三万五千六百六十四,运行三十三度,度余二万五千二百一十五。
火星:最初和太阳会合,隐伏,七十二日,日余六百零八,运行五十五度,度余二万八千八百六十五,清晨在东方出现。顺行,快行,每日行十七分,九十二日,运行六十八度。稍慢,每日行十四分,九十二日,运行五十六度。很慢,每日行九分,九十二日,运行三十六度。留十日。逆行,每日行六分,六十四日,退行十六度十六分。再留十日。顺行,慢行,每日行九分,九十二日。稍快,每日行十四分,九十二日。很快,每日行十七分,九十二日,傍晚在西方隐伏,日、度余和最初一样。一终周期:七百八十日,日余一千二百一十六,运行四百一十四度,度余三万零二百五十八。扣除一周天,实际运行四十九度,度余一万九千八百零九。
土星:最初和太阳会合,隐伏,十七日,日余一千三百七十八,运行一度,度余一万九千三百三十三,清晨在东方出现。顺行,每日行二分,八十四日,运行七度七分。留三十三日。逆行,每日行一分,一百一十日,退行四度十八分。再留三十三日。顺行,每日行二分,八十四日,傍晚在西方隐伏,日、度余如初。一终周期:三百七十八日,日余二千七百五十六,运行十二度,度余三万一千七百九十八。
金星:最初和太阳会合,隐伏,三十九日,余三万八千一百二十六,运行四十九度,度余三万八千一百二十六,傍晚在西方出现。顺行,快行,每日行一度五分,九十二日,运行一百一十二度。稍慢,每日行一度四分,九十二日,运行一百零八度。很慢,每日行十七分,四十五日,运行三十三度六分。留九日。慢行,每日行十六分,退行六度六分,傍晚在西方隐伏。隐伏五日,退行五度,和太阳会合。又五日,退行五度,清晨在东方出现。逆行,每日行十六分,九日。留九日。顺行,慢行,每日行十七分,四十五日。稍快,每日行一度四分,九十二日。很快,每日行一度五分,九十二日,清晨在东方隐伏,日、度余如初。一终周期:五百八十三日,日余三万六千七百六十一,行星运行度数和日数相同。扣除一周天,实际运行二百一十八度,度余二万六千三百一十二。一合周期:二百九十一日,日余三万八千一百二十六,行星运行度数也相同。
水星:最初和太阳会合,隐伏,十四日,日余三万七千一百一十五,运行三十度,度余三万七千一百一十五,傍晚在西方出现。顺行,快行,每日行一度六分,二十三日,运行二十九度。慢行,每日行二十分,八日,运行六度二十二分。留二日。慢行,每日行十一分,二日,退行二十二分,傍晚在西方隐伏。隐伏八日,退行八度,和太阳会合。又八日,退行八度,清晨在东方出现。逆行,每日行十一分,二日。留二日。顺行,慢行,每日行二十分,八日。快行,每日行一度六分,二十三日,清晨在东方隐伏,日、度余如初。一终周期:一百一十五日,日余三万四千七百三十九,行星运行度数和日数相同。一合周期:五十七日,日余三万七千一百一十五,行星运行度数也相同。
上元之年,岁在甲子,天正甲子朔夜半冬至,日月五星汇聚在虚宿一度之初;阴阳历、迟疾历,全部从这一刻起算。
宋世祖把这份历法下发给主管官署,让朝廷内外广泛评议。当时懂得历数的人很少,最终没有提出不同意见。只有太子旅贲中郎将戴法兴提出异议,他认为:
日月星三光的术数精微,五星会合的起始,除非深入推究测算,穷尽日影变化,哪里能够刊改古法、变革今历,校正圭表星宿位置?核查祖冲之的论述,多处违背常理,我凭着浅陋见识,逐条辨析诘问。祖冲之新推历法说:“如今冬至所在宿度,每年微微偏移。”戴法兴评议:冬至、夏至,是阳气收敛、阴气生发的极点,太阳有固定轨道,星宿位置不会更改。古代历法冬至,全都在建星。战国战乱纷起,史官荒废本职;到汉初,观测法度没有定论;后来粗略观测,知道冬至在南斗二十二度,元和年间所用历法,就和古历相合。到《景初历》,始终没有丝毫差错。《尚书》说:“白昼最短,昴星黄昏中天,用来确定仲冬。”只是依靠四星掌管四季,所以中星固定在卫阳方位,羲和用来校正时节,取它万世不变。祖冲之认为唐尧时代冬至太阳在当今星宿东边五十度左右,凭空增设度分,扰乱天道。他的历法设置,离标准差半次,大约四十五年九个月,太阳就偏移一度。《诗经》“七月流火”,这是夏正申月时节;“定之方中”,又是小雪节气。如果冬至确实逐年偏移,那么豳公说大火西流的时候,日影一尺五寸;修建楚宫的时候,白昼漏刻五十三刻,这就十分荒诞了。孔子说:“我听说,大火星隐伏之后,蛰伏的虫类才全部销声。如今大火还向西流动,是掌管历法官员的过失。”如果像祖冲之所说,那么星宿没有固定星次,卦位也有偏差;名号的定义,古今一定不一样,典籍记载,后世就不能通用。尧时的开、闭,到今天变成建、除;现在的寿星次,在周代就是鹑尾次;如今的东壁,不再属于玄武,轸星反倒归苍龙,歪曲天道、违背经籍,到了这种地步。
祖冲之又修改章法,三百九十一年设一百四十四闰。戴法兴评议:太阳运行有快有慢,所以斗宿间距有宽有窄;古人设立章法,作为折中标准,十九年七个闰,就算日影有盈有亏,这个制度不能改动。祖冲之削减闰数、破坏旧章,大幅改动余数,一百三十九年二月,对比四分历的标准,一下子少一天;七千四百二十九年,就少一个闰月。日数少,推算就早于实际天时;闰月缺失,农事时序就错乱。按时令安排农事,农事用来养育百姓,这是民生根本,历数第一要务。我担心这不是祖冲之浅陋思虑可以随意穿凿改动的。
祖冲之又规定上元日度从虚宿一度起算,说虚宿是北方七宿正中。戴法兴评议:祖冲之一边说冬至岁差,一边又说虚宿是北方正中,舍弃本体追逐影子,实在迷惑。为什么?天上没有太阳就不能明亮,地上依靠斗星辨别方位。假如冬至太阳在虚宿,黄道就很远,东北就该是黄钟对应的方位,室、壁应当属于玄枵星次,虚宿怎么还能算作北方正中?如果强行让二分二至不断迁移,星次却不变,招摇斗柄方向改换,律吕却沿用旧名,那么日月五星就不能用璇玑玉衡校准,时节也不能依靠摄提来纪,不知道五行归属于哪里,六气依托何处?
祖冲之又设定上元年份是甲子。戴法兴评议:设立上元、纪法,各有取法,有的依据图谶文字,有的贴合当时天象。祖冲之说:“各家说法纷乱,找不到统一的本源。”从前《黄帝历》上元辛卯,日月运行没有差错;《颛顼历》上元乙卯,四季没有偏差;《景初历》上元壬辰,晦朔没有差错;《元嘉历》上元庚辰,朔日没有偏差,这些难道不是顺应天道吗?祖冲之只求凑甲子,是强行迎合干支,强求贴合天道。
祖冲之又让日月五星、交会、月行迟疾,全都以上元为起点。戴法兴评议:交会的上元,只要能推算日食月食就可以;月行迟疾的奥妙,不是普通人能测知的。从前贾逵粗略发现偏差,刘洪初步写下术法,至于精密的数值,没有人探究到底。而且五星位置,时常有盈缩,就比如岁星在轸宿,出现的时候超前七辰;历算家只能倒推来贴合当下,过去和未来,哪里能全部确定。《景初历》在纪首另外设置差数,《元嘉历》又单独设立后元,都是为了实用简化,不做无用的遥远推算。祖冲之既在历法改动上违背天道,又新设法度满足自己的想法,我认为这是治历重大过失。
戴法兴又说:太阳运行有八条轨道,各自成一道;月亮只有一条轨道,分化成九行,左交右疾,倍半相反,月亮一个周期的总日数应当相同。祖冲之的通周与会周相差九千零四十,阴阳历七十九周有余,迟疾历还走不满一轮。也就是该减的时候反而增加,该损的时候反而增益。
祖冲之针对戴法兴的诘难逐条辩驳:
臣年少时偏爱历算,专心钻研术数,搜集研读古今典籍,广泛吸取深奥义理;唐尧、夏代的典籍,全部加以核验;周代正朔、汉代朔日,都逐条考证。用尽筹算思考,辨析历法疏密。像球体体积旧算法有误,张衡沿袭而不改正;汉代斛的铭文,刘歆伪造数值,这些都是算学里重大的弊病。《乾象历》的弦望定数,《景初历》的交度周日,不是观测不精细,而是乘除运算出错,这又是历家很大的失误。至于郑玄、阚泽、王蕃、刘徽,都通晓数术,但是著作里也常有疏漏错讹。臣从前闲暇之时,订正众多谬误,证据清晰,容易核验周密,这是臣依据实测,不盲目遵从古人的原因。考察何承天的《元嘉历》,二分二至推算早于实际天象,闰月偏移一月,五星出现隐伏,误差有的超过四十天,差数胡乱设置,该增益反而减损,都是旧术的巨大偏差,也是臣新历所要订正的。顺着源流探求病根,删去滞碍,阐发要领,能让星宿运行和上天相合,圭表、律管观测和地下实测吻合,反而遭到讥讽诋毁,实在可惜。戴法兴提出的六条诘难,都没有抓住历法原理的关键。臣逐条陈述:
第一,太阳岁差,旧历忽略,臣依据经史订正这个数值,戴法兴发难,引用《诗经》《尚书》,三处证据全都错了。第二,臣核验日影,修改旧章法,戴法兴提出质疑,拿不出实质反驳,只说恐怕不是浅陋之人可以随意穿凿。第三,星次、方位迁移,臣历法并没有这个说法,是他误解术意,凭空贬斥。第四,历以上元甲子,术法整齐清晰,他却说刻意凑甲子值得怀疑。第五,臣历法七曜推算,全部从上元起算,严密无隙,他却说不是凡人可以测知。第六,迟疾历、阴阳历的道理,戴法兴没能理解,错误认为两套周期的总日数应当相等。以上这些,有的引用错误论据指责,有的凭空否定,没有公允的辨析、让人信服的论证。臣顺着诘难逐条解释,依照本源回应,仰仗君主明察,倾尽浅陋所知。
戴法兴说:“冬至夏至,是阴气阳气收敛生发的极点,太阳有固定轨道,星宿位置不会更改。所以古历冬至,全都在建星。”祖冲之答:周汉之际,历官荒废学业,旁门术数纷纷兴起,图谶纬书繁多,有的假借帝王名号抬高自己,有的托名圣贤神化说法。所以谶记大多虚妄,桓谭早就知道它伪诈;古历错杂,杜预怀疑它不实。查《五纪论》,《黄帝历》就有四种算法,《颛顼历》《夏历》《周历》又各有两种版本,诡异纷乱,谁能确定哪个是真?这是古历可疑的第一条证据。夏历说七曜向西运行,和别的历法都不一样,刘向认为是后人伪造,这是第二条。殷历日法九百四十,但是《乾凿度》说殷历以八十一为日法。如果《易纬》没错,殷历就一定虚假,这是第三条。《颛顼历》上元乙卯,《命历序》却说这个术法上元甲寅,这是第四条。《春秋》记载日食写明朔日一共二十六次,所用历法不是周历就是鲁历。用周历核验,朔日错了二十五次;用鲁历核验,错了十三次。两套历法都不合,必然有一套是假的,这是第五条。古代六家历法,都和《四分历》相近,《四分历》用久了,推算就晚于天象。用日食检验,三百年就差一天。拿古历对照现在,粗疏的版本,朔日推算晚于天象两天多。由此推断,古历的成书,大多在周末汉初,不可能是三代之前的原作。再回头核验《春秋》,古历朔日全都推早于天象,这足以证明不是三代流传的准确历法,这是第六条。查《律历志》,前汉冬至太阳在斗、牛之间,度数靠近建星,二者位置相近;除非上古圣王精心制作,不然仪器漏刻不完备,怎么能做到丝毫不差?所以“建星”这个说法,不足以作为凭据。
戴法兴说:“战国纷乱,史官荒废本职;到汉初,观测法度没有定论;后来粗略观测,知道冬至在南斗二十二度,元和年间所用历法,就和古历相合。到《景初历》,始终没有丝毫差错。”祖冲之答:古术讹乱,详细情况已经无从考证;乙卯年的《颛顼历》,秦代使用,在当时有效,所以说法可以拿来参考。汉武帝改创《太初历》,核验完备,校正仪器、审度漏刻,事迹记载在前代史书,观测星宿、分辨度数,道理不会偏差太远。现在评议者所推崇的,没有亲眼实测;所否定的,只是凭空猜测。用这个否定那个,算不上通达的言论;厚古薄今,歪曲事实的地方很多,只采信一家说法,不如兼顾古今、以实测为准。《景初历》实际上五星推算有错,如今验证,偏差已经很明显。它只是粗略整理朔望,不去仔细观测校验,所以日影、漏刻、昏明时刻,直接沿用元和旧法,二分日影已经有偏差,也不修订,太阳宿度的细微误差,自然就错了。
戴法兴说:“《尚书》说‘白昼最短,昴星黄昏中天,用来确定仲冬’。只是依靠四星掌管四季,所以中星固定在卫阳方位,羲和用来校正时节,取它万世不变。祖冲之认为唐尧时代冬至太阳在当今星宿东边五十度左右,凭空增设度分,扰乱天道。”祖冲之答:《尚书》依靠四颗黄昏中天的星来审定二分二至,是君主面向南方观测而言。而且南北方位的标准,容易校准;星体东升西落,中天是观测基准。前代儒者注解,意思都一致。戴法兴却说《尚书》里四星都在卫阳、巳位,既偏离观测方向,又不是星体刚升起的位置,牵强曲解经文,迁就自己的主张,违背经文本义,实在过分。舍弃正午方位,硬说巳位,正午天空并不是没有星。如果只凭中星定时,别的星宿难道就不能定时?如果说举中星就包含全部七宿,那觜、参还隐没在地平下,就不能说;昴星就算出现,也该说隐伏;奎、娄已经升起,又不能说是隐伏,这个说法站不住脚,名号依托在哪里?如果中星的道理说不通,随便编造说辞,那么曾泉、桑野,全都能当作证据,二分二至到底在哪一天?反复思考,实在叹息。
戴法兴说:“他的历法设置,离标准差半次,大约四十五年九个月,太阳就偏移一度。”祖冲之答:《元和历》的日度,戴法兴所推崇,还说古历冬至在建星。用现在天象核验,臣的历法冬至也在这个宿,斗二十二度没有确凿证据,他却凭空贬斥臣的历法偏差半次,让我十分诧异。而且岁余是十一月,他说成九月,推算数字屡屡出错,都是这类。月食一定发生在和太阳对冲的位置,用月食反推太阳宿度,就能分辨对错,请用实测效验来评判疏密。查太史注记:元嘉十三年十二月十六日半夜月全食,月亮在鬼宿四度,对冲推算太阳应当在牛宿六度;按照戴法兴的说法,太阳在女宿七度。元嘉十四年五月十五丁夜月全食,月亮在斗宿二十六度,对冲推算太阳应当在井宿三十度;戴法兴说太阳在柳宿二度。元嘉二十八年八月十五丁夜月食,月亮在奎宿十一度,对冲推算太阳应当在角宿二度;戴法兴说太阳在角宿十二度。大明三年九月十五乙夜月全食,月亮在胃宿末尾,对冲推算太阳应当在氐宿十二度;戴法兴说太阳在心宿二度。这四次月食,全都和臣历法吻合,丝毫不差,戴法兴的推算一下子差十度,对冲位置、星宿明显错位,一眼就能看清。所以知道天度慢慢偏移,应当遵从实测来定典章;天象证据清晰,怎么能信古而疑今。
戴法兴说:“《诗经》‘七月流火’,这是夏正申月时节;‘定之方中’,又是小雪节气。如果冬至确实逐年偏移,那么豳公说大火西流的时候,日影一尺五寸;修建楚宫的时候,白昼漏刻五十三刻,这就十分荒诞了。”祖冲之答:臣核查这三条说法全都错误。《诗经》说大火西流,只是粗略举大火向西移动,作为寒气将至的征候。“流”,不是才开始移动的意思。就算按他的理解,冬至太阳在斗二十二度,大火星中天,应当在大暑之前,哪里靠近申月?这是他自己自相矛盾,不是我的历法有错。《夏小正》:五月黄昏,大火星中天。这难道也是卫阳方位?又说臣历法推算楚宫营建在九月初。查《诗经》的传、笺都说,“定之方中”是室宿、壁宿黄昏中天,用来端正四方。那么中天的标准时刻,应当在室宿八度。用臣历推算,元年立冬后四日,这个度数黄昏中天,是十月初,也不是寒露。评议者的错误,是把周代当成尧时,忽略五十度的岁差,才生出这个谬误。小雪这个说法,只是他自己的臆断,没有明文依据。
戴法兴说:“孔子说:‘我听说,大火星隐伏之后,蛰伏的虫类才全部销声。如今大火还向西流动,是掌管历法官员的过失。’如果像祖冲之所说,那么星宿没有固定星次,卦位也有偏差;名号的定义,古今一定不一样,典籍记载,后世就不能通用。尧时的开、闭,到今天变成建、除;现在的寿星次,在周代就是鹑尾次;如今的东壁,不再属于玄武,轸星反倒归苍龙,歪曲天道、违背经籍,到了这种地步。”祖冲之答:臣认为北极居中,众星有序;天体形态不同,阴阳界限分明。所以羽虫、鳞虫各有归属,水火方位固定;苍龙、白虎分列,东西方位可以确定,不是靠太阳所在位置来定星宿名号。怎么证明?阳爻初九,元气起于正北;玄武七宿,虚宿对应子位。如果用浑仪辨方位,以太阳为主,冬至太阳所在,应当属于玄枵;而如今冬至太阳的位置,偏向东方,和本体方位不合,道理怎么说得通?如果南北凭冬夏命名,东西凭生杀定名,难道春天太阳跑到义方,秋天跑到仁域,名号和事实颠倒?由此可知,上天用星宿划分方位,不由四时决定;日月循环运行,太阳不会永远守在旧位置。至于黄昏中星出没,典籍用来定时,是因为历数深奥,天象观测容易看见,只是取一代贴合的天象,作为简易的政令依据。就像夏代礼乐不能沿用商代典章,《濩》乐不能照搬《韶》乐,天道本身有差移,术法自然随时代变化。月建的名号,是依托节气本源,名号随实际而定,不是斗柄指向决定。近一点核验汉代,斗建已经差半次,靠斗柄定时,哪里还准?有的说法没有经文依据,只是附会成论,纬候之书很多虚假,夹杂伪辞。星次跟着方位命名,和星宿本体相合。二分二至就算迁移,星宿方位不变,哪里谈得上苍龙、朱雀换位,金水星宿错乱?指责名号错乱,是没有仔细考究。至于壁宿不属于玄武、轸属于苍龙,观测度数、核对日影,实测都是这样。《元嘉历》寿星次起点,也在翼宿范围,对照晋代注记,证据很多。天度偏移,一百多年就很明显;评议者就算能言善辩,除非能证明冬至不在南极、望日不在对冲,他的说法才站得住。如果太阳位置推移、星次方位不变,这不正是臣历法的证据,不是诘难者可以用来攻击的。臣立论一定依据经史,远考唐尧典籍,近证汉代记载,谶纬零碎说法,不敢采信,算是遵从经义的议论。月食反推日度,证据昭然,史书注记详细,藏在秘府,这又是核验天道的依据。《尧典》四星,全都在卫阳,当今太阳宿度,和元和旧历差距很远,说我歪曲经典,恰恰是他自己的问题。
戴法兴说:“太阳运行有快有慢,所以斗宿间距有宽有窄;古人设立章法,作为折中标准,十九年七个闰,就算日影有盈有亏,这个制度不能改动。祖冲之削减闰数、破坏旧章,大幅改动余数,一百三十九年二月,对比四分历的标准,一下子少一天;七千四百二十九年,就少一个闰月。日数少,推算就早于实际天时;闰月缺失,农事时序就错乱。按时令安排农事,农事用来养育百姓,这是民生根本,历数第一要务。我担心这不是祖冲之浅陋思虑可以随意穿凿改动的。”祖冲之答:查《后汉书》和《乾象历》的解说,《四分历》的章篰制度,虽然元和年间创设,但是日影、仪器的数值,在嘉平三年才最终确定。《四分志》记载,立冬正午影长一丈,立春正午影长九尺六寸。冬至太阳在最南,日影最长;立冬、立春距离冬至天数相等,日影应当一样长,但是一长一短,相差四寸,这就是旧历冬至推算晚于天象的证据。立冬、立春的日影差,每天差九分半弱,变化均匀,没有忽多忽少。按比例推算,两个节气各自往前推二日十二刻,日影就会持平,立冬影更短、立春影更长,都是九尺八寸,这才是立冬、立春的正日。由此推算,旧历冬至,比真实天象晚二日十二刻。嘉平三年,当时历法推算丁丑冬至,加时在正午;减去二日十二刻,真实天象是乙亥冬至,加时在夜半之后三十八刻。另外臣常年观测日影,亲自分辨分寸;铜圭表坚固,风吹日晒不受影响,光影清晰,毫厘分明。据大明五年十月十日,影长一丈七寸七分半;十一月二十五日,一丈八寸一分太;二十六日,一丈七寸五分强。取中间值,中天冬至应当在十一月三日。推算早晚,用后两天影长相减,得到一天影差;加倍作为除数,前两日影长减去中间值,乘以一百刻作为被除数,相除得到冬至加时在夜半后三十一刻,比《元嘉历》早一天,这才是天道实数。全年核验,差值均匀;不同年份比对,远近符合比例。臣凭借这个实测,订正章法。用臣历推算,刻数和前面一致,我认为足够精密,可以作为永久定式。考究古历法和《四分历》相同,《四分历》的历数时间久了就会落后于天象,每过三百年,朔日就会相差一天。所以汉代四百年间,日食大多发生在晦日。魏代以来,就革除了这套历法,当时世人没有非议它的,确实是因为它和天象相合。章岁取十九年,粗疏的毛病尤其突出,这和前代旧术一样,并不是出自经典。可是有人议论说这套历法自古沿用,历数不能改动。如果古法虽然粗疏,却要永远遵照使用,这个说法要是成立,那戴法兴就可以在当今重新推行《四分历》了,道理上说得通吗?这是我所不能理解的。如果说我如今革新创立的历法违背天道、失于中正,也没有看到确凿的证据可以驳倒我的历法。《元嘉历》的算法,减了闰余二分,只是沿袭旧的分数,粗略估算,所以进退不能和天象吻合。至于舍弃多余的余分以求准确,并不违背事理。就按照议论者的意思,历数一概不能改动,那么分数就不能增减,何承天当初制定历法,反倒成了错谬。节气的早晚,应当遵从《景初历》,冬至夏至相差三天,他们却看不出这是错误,反倒无端指责我的历法有失。只知道太阳运行偏快会提前,却不明白增加闰月造成的混乱,实在是没有用天象来检验,怎么能懂得历数的要领。关乎生民日用的根本大事,本来就不是随意臆断所能裁定的。另外戴法兴一开始说自己通晓日影变化,可以订正旧法、变革现行历法,后来又说日影的盈缩变化,不能作为标准,前后自相矛盾,不知道该以哪一个说法为准。如果推步测算都不能取准,天象规律完全无法观测把握,那就不知道历法纪元是凭什么建立的。考察自《春秋》以来一千多年,用日食来核验朔日,从来没有差错,这正是太阳运行有恒定规律的明证。况且我连续多年观测日影,仔细体察毫厘之间的细微变化,用以往的天象来核验,相合如同符契。孟子说千年之后的冬至,可以坐着推知,这话确实不假。说太阳运行有快有慢,没有见到可靠证据,空洞的言辞来贬斥,我并不畏惧。
戴法兴议论说:“祖冲之既然说冬至有岁差,又说虚宿是正北之中,抛开天体本体,只去追究日影,这样的迷惑还不算轻。为什么呢?天上没有太阳就不能显现方位,地上依靠斗星辨别方向。假如冬至太阳在虚宿,黄道就会更远,东北方向就该对应黄钟之宫,室、壁二宿应当属于玄枵星次,虚宿又怎么能是正北之中呢?强行让分至点不断迁移,但是星次却不改变,招摇星的指向变了,律吕却照旧不变,那么日月五星就不能靠玑衡仪器校准,确定时节也不再依靠摄提星来纪时,不知道五行该依附何处,六属又依托什么?”祖冲之说:这一条所质疑的内容,在前次奏牒里已经详细说明。星次改换、方位迁移,虚宿本就不是正中位置,对方铺陈大量言辞举证,只是自己制造纷乱迷惑,都是议论者本身的谬误,并不是我的历法设置有问题。日月五星能够校准齐一,本来依靠浑天仪,郑玄、王肃都阐发过这个道理,训释清晰公允,虽然有不同说法,都不是符合实情的正解。
戴法兴议论说:“设立历元、划分纪段,各有侧重,有的依据图谶文字,有的取效于当下时用。祖冲之说‘各家历法纷乱,没人能把握其中关键。’从前《黄帝历》以辛卯为历元,日月运行没有偏差;《颛顼历》以乙卯为历元,四时没有差错;《景初历》以壬辰为历元,晦日没有失度的日食;《元嘉历》以庚辰为历元,朔日没有错乱的日影,这些难道不是顺应天道的历法吗?祖冲之执意选取甲子为历元,可以说是为了凑合甲子而去迁就天象。”祖冲之说:历法贵在精密有效,不能强求别的名目,迎合图谶的怪异说法,本就不是义理所取,就算在当时能够应验,也不能通用于久远,这也是我不能认同的。历元选取干支起始,道理明白正当。不知道辛卯历元的说法依据是什么,古代术数诡僻错谬,之前的文书里已经写明,拘泥名号而丢掉实质,算不上探求隐微的学问。如果说历法只能适合一时,不能长久使用,历元只要是日月交会之时,没有固定年份,我现在用实效来证明。夏、商以前,典籍散失,《春秋》和汉代史书,都记载日食,正朔记载详审清楚,可以核验。用我的历法去检核,全都相互吻合,确实不是虚设,遵循精密的算法推求,千年之后也不会有出入,那么久远的天象也可以推知。遍览前代历法,粗疏之处很多,有的朔日相差三天,节气偏移七天,没听说这样的历法可以一直沿用至今。之前有人说乙丑历元不合正道,现在我取甲子为历元,议论者又怀疑是刻意凑数,要是干支起始的年份都不能当作历元,那么推求前代历法的人,又该从哪里入手?历法的编撰,几乎就要断绝了。刻意求合,必然会有不能相合之处,希望拿出确凿证据,来核验事理真伪。
戴法兴说:“交会的历元,如果确定,日食月食就可以推求;日月运行的迟速变化,不是普通人能够测知的。从前贾逵粗略发现其中的差度,刘洪粗略写下相关算法,至于精密的数值,没有人推究到底。而且五星运行的位置,时常有盈缩,就好比岁星运行到轸宿,观测到它超前七个辰次。历法家既然能够回溯推算,让古历和今天天象相合,那么往古与未来的天象,也完全可以推知。《景初历》在纪首设置差度,《元嘉历》另外设置后元,都是为了在实际使用中省去繁复计算,不做无谓的推演,徒增烦难。祖冲之修改历法,既违背天道,又自设算法迁就自己的想法,我认为这是治历最大的过失。”祖冲之说:日月迟速的比率,不是什么神异玄妙之事,有形迹可以观测,有数字可以推求,贾逵、刘洪能够记述,后人就可以在前人基础上不断求精。议论又说“五星所处位置,时常有盈缩”,“岁星在轸宿,超前七辰”,意思是岁星本该每年移动一个辰次。考察岁星运行,每年都会越过星次,在天上运行七圈,就会超前一个位次。历代推算,一共十家历法,都和这一规律在一时相合,史书的记载,也和天象检验相符。这说明岁星超次的运行,本就是固定规律,不是无端乱行,骤然越过对冲位置。如果真的是因为运行快慢不定,怎么会一直偏快而没有减慢的时候。观测天象、推求星象的人,一定要分辨度数,考校过往、验证将来,以实测天象为准,依据经史记载。那些牵强的辩说、细碎的言论,大多虚浮诡诈,甘德、石申的著作,本身就互相矛盾。现在拿着一句经文,就指责一字的错处,固执片面的论调,蒙蔽正理,这是我不能信服的。测算从近处开始,各家算法本可以相通,只是《景初历》的两种差度,何承天的后元,是因为奇偶之数不能契合,所以数值不能完全相同,才预留前元、另设后元,以求简便。提出观点阐发道理,哪里是刻意标新立异,只是要让实情通过文字显明,道理能够说透。稽考历元起始,所有历数都从这里开端,这本是历法的根本,按理不该被非议;非议的人却当成过失,这是极大的谬误。那么《元嘉历》设置历元,虽然各项历数参差,却还能让纪首契合甲子,节气朔日一同终尽,这又算是小的过失。难道一定要凭空设立上元,假称历法开端,年份和干支起始不相配,日期避开辰首,闰余、朔分、月行、五星各项历数,全都不能有尽头,才算公允妥当的制度?设置历法,是为了贴合实情,满足测算的需要;说我修改历法违背天道,我看不到这样指责的道理。
戴法兴说:“太阳有八条轨道,合为一道;月亮本来只有一条轨道,分化成九条轨道。左交右疾,倍数半数互相矛盾,那么一个周期之内,日数应当相同。祖冲之的历法里,交会周和会周相差九千零四十,阴阳七十九周有余,迟疾周期还不到一圈,这就是该收缩反而盈余,该减损反而增益。”祖冲之说:这一段议论虽然空洞没有依据,但是说法可以核验。拿太阳八条轨道比喻月亮九条轨道,意思是月亮运行的轨道,应当固定不变,在天上循环,按理不会有差变。若是这样,交会的时候,就该有固定位置,怎么会有时在斗宿、有时在牛宿,同在一个经度。距离北极的度数应当相等,怎么会南北没有定准。如果日月的运行不是这样,那八行之说就是多余的空话?所谓左交右疾,语意模糊不清,是说交点和疾行相对?还是离开交点就进入疾行段?如果离开交点就进入疾行段,那么交点在平均历日入历第七日和第二十一日。遇到交点发生日食月食,就应当在盈缩的极点,怎么会有或多或少的增减。如果交点和疾行相对,那么交点的对冲位置,就是迟疾变化的起点,入历的深浅怎么会没有定数。倍数半数互相矛盾,新旧历法都有这个情况,又特意标出这一句,想要证明什么?我阅览古今历书,大致完备,却从来没有听过这样的说法,远不符合古制,近违背天象历数,我私下十分疑惑。推究迟疾、阴阳本不是互相生成的,所以交会的时刻,进退没有定准,从前的历法早就记载,前代儒者也说得很详尽。戴法兴却说周期日数应当相同。我认为议论者并不明白这个道理,谬误自现,不需要过多辩驳。既然说盈缩失中,又不写明具体数值,或许是自己也知道所持论点站不住脚,才说得笼统简略?另外用整数作为比率,应当互相折算分数,戴法兴列出的两个数字全都有误,有的把八十写成七十九,所谓该收缩反而盈余,该减损反而增益,就是指这一条。总的来看他的议论,不只是说我的历法不精密,还说何承天的历法错谬更严重。如果我的历法应当废弃,那么何承天的历法更加不能使用。戴法兴既然看得这么清楚,那就应当革新历法。不是夏至正午,不是望月对冲,这些新说法,想必有精妙的辩词吧?
当时戴法兴深受宋世祖宠信,天下人都畏惧他的权势,他提出异议之后,议论的人全都附和他。只有中书舍人巢尚之认可祖冲之的历法,坚持认为应当采用。宋世祖喜爱新奇、仰慕古制,打算施行祖冲之的新历,当时是大明八年。打算等到第二年改元,借着改元的机会改用新历。还没来得及施行,宋世祖就驾崩了。
志第四 礼一
凡是有封国、有家室的君主,礼仪的功用向来重大。但是历代对礼仪有所增减变革,常常各不相同,并不是刻意要互相改动,只是顺应时宜罢了。汉文帝觉得人情日渐浅薄,国丧就革除了三年服丧的制度;汉光武帝中兴之后崇尚节俭,七庙就采用同堂供奉的制度;魏太祖认为奢侈惑乱应当矫正,临终殓葬去掉了袭衣重称的繁复礼数;晋武帝认为圜丘祭天和南郊祭天没有区别,夏至、冬至一并在南北两处祭祀。这些制度互相承袭沿用,一直到今天,难道是三代的典制不存在了吗?只是选取适合时代变化的做法而已。闵子骞非议古礼,随后辞官;叔孙通创制汉代礼制,教化流传后世。由此来说,一意孤行而不效法古制,秦朝因此灭亡;一味效法古制而不合时宜,王莽因此败亡。所以汉、魏以来,各家都斟酌古今的折中之道,来制定一代的礼仪。司马彪汇集后汉各家注记,写成《礼仪志》,核对当时施行的礼制,已经和前汉差别很大。更何况三国鼎立,历经晋代到刘宋,时代变迁,各项制度都随事设立。自从汉末战乱,旧有的典章败坏松弛,魏初由王粲、卫觊主持议定各项礼仪;蜀国由孟光、许慈创立制度;晋初由荀顗、郑冲详细修订晋代礼制;江东东晋由荀崧、刁协整理紊乱的礼仪。这期间有名的儒者、博学之士,论述记载的内容,常常有新的见解,不能全部记载。现在摘录魏代以后治国的重大典章,来充实这篇礼志。
魏文帝虽然从汉朝接受禅让,却认为夏代的历法合乎天道,所以黄初元年下诏说:“孔子说‘奉行夏代的历法,乘坐殷代的大车,戴周代的冠冕,乐舞用《韶舞》。’这是圣人汇集各代的美善制度,为后世君王订立法则。《传》说‘夏代的历法合乎天道’。我继承唐尧、虞舜的美统,至于正朔,应当依照虞、夏的旧例。至于徽号、器物、礼乐、服色、祭祀用的牲币,自然依照土德的数度。每一季的末月,穿黄色衣服十八天,腊祭定在丑日,祭祀牲畜用白色,旌旗的装饰依旧用赤色,只是旗幡用黄色。其余郊祀天地、朝会四时的服饰,沿用汉制。宗庙祭祀的服饰,完全依照《周礼》。”尚书令桓阶等人上奏:“依据三正循环的道理,本朝承接汉代人正之后,应当采用地正,祭祀牲畜应当用白色,如今沿用汉代以十三月为岁首,那么牺牲不能单独更改。现在新建皇统,应当稽考前代古典,顺从天命,但是告朔的牺牲全都不改,不能彰显改朝换代的大义。”诏书答复:“服色按照奏议施行。其余依照虞舜承接唐尧的旧例,只是腊祭放在丑日,这也是圣人定下的制度。”
魏明帝即位,就有更改正朔的想法,朝堂议论意见不一,所以迟疑不决。很久之后才下诏:“黄初以来,众儒一起讨论正朔,有的认为应当改,有的认为不改才对,意见分歧,到现在没有定论。我在东宫的时候听说这件事,常常认为孔子作《春秋》,贯通三统,作为后世君王的法则。正朔和服色各随本统,不必沿袭前朝。自从五帝、三王之后,有的父子相继,一脉相承而德运不同;有的受禅于大麓,在文祖庙接受帝位;有的起兵征伐,奉行天命诛伐。虽然所处时代不同,途径不一样,但是没有不更改正朔、变换服色,彰显文物制度,用来表明承受天命符瑞的。这么说来,何必认定不改才是正确的!”

川公网安备51132102000345号