久久精品成人_污污的动态图_男女无遮挡毛片视频播放_拼多多免拼单怎么操作

明 朝 《大 統 歷》 的 定 朔 計 算 及 歷 表 朔 日 訂 正

初稿: 2019年8月


摘 要


本文根據《大統歷》的推步方法計算明朝合朔和二十四節氣時刻,發現與現存若干明代《大統歷》歷書給出的時刻完全吻合。比較算出的明朝二百七十六年間朔日和節氣日期,發現節氣日期完全符合張培瑜《三千五百年歷日天象》的資料,但有十一個朔日不合,其中有七例證實是《三千五百年歷日天象》的錯誤,這七個錯誤也見于薛仲三、歐陽頤的《兩千年中西歷對照表》、陳垣的《二十史朔閏表》及汪曰楨的《歷代長術輯要》


內容

  1. 引 言
  2. 《大 統 歷》 的 定 朔 計 算
  3. 合 朔 時 刻 檢 驗
  4. 歷 表 朔 日 訂 正
   參 考 文 獻

引 言

本網站的古代中歷資料幾乎全部采用張培瑜《三千五百年歷日天象》的資料,除了該書外,還有其他中國史歷表供史學家參考,例如薛仲三、歐陽頤的《兩千年中西歷對照表》、陳垣的《二十史朔閏表》及汪曰楨的《歷代長術輯要》等。臺灣中央研究院的兩千年中西歷轉換的古代中歷資料就是取自薛仲三、歐陽頤的《兩千年中西歷對照表》。翻查這幾本中國史歷表,有時會發現歷日有差異,筆者不是史學專家,難以考證孰是孰非,但認為最妥當的方法是考察當時政府頒行的歷書。

中國歷朝都視頒行歷書為皇權的象征,歷代都禁止民間藏用私歷,藩屬國也以中國頒行的歷書紀日。在分裂時代,各政權都各自頒歷,而不同歷書所載的朔日和二十四節氣日期不盡相同。因此中國史歷表的資料應盡量用當時歷書的資料,但是古代的歷譜太部分已散失,明朝中葉以來的歷譜卻有很多現在還可以找到,對于辨明歷表的正誤很有用,本文集中研究明朝《大統歷》歷書。臺灣的中央圖書館收藏了不少明朝《大統歷》歷書,歷書首頁圖片可在臺灣中央研究院數位文化中心的典藏臺灣找到,世界數字圖書館有整本《大明嘉靖三年大統歷》,北京圖書館出版的《國家圖書館藏明代大統歷日匯編》(全六冊)(以下簡稱《匯編》)更收集了從明正統十一年(1446年)至崇禎十四年(1641年)之間99種歷書,此網頁列出了六冊書收集的歷書目錄。但是由于年代久遠,《匯編》里很多歷書受到不同程度的破損,或有蟲蛀、或頁面缺損、或字跡模糊、或內頁缺失,但也有一些保留得很好的。《匯編》及上述網站收集的大統歷書對于研究明朝《大統歷》很有價值。

《大統歷》各年歷書的結構相同,封面印有歷書的年份。封面或內頁有偽造歷書警句:

欽天監湊淮印造大統歷日頒行天下

偽造者依律處斬,有能告捕者官給賞銀五十兩,如無本監歷日印信即同私歷。

歷書的正文是首兩頁載有每月朔日和二十四節氣時刻,后兩頁是「年神方位之圖」(或稱「九宮圖」),應是用于風水,接著數十頁是當年的日歷:每日一欄載有宜與不宜之事(今天視之為迷信的東西),最后數頁列出前六十年的紀年。本文要探討的問題基本上只會用到歷書首兩頁載的合朔資料。

