一、曆法更迭
這一部分附上我的殘缺曆法復原思路。
1、
三代皆觀象授時。堯時一年爲365日。
春秋晚期產生推步曆法,此時的算法不可考。春秋時期的實行曆譜可以參考最新研究:郜積意
經學與曆學的貫通——春秋朔閏表與經文歷日考證 學術月刊 2020年1期戰國
- 戰國早期推步曆法走向成孰,產生了
殷曆 、雨水元夏曆 如果有的話 。楚國也許用建丑殷曆 。 - 戰國中期有
魯曆 、顓頊曆 。 - 戰國晚期有
黃帝曆 、周曆 、夏曆 。三晉也許用夏曆 。古六曆合天時間見廖育棟 古六曆的計算方法
- 戰國早期推步曆法走向成孰,產生了
秦至漢武帝
顓頊 。根據出土材料,可以瞭解到顓頊曆經過了多次調整,分爲如下階段據朱桂昌 。目前方案合於惠帝三年簡顓頊日曆表 ,中華書局2012,並且我自己調整了一個階段張培瑜等 。有一條不合:秦王政廿年前237,七月甲寅,中國古代曆法 ,中國科學技術出版社2008,頁247進餘3/4 卻是乙卯。秦獻公十九年前366—秦武王四年前307 建寅,以寅月冬至所在月爲子月 爲正月、爲年首,與漢代以後絕大多數曆法相同。秦昭王元年前306—秦莊襄王三年前247 建寅,以寅月爲正月,以十月爲年首,卽一年十二個月的順序爲10-11冬至月 -12-1-⋯-9。這就是標準的顓頊曆 。秦始皇元年前246—秦二世三年前207 小餘增加 3/4 日。漢高帝元年前206—呂后三年前184 小餘在上一階段基礎上減去 210/940 日。四分曆法一月爲 29+499/940日,940卽日法,見 赫赫金鑰|曆學二:古四分曆、三統曆 呂后四年前183—文帝後元元年前163 變閏章,之前是固定冬至置閏法的閏章,現在是無中氣置閏法的閏章,但是閏月依然放在年末,卽後九月。- 在上一階段基礎上退餘 25/940 日
文帝後元2年前162—武帝元封7年前104年4月 文帝後元二年。
漢武帝至章帝鄧平
太初 、曆術甲子篇 太初元年前104年5月—章帝元和二年85年正月 。這期間行太初曆 ,但可能也用曆術甲子篇 見 作爲推步參考。太初改曆的內容:1、曆元從立春改爲年前朔旦冬至。2、正月爲歲首。3、行鄧平曆。4、歲末置閏改爲無中置閏。5、藉半日法:用途是史記 ,爲古四分曆,我在殷曆 基礎上減去朔餘3/4,以爲太初元年冬至朔旦夜半「月或朔見」
,其實就是承認後天半日。見 中國古代曆法 漢章帝以後
後漢四分 章帝元和二年85年2月—漢末 。三國兩晉
- 蜀
221-263 以漢統自居,沿用後漢四分 。 - 劉洪
乾象 吳黃武二年223—280吳亡 。「二年春正月⋯⋯改四分,用乾象歷。」
另有魏韓詡造三國志卷四七 黃初 ,他批評乾象 減斗分太過回歸年太小 ,不過實際上「韓翊所造皆用洪法,小益斗下分,所錯無幾。」
我據占經復原 黃初 ,月離表以乾象 補之 - 楊偉
景初 魏明帝景初元年237—終晉沿用 。另有晉武帝泰始十年景初 —劉宋元嘉 行用之前274 劉智正曆 我據占經、宋志復原,月離表以 。永和八年景初 補之352 王朔之通曆 ,宋志 :「王朔之以其上元歲在甲子,善其術,欲以九萬七千歲之甲子爲開闢之始,何承天云『悼於立意者也。』」
這麼說積年97000沒問題,但算出來有問題,我就調整了積年,月離表以景初 補之。
- 蜀
南朝
- 何承天
元嘉 宋元嘉廿二年445—509 。 - 祖沖之
大明 梁武帝天監九年510—陳亡589 。經過祖沖之之子祖暅力爭,得以行用。
- 何承天
北朝
參考 廖育棟 - 後秦
384—417 姜岌三紀甲子元 。我據晉志下、占經復原,月離表以景初 補之。 - 北涼
397—439 趙𢾺玄始 玄始元年412—北涼亡 。我據占經、疇人傳 卷六復原。 - 北魏
386—534 景初 建都平城398—451 。玄始 文成帝興安元年452—522 - 張龍祥李業興等九家綜合而成
正光 孝明帝正光四年523—558 。
- 東魏
534—550 李業興興和 興和二年540—亡 。算法全襲正光,僅參數不同。 - 北齊
550—577 宋景業天保 天保二年551—亡 ,月離表據嚴敦傑補北齊書曆志 補之。另有董峻、鄭元偉自然科學史研究 1984年第3期甲寅元 ,據嚴敦傑補北齊書曆志 補之,月離表以天保 補之。 - 西魏
535—557 沿用正光 。 - 北周
557—581 明克讓 武成元年559—565 。我用占經的梁武大同 來補明克讓 。不是很清楚這個梁武大同是什麼,可能跟明克讓沒什麼關係。隋志中 :「初,西魏入關,尚行李業興
正光術 。至武成元年,始詔克讓與麟趾學士庾季才及諸日者定新術,采祖暅舊議,通簡南北之術。自斯已後,頗親其謬。故周齊並時,而曆差一日。」陳久金 也就是說符天曆研究 :祖暅的符天經 與後來的符天曆 毫無關係。明克讓 綜合南北算法,跟天保 差了一天。我復原後運行程序,大約三年中有兩年會有一個月會差一天,很符合記載。- 甄鸞
天和 天和元年566—578 ,月離表以天保 補之。 - 馬顯丙寅元
大象 大象元年579—583 ,月離表以天保 補之。通占大象曆星經 與大象曆配套使用,可能是張賔所作許潔 ,也許可以用來復原大象曆。隋唐時期的道教星象研究 ,宗教學研究 2009年第4期,第29頁隋書張冑玄傳 :「周马显造
丙寅元历 ,有阴阳转法,加减章分,进退蚀余,乃推定日,创开此数。当时术者,多不能晓。张宾因而用之,莫能考正。」隋書 :「小周餘、盈縮積,其曆術別推入蔀會,分用陽率499,陰率9。每12月下各有日月蝕轉分,推步加減之,乃爲定蝕大小餘,而求加時之正。」
- 後秦
隋
581—618 - 張賔
開皇 隋開皇四年584—開皇十六年596 ,以元嘉 、大象 爲基礎,得以行用。月離表闕,我以天保 補之。劉孝孫批評張賔曆 粗疏,劉孝孫被罷。劉孝孫死後,楊素等舉薦張冑玄。 - 張冑玄
大業 開皇十七年597—亡 。另有張孟賓 張孟賔和張賔是兩個人 、甲子元劉孝孫 ,二人同爲張子信門生。二曆以占經復原,月離、日躔以皇極 補之,用皇極 二次差內插算法。劉焯採劉孝孫 ,稍損益以爲皇極 ,與大業 頗有參差,最終大業 得以行用。這一時期的紛紜可以參考王荣彬 隋初改历之争。
- 張賔
唐
- 傅仁均
戊寅元 高祖武德二年619—664 。新唐志一 :「仁均曆有三大、三小,云日月之蝕,必在朔望。十九年九月後,四朔頻大。」
李淳風:「古曆分日起於子半。⋯⋯傅仁均子初爲朔」
。另有高宗顯慶年間656—661 印度曆法九執 ,全文見占經卷一〇四,我據顧觀光九執曆解 勉強復原。我沒怎麼遵照原始的算法,只是用正弦算日月盈縮。武陵山人遺書 ,中國科學技術典籍通匯 天文部分843頁 - 李淳風
麟德 高宗麟德二年665—728 。發明進朔,景龍二年708—開元四年716、開元九年721—十六年728用進朔法推排。見黃一農 中國史曆表朔閏訂正舉隅———以唐麟德曆行用時期爲例 ,漢學研究 1992年2期,頁291—296 - 一行
大衍 玄宗開元十七年729—757 。有所謂「
公案。大衍 寫九執 」 至德 乾元元年758—上元三年762 。算法全襲大衍 ,節氣推後二日,我據此復原至德 。- 郭獻之
五紀 肅宗寶應元年762—783 正元 德宗興元元年784—806 。五紀 、正元 綜合大衍 、麟德 ,唯唯而已。憲宗即位,徐昂上觀象曆 ,失載。- 徐昂
宣明 穆宗元和二年807—892 。宣明 晷漏、交會稍增損,更立新術以步五星,其餘沿襲大衍 。 - 邊岡
崇玄 昭宗景福二年893—950 。 另有術士曹士蔿符天 780-820 ,乃民間小曆,以「相減相乘法」
代躔離表,日法用萬分,曆元用雨水,以定氣注曆。崇玄 本於大衍 ,而巧算源自符天 。
- 傅仁均
五代
907—960 - 梁、唐、漢沿用
崇玄 。 - 晉馬重績
乙未元調元 天福五年940—946 新五代志 :「以宣明之氣朔合崇元之五星,二曆相參,然後符合。」
失傳,以我復原的符天 代之,參數暫用崇玄 ,算法用相減相乘法。算法見陳久金 符天曆研究 - 周
951—960 王樸欽天 後周顯德三年956—周亡,宋初960—963沿用 沿用。躔離五星表不存,以崇玄 補之。
- 梁、唐、漢沿用
契丹遼
907—1125 參 廖育棟 馬重績
調元曆 應曆十一年961司天王白、李正等進曆—993 。劉義叟見到調元原文,其長曆 可信見邱靖嘉 ,那麼接下來的工作就是以我復原的核對遼史曆象志溯源 ,中華文史論叢 2012第4期長曆 。賈俊
大明 統和十二年994—亡 。失傳,以宣明 代之。遼志下 的這段記載比較胡扯:遼、漢、周、宋,俱行夏時,各自爲曆。國史閏朔,頗有異同。遼初用乙未元曆,本何承天元嘉曆法;後用大明曆,本祖冲之甲子元曆法。承天日食晦朏,一章必七閏;冲之日食必朔,或四年一閏。用乙未曆,漢、周多同;用大明曆,則間與宋異。國史敍事,甲子不殊,閏朔多異,以此故也。耶律儼紀以大明法追正乙未月朔,又與陳大任紀時或牴牾。
遼金的曆法和
元嘉 、祖沖之 風馬牛不相及。
金
1115—1234 - 楊級
大明 天會十五年1137—1181 - 趙知微
重修大明 大定廿二年1182—亡,蒙古沿用至1281 授時
- 楊級
宋
960—1279 王處訥
應天 964—982 建隆四年963成。宋代行用時間見中國古代曆法 第606頁吳昭素、徐瑩、董昭吉各上新曆,最後用吳昭素
乾元 983—1000 。史序
儀天 1001—1023 。宋行古
崇天 1024—1064,中間用 。明天 ,後又用崇天 1068—1074明天 1065—1067 。歷史背景見董煜宇从奉元历改革看北宋天文管理的绩效 自然科學史研究 2008年2期沈括、衛樸
奉元 1075—1093 不存,以觀天 代之。觀天 1094—1102 。占天 1103—1105 ,失傳。紀元 1106—1127 。南宋定朔算法全同紀元 ,除了統天 用歲實消長。滕豔輝 宋代朔閏與交食研究 ,2012西北大學科技史博士論文,52頁失載
1128—1135 ,以紀元 代之。統元 1136—1167 。疇人傳 陳得一 的一段內容可以作爲兩宋之際曆法復原的參考:南渡以後,星翁離散,
紀元術 亡。紹興二年,高宗重購得之。六月甲午,語輔臣曰:『術官推步不精,今術差一日,近得紀元術 ,自明年當改正。協時月正日,蓋非細事。』五年,日官言:『正月朔旦日食九分半,虧在辰正。』得一言:『當食八分半,虧在巳初。』其言卒驗。侍御史張致遠言:『今歲正月朔日食,太史所定不驗,得一嘗爲臣言,皆有依據。蓋患算造者不能通消息盈虛之奧、進退遲疾之分,致立朔有訛。凡定朔小餘七千五百以上者,進一日。紹興四年十二月小餘七千六百八十,太史不進,故十一月小盡;今年五月小餘七千一百八十,少三百二十,乃爲進朔,四月大盡。建炎三年定十一月三十日甲戌爲臘。陰陽書 曰:「臘者,接也。」
以故接新,在十二月近大寒前後戌日定之,若近大寒戌日在正月十一日,若即用遠大寒戌日定之,庶不出十二月。如宣和五年十一月二十七日丙午大寒,後四日庚戌,雖近,緣在六年正月一日,此時以十九日戊戌爲臘。得一於歲旦日食,嘗預言之,不差釐刻。願詔得一改造新秝,委官專重其事,仍盡取其書,參校太史有無,以補遺闕。擇秝算子弟粗通了者,授演撰之要,庶幾日官無曠,秝法不絕。』二月丙子,詔祕書少監朱震即祕書省監視得一改造新秝。八月秝成,震請賜名統元 ,從之。乾道 1168—1176 淳熙 1177—1190 會元 1191—1198 統天 1199—1207、1208—1251 開禧 期間與統天 並推。開禧 1208—1251 淳祐 1252—1252 失傳,以成天 代之。會天 1253—1270 失傳,以成天 代之。成天 1271—1276 本天 1277—1279 失傳,以成天 代之。
元
1206—1370 郭守敬等授時 1281—1367 。明
1368—1644 大統 1368—1662 。大統 全襲授時 ,只是取消歲實消長;用 /(月實行-日平行) 取代 /(月實行)。但是據大統曆書 ,依然用的是授時 的 /(月實行)。見 廖育棟 明朝 大統曆 的定朔計算及曆表朔日訂正清
1644—1911 西洋新法曆書 1645—1679 康熙永年曆法 1680—1726 曆象考成 1727—1733 曆象考成後編 1734—1913
2、
漢代以後皆行寅正,但也有幾次改正朔事件:
- 王莽始建國元年9,改行建丑,將去年十二月改爲今年正月。劉玄更始元年23,復行建寅,將年末的丑月改爲十三月,也就是說公元24年正式用建寅。
- 魏明帝景初元年237,改行建丑,將三月改爲四月。但
「郊祀、迎氣,祭祠、烝嘗,巡狩、蒐田,分至啓閉,班宣時令,皆以建寅爲正。」
景初三年正月,明帝崩,復行建寅。宋書志中 - 武周時期689十二月行建寅,以子月爲年首
如同 :正月—十二月—一月—二月⋯⋯十月。689年只有11個月顓頊 建寅,以亥月爲年首其中一個月是閏月 。長安元年701二月復行以寅月爲年首。700年有15個月其中一個月是閏月 。 - 肅宗761十二月改行建子。此年只有10個月。762年四月復行建寅。此年有14個月,有2個四月
卯月巳月 和2個五月辰月午月 。見廖育棟 中國歷代朔閏表
二、曆法發展大勢
- 曆法史的第一次重大變革是戰國初期古四分曆出現,標誌著曆法從觀象授時走向推步。
- 第二次是
太初曆 ,開創了諸多重要議題。 - 第三次是漢末
乾象 ,歲實朔策突破四分曆框架,加上月行遲疾,發明定朔推算的方法,用以步日月食。 - 第四次是祖沖之
大明 ,增歲差恆星年與回歸年之差 ,破章法改變19年7閏的古閏章 ,此後每曆都有不同的章法。 - 第五次是劉焯
皇極 ,這一次稍顯複雜。後魏末年,張子信避亂海島,發現日行盈縮,門人劉孝孫、張孟賔用之於曆,推日食超於鄭元偉董峻之甲寅 、宋景業之天保 。次年北齊亡於北周,劉孝孫、張孟賔曆未得行用。現在見到最早的日行遲疾表是張冑玄大業 ,但是與後世日躔表完全不同,大業 的日行遲疾只能直接加在定朔上,不能用於推算定氣。到了皇極 會古通今,引入「日行盈縮、交道表裏、五星遲疾」
,有了成孰的日躔表,可以計算定氣,發明二次差內插,此後唐宋曆法都不出疇人傳 序皇極 框架。唐宋一些節點性質的曆法都各有發明。如麟德 「廢章蔀紀元,而用總法」
,閏章的槩念徹底退出曆法。疇人傳 序大衍 將二次內插推廣至不等間距,將月亮視差固定爲表格,發明不同緯度的晷漏求法 。中國古代曆法 第552頁崇玄 引入符天 的「相減相乘法」
,計算五星遲疾等。明天 將所有計算全部公式化。統天 用歲實消長、朔實消長。 - 第六次是
授時 ,幾乎快到陰陽曆的終點了。授時 全面用公式,這一點源於明天 ;各項參數都用小數點,不用傳統的分數,廢調日法,源於天竺曆法;歲實消長、取消上元積年源於統天 ——可謂集大成。 - 第七次是清代
時憲 ,底層更換爲西法,用定氣注曆。
有了以上認識,我們可以將古曆分爲以下系統:
- 四分系:從古六曆到
後漢四分曆 - 魏晉系:從劉洪
乾象 到姜岌三紀 - 北朝系:從
玄始 到張賔開皇 - 南朝系:從
元嘉 到初唐戊寅 - 隋系:
劉孝孫 、張孟賔 、皇極 、麟德 - 天竺系:
神龍 、九執 、符天 - 唐系:
大衍 到欽天 - 宋系:兩宋二十部曆法
- 授時系:
授時 、大統 - 時憲系:清代四部曆書
四分質樸,魏晉古茂,北系鈍拙,南系超捷,隋系煌煌,唐系赫赫,宋系唯唯,授時集大成,時憲脫胎換骨。北系沒有歲差,恢復了古曆的統法蔀法,與同時期的南系相比非常落後。
三、幾個問題
1、置閏法
漢代以後皆用無中氣置閏法,卽沒有中氣的那個月置爲閏月。「中氣在朔若二日,則前月閏」
,但這條規則貫徹得並不徹底,有些前月朔,有些沒有前月朔,所以我的程序並沒有設置這條規則。
而先秦古六曆的置閏法並不清楚,有閏餘法、固定冬至法、無中法三種可能。他們的原理見 大小月、無中氣置閏圖;固定冬至、無中氣置閏圖。
2、調日法
宋
自漢太初至于今,冬至差十日,如劉歆三統復強於古,故先儒謂之最疏。後漢劉洪考驗四分,於天不合,乃減朔餘,苟合時用。自是已降,率意加減,以造日法。宋世何承天更以四十九分之二十六爲強率,十七分之九爲弱率,於強弱之際以求日法。承天日法七百五十二,得一十五強,一弱。自後治曆者,莫不因承天法,累強弱之數,皆不悟日月有自然合會之數。
今稍悟其失,定新曆以三萬九千爲日法,六百二十四萬爲度母,九千五百爲斗分,二萬六百九十三爲朔餘,可以上𥡴於古,下驗於今,反覆推求,若應繩準。又以二百三十萬一千爲月行之餘
月行十三度之餘 ,以一百六十萬四百四十七爲日行之餘日行周天之餘 。乃會日月之行,以盈不足平之,幷盈不足,是爲一朔之法日法也,名元法 。今乃以大月乘不足之數,以小月乘盈行之分,平而幷之,是爲一朔之實周天分也 。以法約實,得日月相會之數,皆以等數約之,悉得今有之數盈爲朔虛,不足爲朔餘 。又二法相乘爲本母,各母互乘,以減周天,餘則歲差生焉,亦以等數約之,卽得歲差、度母、周天實用之數。此之一法,理極幽眇,所謂反覆相求,潛遁相通,數有冥符,法有偶會,古曆家皆所未達以等數約之,得三萬九千爲元法,九千五百爲斗分,二萬六百九十三爲朔餘,六百二十四萬爲日度母,二十二億七千九百二十萬四百四十七爲周天分,八萬四百四十七爲歲差 。上 宋志七
何承天以 26/47 爲強率,以 9/17 爲弱率,朔餘爲 (26m+9n)/(49m+17n) ,m, n 卽陰陽率。
3、日躔月離
自
隋志中 說張賔開皇 「減朓就朒」
,我想「朓朒」
一詞就是張賔開始用的,隨後劉焯皇極 沿用,成爲盈縮積的替代說法。- 中國的傳統都是近地點爲一個近點月的開始,但也有幾個例外,
神龍 、大衍 、宣明 、崇玄 、崇天 等以遠地點爲始。神龍 受到天竺曆法的影響,開創用遠地點的先例。
古代沒有負數運算的槩念,所以遇到負數都要轉換爲正數,朓朒的正負問題詳見張培瑜等

