〔1〕魏尚书郎杨伟表曰:“臣览载籍,断考历数,时以纪农,月以纪事,其所由来,遐而尚矣。乃自少昊,则玄鸟司分,颛顼、帝喾,则重黎司天;唐帝、虞舜,则羲和掌日,三代因之,则世有日官。日官司历,则颁之诸侯,诸侯受之,则颁于境内。夏后之世,羲和湎淫,废时乱日,则《书》载《胤征》。由此观之,审农时而重人事,历代然之也。逮至周室既衰,战国横骛,告朔之羊,废而不绍,登台之礼,灭而不遵,闰分乖次而不识,孟陬失纪而莫悟,大火犹西流,而怪蛰虫之不藏也。是时也,天子不协时,司历不书日。诸侯不受职,日御不分朔,人事不恤,废弃农时。仲尼之拨乱于《春秋》,托褒贬纠正,司历失闰,则讥而书之,登台颁朔,则谓之有礼。自此以降,暨于秦汉,乃复以孟冬为岁首,闰为后九月,中节乖错,时月纰缪。加时后天,蚀不在朔,累载相袭,久而不革也。至武帝元封七年,始乃悟其缪焉,于是改正朔,更历数,使大才通人,更造《太初历》,校中朔所差,以正闰分,课中星得度,以考疏密,以建寅之月为正朔,以黄钟之月为历初。其历斗分太多,后遂疏阔。至元和二年,复用《四分历》,施而行之,至于今日,考察日蚀,率常在晦,是则斗分太多,故先密后疏而不可用也。是以臣前以制典余日,推考天路,稽之前典,验之以蚀朔,详而精之,更建密历,则不先不后,古今中天。以昔在唐帝,协日正时,允厘百工,咸熙庶绩也。欲使当今国之典礼,凡百制度,皆韬合往古,郁然备足,乃改正朔,更历数,以大吕之月为岁首,以建子之月为历初。臣以为昔在帝代,则法曰《颛顼》,曩自轩辕,则历曰《黄帝》,暨至汉之孝武,革正朔,更历数,改元曰太初,因名《太初历》。今改元为景初,宜曰《景初历》。臣之所建《景初历》,法数则约要,施用则近密,治之则省功,学之则易知。虽复使研桑心算,隶首运筹,重黎司晷,羲和察景,以考天路,步验日月,究极精微,尽术数之极者,皆未能并臣如此之妙也。是以累代历数,皆疏而不密,自黄帝以来,常改革不已。”
魏国的尚书郎杨伟上表说:“我阅读书籍,考察历法,用时节来记录农事,用月份来记录事情,这样的做法由来已久,可以追溯到远古。从少昊时代开始,就用玄鸟来掌管春分和秋分;颛顼和帝喾时代,让重黎主管天文;唐尧和虞舜时代,让羲和掌管太阳的运行。夏、商、周三代沿袭这种做法,世代都有日官。日官主管历法,将历书颁布给诸侯,诸侯接受后,再颁布到自己的封地内。夏朝时,羲和沉迷酒色,荒废了时节,扰乱了日月,所以《尚书》中记载了《胤征》这篇。由此看来,重视农时和人事,历代都是这样做的。到了周朝衰落,战国纷争,告朔的羊被废弃而不再延续,登台颁布历法的礼仪也被废除而不遵守,闰月错位却无人知晓,正月失序也无人醒悟,大火星(心宿)还在西流,人们却奇怪为什么蛰虫不藏起来。那个时候,天子不协调时节,司历官不记录日子,诸侯不履行职守,日官不区分朔日,不关心农事,废弃了农时。孔子在《春秋》中拨乱反正,用褒贬来纠正,司历官漏掉闰月,他就讥讽并记录下来,登台颁布朔日,他就认为这是有礼的。从此以后,到了秦汉时期,又用孟冬作为一年的开始,闰月放在后九月,节气混乱,时间月份错乱。加上时刻落后于实际天象,日食不在朔日,这种状况沿袭了很多年,很久没有改变。到了汉武帝元封七年,才意识到其中的错误,于是改正历法,更换历数,让有才华通达的人重新制作《太初历》,校正中朔的误差,来修正闰分,观测中星得到度数,来考察疏密,以建寅之月为正月初一,以黄钟之月为历法起点。这个历法的斗分太多,后来就变得疏阔了。到了汉章帝元和二年,又重新使用《四分历》,施行沿用直到今天,考察日食,常常在晦日,这是因为斗分太多,所以先精密后疏阔而不可用。因此我此前在制定典章制度的剩余时间,推考天象,查阅前代典籍,用日食朔日来验证,详细精审,重新建立精密的历法,这样既不提前也不落后,古今都符合天象。就像古代唐尧时,协调日月、端正时节,使百官各尽其职,各种事业都兴盛。想要使当今国家的典章礼仪、所有制度,都符合古代,完备充足,于是改正历法,更换历数,以大吕之月为岁首,以建子之月为历法起点。我认为古代帝王时代,历法叫《颛顼历》,从轩辕黄帝时起,历法叫《黄帝历》,到了汉武帝改革历法,改年号为太初,因此称为《太初历》。现在改年号为景初,应该叫《景初历》。我所建立的《景初历》,法则数字简约扼要,施用起来接近精密,治历省事,学起来容易懂。即使让研桑(精通计算的人)心算,隶首(古代数学家)运筹,重黎掌管晷影,羲和观测日影,来考察天象,推算日月,穷尽精微,达到术数的极致,也无法像我的历法这样巧妙。所以历代历法,都疏阔而不精密,从黄帝以来,常常改革不断。”
〔2〕壬辰元以来,至景初元年237丁巳岁,积四千四十六,算上。
从壬辰元开始,到景初元年丁巳年,累积了四千零四十六年,这是包括起点年份在内的算法。
〔3〕此元以天正建子黄钟之月为历初,元首之岁,夜半甲子朔旦冬至。
这个历元以天正建子月(即黄钟月,农历十一月)作为历法的起点,在元首的那一年,夜半甲子日朔旦冬至。
〔51〕交会纪差十万三千六百一十。求其数之所生者,置一纪积月,以通数乘之,会通去之,所去之余,纪差之数也。以之转加前纪,则得后纪。加之未满会通者,则纪首之岁天正合朔月在日道里;满去之,则月在日道表。加表,满在里;加里,满在表。
交会纪差是十万三千六百一十。这个数是怎么来的呢?取一个纪的累积月份,乘以通数,再用会通去除,余数就是纪差。把这个纪差加到前一个纪上,就得到后一个纪的纪差。如果加后不满会通,那么该纪首年天正月的合朔时月亮在日道里面;如果满会通而去掉,则月亮在日道外面。如果原本在表(外面)的,加满会通就在里(里面);在里的,加满就在表。
〔52〕迟疾纪差三万一百八十。求其数之所生者,置一纪积月,以通数乘之,通周去之,余以减通周,所减之余,纪差之数也。以之转减前纪,则得后纪。不足减者,加通周。求次元纪差率,转减前元甲寅纪差率,余则次元甲子纪差率也。求次纪,如上法也。
迟疾纪差是三万一百八十。这个数怎么来的呢?取一个纪的累积月份,乘以通数,再用通周去除,余数再用通周减去,减完的余数就是纪差。用这个纪差去减前一个纪的纪差,就得到后一个纪的纪差。如果不够减,就加上通周。求下一个元(更长的周期)的纪差率,用前一个元的甲寅纪差率减去本元的甲寅纪差率,余数就是下一个元的甲子纪差率。求下一个纪,方法同上。
〔53〕推朔积月术曰:置壬辰元以来,尽所求年,外所求,以纪法除之,所得算外,所入纪第也,余则入纪年数也。以章月乘之,如章岁而一,为积月,不尽为闰余。闰余十二以上,其年有闰。闰月以无中气为正。
推算朔日积月的方法:设置从壬辰元开始,到所求年份为止(包括所求年),用纪法去除,得到的结果(不包括余数)就是进入第几个纪,余数就是进入该纪的年数。用章月(235)乘以这个年数,再除以章岁(19),得到积月,余数就是闰余。如果闰余在十二以上,这一年就有闰月。闰月以没有中气的那一个月为准。
〔54〕推朔术曰:以通数乘积月,为朔积分。如日法而一,为积日,不尽为小余。以六十去积日,余为大余。大余命以纪,算外,所求年天正十一月朔日也。
推算朔日的方法:用通数乘以积月,得到朔积分。除以日法,得到积日,余数就是小余。用六十去除积日,余数就是大余。大余用纪来命名(从甲子开始计数),算外,就是所求年天正十一月(即农历十一月)的朔日。
〔55〕求次月,加大余二十九,小余二千四百一十九,小余满日法从大余,命如前,次月朔日也。小余二千一百四十以上,其月大也。
求下个月的朔日,在大余上加二十九,小余上加二千四百一十九。如果小余满日法,就进位到大余。然后像前面一样命名,得到下个月朔日。如果小余在二千一百四十以上,那么这个月是大月(30天)。
〔56〕推弦望,加朔大余七,小余千七百四十四,小分一,小分满二从小余,小余满日法从大余,大余满六十去之,余命以纪,算外,上弦日也。又加,得望、下弦、后月朔。其月蚀望者,定小余如在中节者定小余如所近中节间限数、限数以下者,算上为日。望在中节前后各四日以还者,视限数;望在中节前后各五日以上者,视间限。
推算弦日和望日,在朔日的大余上加七,小余上加一千七百四十四,再加一分的小分。小分满二就进到小余,小余满日法就进到大余,大余满六十就去掉,余数用纪来命名,算外就是上弦日。再加一次,得到望日;再加一次,得到下弦日;再加一次,得到下个月朔日。其中如果月食发生在望日,要确定小余。如果小余正好在中节(中气)的范围内,就按照所靠近的中节间限数或限数以下的情况,算上为日。望日在中节前后各四天以内的,看限数;望日在中节前后各五天以上的,看间限。
〔57〕推二十四气术曰:置所入纪年,外所求,以余数乘之,满纪法为大余,不尽为小余。大余满六十去之,余命以纪,算外,天正十一月冬至日也。
推算二十四节气的方法:设置所进入纪的年数,外所求(即所求年份),用余数乘以它,满纪法得到大余,余数就是小余。大余满六十就去掉,余数用纪来命名,算外就是天正十一月冬至日。
〔58〕求次气,加大余十五,小余四百二,小分十一,小分满气法从小余,小余满纪法从大余,命如前,次气日也。
求下一个节气,在大余上加十五,小余上加四百零二,小分上加十一。小分满气法(十二)就进到小余,小余满纪法就进到大余,像前面一样命名,得到下一个节气日。