細看這些存世的大統歷譜(例如萬歷三年大統歷首頁),發現不但有朔日和二十四節氣日期,還列出二十四節氣的時刻,有少數歷譜(例如崇禎二年大統歷)也列出合朔時刻,這些資料對研究大統歷的定朔及節氣計算很有價值。筆者看到這些資料后馬上檢查我的《大統歷》推步結果,發現果然完全符合歷譜所列的時刻。其實李勇在「明嘉靖六年《大統歷》歷書的氣朔推步精度」 一文已指出《嘉靖六年大統歷》歷書的節氣時刻和推步結果完全一致,但是該文并沒有比較明朝歷書的合朔時刻。筆者發現歷書給出的合朔和節氣時刻和《大統歷》推步結果完全一致,除了感到高興外也使我想起一事。

兩個月前筆者編寫了大統歷的合朔和節氣推步程式后,曾將結果與《三千五百年歷日天象》的資料比對,發現在明朝洪武二年(1369年)到崇禎十七年(1644年)二百七十六年間,二十四節氣的日期完全符合《三千五百年歷日天象》,但是朔日卻有十一處不合。當時我不以為意,因為古代的日歷不一定按術文計算的,有時歷官可能會稍為調整計算方法,或短暫采用其他歷法,或因忌諱而修改歷日(詳見黃一農「中國史歷表朔閏訂正舉隅」),而這些改動不一定全都記載于史書中。現在發現推步結果不但日期符合大統歷書,連時刻也都吻合,顯示筆者的推步方法確是與當時歷官采用的方法一致,既然有不少明朝歷書仍存世,何不找出當年的大統歷譜看看那十一處不合究竟是誰對誰錯?結果發現竟然有七個是《三千五百年歷日天象》錯了,余下的四個不合因為找不到資料而無從判斷,這考察結果會在本文最后一節敘述。奇怪的是這七個錯誤也見于汪曰楨的《歷代長術輯要》、陳垣的《二十史朔閏表》及薛仲三、歐陽頤的《兩千年中西歷對照表》,三書列出的那十一個朔日都與《三千五百年歷日天象》完全一樣,說明了即使各歷表的歷日一致也不能保證一定符合實歷。

由于李勇在已比較了《大統歷》的節氣推步和歷書給出的時刻,本文不再重復比較節氣時刻,而集中比較《大統歷》的定朔推步和歷書給出的時刻。李勇在文中指出《大統歷》的定朔有兩種不同計算方法,究竟《大統歷》采用哪個方法計算定朔,或許可考察大統歷書載的合朔時刻斷定,這是下面兩節要探討的問題。


《大 統 歷》 的 定 朔 計 算

明朝《大統歷》基本上沿襲元朝《授時歷》的法數和推步方法。《授時歷》的推步方法在李勇和張培瑜于1996年和李勇及張承志于1998年發表的兩篇文章()有介紹,這里就不敘述了,但會簡略介紹定朔的一般計算,以便說明《授時歷》和《大統歷》在計算定朔時可能有一些差異。

合朔的定義是月亮視黃經和太陽視黃經相等的時刻。用λM表示月亮視黃經、λs表示太陽視黃經,則合朔時刻t滿足方程
f(t)=λM(t)-λs(t)=0    (1)
現代天文的其中一個計算方法是用牛頓-拉弗森(Newton-Raphson)求根法,這是一個迭代算法。設若tn為第n次迭代的數值,則下一輪迭代的數值用以下公式計算:
tn+1=tn - f(tn)/f'(tn)   (2)
其中f'是f對時間的導數。如果選擇起始值t0為平朔時刻,則第一輪迭代的結果是
近似定朔時刻=平朔時刻 - f(平朔時刻)/f'(平朔時刻)   (3)   
函數-f可以寫成
-f(t)=(λM(t)-λM(t)) + (λs(t)-λs(t)) + λs(t)-λM(t)
其中λMλs是月亮和太陽的平黃經,即只考慮日月平均運動得出的黃經。式中第一項λM-λM稱為「遲疾差」,第二項λs-λs稱為「盈縮差」。在平朔時刻,λM=λs,所以
-f(平朔時刻) = 遲疾差 + 盈縮差
f的導數是
f'(t)=λ'M(t)-λ's(t)=月實行速-日實行速
定朔的一次近似時刻可寫成
定朔(近似)時刻 = 平朔時刻 + (遲疾差 + 盈縮差)/(月實行速 - 日實行速)  (4)