精確的日月改正算法是:(日盈縮積 - 月朓朒積) / (月實行速 - 日實行速) 。這其實是一個簡單的 t = v / s 問題,不用管正負。現代計算通過迭代逐漸逼近精確的定朔時刻,一般迭代五次就夠了,古代沒有那麼大算力,都只進行一到兩次計算。
- 日盈縮積或月朓朒積 = 整日朓朒積 + 該日損益率 * 比例
比例通過一次或二次內插算得 - 日或月實行速 = 整日月實行速 + 〔列差*比例〕
- 改正數 = (〔日盈縮積〕- 月朓朒積) / (月實行速
或月平行速 - 〔日平行速〕)
魏晉系是 /月實行速,北系是 /月平行速,只有大業是 /(月實行-日平行),隋唐系反而退步,都是 /月平行。
宋曆中,
4、日月食
唐宋時期交食計算稍有不驗,就要更換新曆了,在這樣的預測水平下,爲何日食依然是上天的警示?周琮說:「今以日行之所盈縮、月行之所遲疾,皆損益之,或進退其日,以爲定朔,則舒亟之度,乃勢數使然,非失政之致也。」
「日食當朔,月食當望,蓋自然之理。夫日之食,蓋天之垂誡,警悟時政,若道化得中,則變咎爲祥。國家務以至公理天下,不可私移晦朔,宜順天誡。」
宋人已經認識到交食是一種自然現象,並非因爲「失政」
,但日食依然是不好的事情,所以每逢日食,君主就要修身理政,以「變咎爲祥」
。如果預測不準,那就會讓君主錯過上天的警示。我勉強能想到這樣理解。
5、進朔
唐代以前都是平朔注曆,戊寅曆始用定朔注曆,但李淳風說645年有四月連大,「庚子,詔用仁均平朔」
,又暫停了用定朔注曆,直到
宣明 :秋分—春分:0.75,夏至0.74005,清明0.74924,小暑0.74031,穀雨0.74479,大暑0.74124,立夏0.74276,立秋0.74276,小滿0.74124,處暑0.74479,芒種0.74031,白露0.74924。中國古代曆法 第570頁明天 :秋分—春分:0.75。「若春分後,其定朔晨分差如春分之日者,三約之,以減四分之三;如定朔小餘及此數已上者,進一日;朔或當交有食,初虧在日入已前者,其朔不進。弦、望定小餘不滿日出分者,退一日;其望或當交有食,初虧在日出已前,其定望小餘雖滿日出分者,亦退之。又月行九道遲疾,曆有三大二小;日行盈縮累增損之,則有四大三小,理數然也。若循其常,則當察加時早晚,隨其所近而進退之,使月之大小不過連三。」
宋代朔閏與交食研究
我暫時都用簡單的 0.75。