中國古代的定朔計算公式與(4)式類似但不完全相同。《授時歷》的定朔計算公式是
定朔時刻 = 平朔時刻 + 0.082×(遲疾差 + 盈縮差)/遲疾限行度   (5)
= 平朔時刻 + (遲疾差 + 盈縮差)/月實行速
《授時歷》取近點月(轉終)為27.5546日,把近點月時間分為336限,所以一限=27.5546日/336=0.082日。古代一度定義為太陽一天在天空運行的平均角度,《授時歷》行用其間取回歸年為365.2425日,所以一圓周有365.2425度,換成今天采用的360°制,《授時歷》的一度相當于360°/365.2425=0.9856°。「遲疾限行度」是月亮在一限時間的實行度,因此遲疾限行度/0.082日就是以(度/日)為單位的月實行速。用月實行速代替(月實行速-日實行速),理論上并不準確,卻比以前的很多歷法用月平行速代替(月實行速-日實行速)有些進步。

南宋楊忠輔發現回歸年長度不是常量,《授時歷》接受這觀點,其回歸年長度規定每一百年減萬分之一日,稱為「歲實消長」。但是《授時歷》只用了88年就被后繼的《大統歷》取代,《大統歷》雖然沿襲《授時歷》法數和算法,但是取消了歲實消長法,回歸年取常數365.2425日。《大統歷》術文的定朔算法也和《授時歷》稍有不同:
定朔時刻 = 平朔時刻 + 0.082×(遲疾差 + 盈縮差)/定限度   (6)
= 平朔時刻 + (遲疾差 + 盈縮差)/(月實行速 - 日平行速)
其中定限度=遲疾限行度-0.082度=月亮在一限的實行度 - 太陽在一限的平行度,所以定限度/0.082就是以(度/日)為單位的(月實行速 - 日平行速)。以(月實行速-日平行速)代替月實行速,理論上雖然是進步了,但是據李勇的計算,這改動得出的合朔時刻精度反而不及《授時歷》的計算精度,也不及宋代的平均水準。原因很可能是《授時歷》制定的盈縮差和遲疾差計算公式以實測數據配合公式(5)的模型,如果要把公式(5)改為公式(6),盈縮差和遲疾差計算公式也得修改才能符合實測數據。

李勇在其文章認為《大統歷》的合朔計算仍然采用公式(5),即和《授時歷》一樣,他指出邢云路《古今律歷考》給出的《大統歷》推算朔望和日月食的計算法都依照《授時歷》的公式,所以《大統歷》的術文可能刊誤。既然有存世《大統歷》歷書載有合朔時刻,只要將那些時刻比較公式(5)和公式(6)算出的時刻,或可判別《大統歷》采用的算法。下一節會敘述計算結果。


合 朔 時 刻 檢 驗

筆者找到的存世《大統歷》歷書,有六部載有合朔時刻,其中有三部在典藏臺灣找到:《大明萬歷三十二年歲次甲辰大統歷》《大明崇禎二年歲次己巳大統歷》《大明崇禎十二年歲次己卯大統歷》;其余三部在《國家圖書館藏明代大統歷日匯編》第二冊和第五冊找到:《大明嘉靖十年歲次辛卯大統歷》(《匯編(二)》157-158頁)、《大明嘉靖十一年歲次壬辰大統歷》(《匯編(二)》247-248頁)及《大明萬歷四十四年歲次丙辰大統歷》(《匯編(五)》281-282頁)。《匯編(四)》也有萬歷三十二年的歷書、《匯編(六)》也有崇禎十二年的歷書,但是那兩部歷書沒有合朔時刻。另外,《匯編(二)》有兩部嘉靖十一年歷書、《匯編(五)》有兩部萬歷四十四年歷書,也是一部有合朔時刻而另一部沒有。可見在嘉靖十一年、萬歷三十二年、萬歷四十四年和崇禎十二年,大統歷書至少有兩個不同版本,其他年份可能也是如此。典藏臺灣只有歷書的首頁六(或七)個合朔,三部歷書共19個合朔資料。《匯編》所載的那三部歷書有全年的合朔資料,三部歷書共有37合朔,所以這六部歷書合計有56個合朔。

歷書中合朔的時刻以辰刻制給出,計算方法是1天=100刻=12辰,故一辰=100/12刻=8.3333刻,一刻=0.01日=14.4分鐘。辰以十二地支子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥表示,用現在的24小時制來說,子是晚上23時到下一天的1時,丑是1時到3時等等。一辰又分為初和正兩部分,例如寅初指3時到4時、寅正指4時至5時,子初指23時到0時、子正指0時到1時等。刻的計量取「落地算法」,即0-1刻間稱為「初刻」,1-2刻間稱為「一刻」,2-3刻稱為「二刻」等。所以「亥初二刻」指21時28.8分到21時43.2分,寫成日的小數就是0.895到0.905,或0.900±0.005。同理,「未正三刻」指14:43.2到14:57.6,寫成日的小數是0.613到0.623,或0.618±0.005。因為半個時辰只比四刻多出1/6刻,所以「巳正四刻」較為特別,指10:57.6到11:00這2.4分鐘時間,寫成日的分數是0.4567到0.4583,或0.4575±0.0008。把合朔時間寫成日的小數,就是古代所稱的朔小余。朔日的日干支可以用整數表示,這里以甲子為0、乙丑為1等,即干支網頁表二所載的干支次序減去一。這樣合朔的干支日和時刻可以用數字表示,整數部分表示日干支(大余),小數部分是朔小余。例如「辛巳未正三刻」是17.618±0.005、「戊申亥初二刻 」是44.900±0.005等,下表就是采用這方法把歷書中的合朔時刻化成數字方便比較推步的結果。

筆者用「遲疾限行度」[公式(5)]和「定限度」[公式(6)]計算了明朝二百七十六年間所有合朔時刻,這里采用李勇標記,稱「遲疾限行度」的算法為D1、稱「定限度」的算法為D2。平朔時刻、遲疾差、盈縮差及遲疾限行度的計算方法依照文章提供的公式,由于《大統歷》廢除了《授時歷》的歲實消長法,那些公式里所有的A'都要改為A。下表列出上述56個合朔的計算結果及大統歷書給出的數據。


表一:合朔時刻比較。合朔時刻的數字整數部分表示日干支(0=甲子、1=乙丑等),小數部分是朔小余,即合朔離夜半零時的時間(以日為單位)。D1是依「遲疾限行度」算法得出的合朔時刻,D2是依「定限度」算法得出的時刻。棕色數字表示與《大統歷》歷書數據不合,紅色數字表示朔日干支錯了。

年 份月 份合 朔 時 刻
《大統歷》歷書D1D2
嘉靖十年(1531年)丙戌亥正一刻 (22.932±0.005)22.93122.968
丙辰未正二刻 (52.608±0.005)52.60552.653
丙戌寅初二刻 (22.150±0.005)22.15422.201
乙卯未正初刻 (51.588±0.005)51.59051.628
甲申亥正二刻 (20.942±0.005)20.93720.960
甲寅卯初一刻 (50.223±0.005)50.22050.224
閏六癸未午初三刻 (19.493±0.005)19.49119.476
壬子戌初二刻 (48.817±0.005)48.81448.783
壬午卯初初刻 (18.213±0.005)18.21118.169
辛亥酉初初刻 (47.713±0.005)47.71447.668
辛巳辰初三刻 (17.327±0.005)17.33017.289
十一辛亥丑初三刻 (47.077±0.005)47.07647.052
十二庚辰亥初二刻 (16.900±0.005)16.90216.904
嘉靖十一年(1532年)庚戌酉初初刻 (46.713±0.005)46.71646.743
庚辰巳正一刻 (16.432±0.005)16.43516.478
庚戌子正三刻 (46.035±0.005)46.03446.081
己卯午正一刻 (15.515±0.005)15.51715.559
戊申亥初二刻 (44.900±0.005)44.89944.927
戊寅卯初初刻 (14.213±0.005)14.21314.225
丁未午正一刻 (43.515±0.005)43.51943.513
丙子戌正初刻 (12.838±0.005)12.83912.818
丙午卯初一刻 (42.223±0.005)42.21842.186
乙亥申正一刻 (11.682±0.005)11.68111.642
十一乙巳卯正初刻 (41.255±0.005)41.25341.216
十二甲戌亥正一刻 (10.932±0.005)10.93110.904
萬歷三十二年(1604年)壬子巳正三刻 (48.452±0.005)48.44748.431
壬午寅正二刻 (18.192±0.005)18.19018.192
辛亥亥正二刻 (47.942±0.005)47.93947.961
辛巳未正三刻 (17.618±0.005)17.62217.656
辛亥寅正?刻 (47.187±0.021)47.20447.242
庚辰申正?刻 (16.687±0.021)16.67716.709
萬歷四十四年(1616年)壬申申正三刻 (8.702±0.005)8.6998.700
壬寅丑正二刻 (38.108±0.005)38.11138.102
辛未午正三刻 (7.535±0.005)7.5337.516
庚子夜子初三刻 (36.993±0.005)36.98836.964
庚午午初二刻 (6.483±0.005)6.4816.452
庚子子正三刻 (36.035±0.005)36.03536.007
己巳申正一刻 (5.682±0.005)5.6805.662
己亥巳初初刻 (35.380±0.005)35.38435.381
己巳丑初三刻 (5.077±0.005)5.0785.090
戊戌酉初三刻 (34.743±0.005)34.74034.762
十一戊辰辰正二刻 (4.358±0.005)4.3544.382
十二丁酉亥初三刻 (33.910±0.005)33.91133.940
崇禎二年(1629年)丁巳戌初初刻 (53.797±0.005)53.80153.820
丁亥未初二刻 (23.567±0.005)23.56723.606
丁巳卯初初刻 (53.213±0.005)53.21753.265
丙戌酉初三刻 (22.743±0.005)22.74122.786
閏四丙辰寅初三刻 (52.160±0.005)52.16352.198
乙酉午初三刻 (21.493±0.005)21.49421.513
甲寅酉正三刻 (50.785±0.005)50.78550.786
崇禎十二年(1639年)己未辰初一刻 (55.307±0.005)55.31055.303
己丑丑正初刻 (25.088±0.005)25.08925.105
戊午戌初三刻 (54.827±0.005)54.82354.857
戊子巳正四刻 (24.4575±0.0008)24.457224.4988
丁巳夜子初二刻 (53.983±0.005)53.97954.019
丁亥巳初二刻 (23.400±0.005)23.40023.429

這計算結果十分漂亮,用D1算出的56個合朔時刻完全符合大統歷書,D2的時刻雖然相差不遠,但是大部分不符合歷書的數據,其中崇禎十二年五月朔接近零時,D2的時刻偏差使朔日落在下一天。萬歷三十二年的歷書有破損,五月朔和六月朔只知合朔的時辰而無法得知幾刻,使合朔時刻只可確定在半個時辰內,但D2的時刻還是超出了這個時間范圍。崇禎十二年歷書載四月朔為巳正四刻,如上述,這資料使這合朔時刻范圍縮小到2.4分鐘內,而D1的計算結果就在這2.4分鐘內,說明《大統歷》確是按D1的算法計算定朔。

雖然D2的合朔時刻和D1相差不遠,但是如果合朔很接近夜半零時可能會使朔日日期有一日之差,這情況在上述崇禎十二年五月朔出現。筆者用D2算出的明朝朔日與《三千五百年歷日天象》的朔日比較,發現有88處不合,其中有21例找到了當年明朝的大統歷書,發現D2算出的這21個朔日全錯。用D1算出的朔日與《三千五百年歷日天象》比較發現有11處不合,這11處不合改用D2來算仍然不合,也就是說上述那88處D2不合包括了這11個。上面的計算基本上證實了D1的推步方法就是那幾部大統歷書的推步方法,所以這11處不合很值得深入研究,下一節就探討這個問題。


歷 表 朔 日 訂 正

上一節的計算證實了《大統歷》的定朔計算基本上沿用《授時歷》的公式,只是除消了《授時歷》的歲實消長法,結尾提到用此法算出的朔日在明朝二百七十六年間有11個朔日與《三千五百年歷日天象》的數據不合。翻查薛仲三、歐陽頤的《兩千年中西歷對照表》、陳垣的《二十史朔閏表》及汪曰楨的《歷代長術輯要》,發現三書所載的那十一個朔日也和《三千五百年歷日天象》完全相同。筆者嘗試尋找現存的大統歷書核對,找到了其中七個朔日資料。令筆者驚訝的是,這七個朔日全都符合推步結果,也就是說那四本書的七個數據錯了,余下的四個朔日因為找不到資料而無從判斷,現把這十一個朔日列于下表。


表二:歷表、推步和大統歷書的十一個朔日比較。《三千五百年歷日天象》、《兩千年中西歷對照表》、《二十史朔閏表》和《歷代長術輯要》四歷表所列的這十一個朔日日期完全相同,紅色字體表示朔日干支和《大統歷》歷書不合。推步方法用上一節的所說的D1(「遲疾限行度」)算法,數字整數部分表示日干支(0=甲子、1=乙丑等),小數部分是朔小余。《大統歷》歷書欄里括號內注有該大統歷書的來源。

年 份月 份朔 日
歷表推步結果《大統歷》歷書
洪武三年 (1370年)庚申57.0024 (辛酉, 子正初刻)
洪武十一年 (1378年)辛丑36.9827 (庚子, 夜子初二刻)
天順六年 (1462年)十一壬辰27.8143 (辛卯, 戌初二刻)辛卯 (黃一農 )
弘治八年 (1495年)辛巳18.1775 (壬午, 寅正一刻)
弘治十年 (1497年)己巳4.9997 (戊辰, 夜子初四刻)
萬歷九年 (1581年)壬辰27.9349 (辛卯, 亥正一刻)辛卯 (《匯編(三)》606頁)
萬歷十六年 (1588年)癸未20.4341 (甲申, 巳正一刻)甲申 (典藏臺灣、《匯編(四)》135頁)
癸丑50.0406 (甲寅, 子正四刻)甲寅 (典藏臺灣、《匯編(四)》139頁)
十二庚辰15.9425 (己卯, 亥正二刻)己卯 (《匯編(四)》175頁)
萬歷二十八年 (1600年)乙巳42.0834 (丙午, 丑正初刻)丙午 (《匯編(四)》445頁)
萬歷三十七年 (1609年)癸未20.0211 (甲申, 子正二刻)甲申 (《匯編(五)》67頁)

不知為何各歷書在萬歷十六年竟然有三個朔日錯誤。汪曰楨《歷代長術輯要》在萬歷十六年注有「國榷十二己卯朔不合」,萬歷二十八年注有「國榷正丙午朔不合」,萬歷三十七年注有「國榷正甲申朔不合」。「國榷」是指談遷(1594年-1658年)撰的明朝編年體史書,汪曰楨說的該書那三個朔日資料其實是正確的。但是《國榷》的資料也不可盡信,例如《歷代長術輯要》在萬歷三十年注有「國榷九庚申朔不合」,在萬歷三十二年注有「國榷十二丁未朔不合」,這兩個朔日確實和存世的大統歷書不合。《歷代長術輯要》在洪武三年注有「國榷二辛酉朔不合」,這朔日是表二所列的第一個朔日,《國榷》的資料雖然符合推步結果,但只能作為旁證。

從表中可見除了洪武三年二月朔和弘治十年十月朔非常接近午夜零時外,其余九個合朔都不是很接近日界,鑒于推步的結果至今還未發現與大統歷書不符,筆者懷疑余下的四個朔日里,各歷表的日期至少有兩個有錯。但是在找到可靠資料前,本網站的中歷對這四個朔日日期仍以各歷表為準。



參 考 文 獻