『月行正交入夏至後宿度內爲同名,入冬至後宿度內爲異名
槪念
基本名詞
歲實 回歸年。不同時期大約長度:四分曆 365.25,魏晉系 365.246,唐系 365.244– .245,宋系 365.243 – .244,授時 365.2425。週天 恆星年,祖沖之大明 將歲差引入曆法約 45 年差 1 度,誤差較大 ,李淳風麟德 不用歲差,此後一直沿用大約 70 餘年差 1 度 。月 一箇朔望月一般在 29.53059–29.5306 日之間 。日法:朔望月分母,從李淳風麟德 開始用總法,所有參數的分母都是日法。轉 曆 變 與近點月約 27.5545 日 有關,「入轉日」卽在一箇近點月中的日數。有 8 部曆法以遠地點月速最慢 入轉,其餘都是近地點月速最快 入轉。魏晉南北曆法的「曆」指與近點月相關的參數,「曆法」卽近點月長度。交 與交點月約 27.2122 日 有關,「入交日」卽在一箇交點月中的日數。升交點卽「正交」,降交點稱「中交」,兩箇交點之間稱「半交」。降交點到升交點,月在黃道南,稱「陽曆」「陽道」「外道」;升交點到降交點,月在黃道北,稱「陰曆」「陰道」「內道」,所以看到「陰陽曆」的說法,不要與現在說的陰陽曆混淆了。起於降交點的只有景初、開皇、統天三曆。若起於降交點,則正交爲降交點,其他大部分都是升交點。日躔 月離 指日月運行。日月都是在近地點最快,遠地點最慢。赤道積度 黃道積度 赤道經度,黃道經度。古代天文模型與現代天文學不同,黃經不是現代意義上的黃經,而是黃道與赤經圈相交得到的黃道度數,可稱爲「極黃經」,同樣,白經其實是「極白經」。太陽在黃道上運行,因此太陽的極黃經與黃經相等。積度與宿度不一樣。月道 白道 授時曆開始纔稱白道,此前都直說月道,白道是月行九道詳見下 中的一道。內外度 緯度。黃道內外度卽黃緯,赤道內外度卽赤緯。去極度 象限度 - 內外度 = 去極度,卽到天頂的距離。昏旦中星 昏明時刻正南的星宿。
數學術語
古筭分子稱實,分母稱法。筭外:不筭第一秊,筭上:筭第一秊。日如第一秊第二秊第三秊,筭外兩秊,筭上三秊。「%」表示模,卽取餘數,9 % 4 = 1,這樣方便許多。
看到減的時候要留意誰減誰。某甲「反減」「覆減」乙的意思是
乙 - 甲
。「相減」默認就是以大減小「進二位」「進二等」意思是
× 100
,「退位」指/ 10
應天曆的「身外除一」「身外除三」不懂什麼意思
「因」同「乘」
「甲少於乙 10 已下」意思是
甲 >= 乙 - 10
,同理,「甲少於乙 10 已上」意思是甲 <= 乙 - 10
唐宋食分都是用太半少來表示,
麟德 :「餘半以下,爲半弱;半以上,爲半強。」0–0.25 0.25–0.5 0.5–0.75 0.75–1 某 某度少或半弱 某度半 某度太或半強 觀天 :「其分就近約之爲太、半、少。」少半太是 0.25-0.5-0.75,旣然是就近,那似乎可以理解爲 0–0.125 爲某度,0.125–0.375 爲某度少,0.375–0.625 爲某度半,0.625–0.875 爲某度太,0.875–1 爲某 +1 度。在時間模塊有相應轉換工具。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
某 | 强 | 少弱 | 少 | 少强 | 半弱 | 半 | 半强 | 太弱 | 太 | 太强 | 弱 | 某+1 |
天文術語
積年 * 回歸年 =【庚午】通積分
距冬至日數 = 【崇天】中積 = 【明天】中日
黃道月道同名異名十分迷惑:
五紀 「凡春分後陰曆交後,秋分後陽曆交後,爲月道同名,餘皆爲異名。」似乎說只有交後纔算同名,則同名只有四分之一的情況。又說「月道同名者,交前爲加,交後爲減;異名者,交前爲減,交後爲加。」則同名異名皆有交前交後。觀天 :「凡日以赤道內爲陰,外爲陽;月以黃道內爲陰,外爲陽。故月行宿度,入春分,交後行陰曆,秋分,交後行陽曆——皆爲同名;入春分,交後行陽曆,秋分,交後行陰曆——皆爲異名。」紀元 、重修大明 :「月行正交入夏至後宿度,內爲同名,入冬至後宿度,內爲異名。⋯⋯其在同名者,⋯⋯半交後,正交前,以差減;正交後,半交前,以差加。」原本的句讀是「入夏至後宿度內爲同名」,我覺得應該斷開。這裏的正交應該指兩箇升降交點,半交指四分之一交點月,則同名旣有交前又有交後。
還是
觀天 說得最清楚,暫時統一按觀天 處理:秋分到次年春分太陽在陽曆,春分到秋分太陽在陰曆,交初到交中月亮在陽曆,交中到交初月亮在陰曆。觀天 只舉交後而言,但交前交後照理說都一樣的,否則春分交前陰曆之類就旣不同名也不異名。交前交後也容易混淆。唐宋曆的「交前」卽在交點之前,「交後」卽在交點之後。而隋以前一般用「先交」「後交」。
戊寅 :「如望差已下,爲去先交分。交限已上,以減交分,餘爲去後交分。」去先交 = 先交 = 交後,去後交 = 後交 = 交前。「去交度乘數除數」只在以下幾部唐曆見過。乘上日法,發現崇玄又和其他幾箇不合。
大衍 3040 * 11/2643 = 12.6523
五紀 交度乘數十一,除數千一百六十五1340 * 11/1165 = 12.6523
正元 1095 * 11/945 = 12.746
,應該沒問題,如果要跟其他接近的話就改成1095 * 11/952 = 12.6523
宣明 去交度乘數十一,除數七千三百三8400 * 11/7303 = 12.6523
崇玄 去交度乘數十一,除數八千六百三十二13500 * 11/8632 = 17.203429
,改成13500 * 11/11632 = 12.7665
,13500 * 11/11732 = 12.6577
,13500 * 11/11737 = 12/6523
大衍 云「大抵去交十三度已上,雖入蝕限,爲涉交數微,光景相接,或不見蝕。」看來唯一的作用就是用來判斷是否超出 13 度⋯⋯這箇値是 1.028 日。這無關緊要,我們只需要根據日分來計算卽可。「無同率」。
大衍 入氣差積有一句「其二至之前一氣,皆後無同差,不可相并,各因前末爲初率。」其他地方還有「其後無同率」。例如[10, 13, 13, 10]
,前後都是 13,所以相互之間沒有差,這時就要減去前面的 10 來作爲差。
歲
歲差
現代歲差常數是 0.014162 度/年。
大衍曆議論歲差:
大同九年
543 ,虞𠠎等議:姜岌、何承天俱以月蝕衝步日所在。承天雖移岌三度,然其冬至亦上岌三日。承天在斗十三四度,而岌在斗十七度,其實非移。祖沖之謂爲實差,以推今冬至,日在斗九度
算得大明推 543 年冬至在斗 9.2 ,用求中星不合。自岌至今,將二百年,而冬至在斗十二度。然日之所在難知,驗以中星,則漏刻不定。漢世課昏明中星,爲法已淺。今候夜半中星,以求日衝,近於得密。而水有清濁,壺有增減,或積塵所擁,故漏有遲疾。臣等頻夜候中星,而前後相差或至三度。大畧冬至遠不過斗十四度,近不出十度。又以九年三月十五日夜半,月在房四度蝕。九月十五日夜半,月在昴三度蝕。以其衝計,冬至皆在斗十二度。自姜岌、何承天所測,下及大同,日已却差二度。而淳風以爲晉、宋以來三百餘歲,以月蝕衝考之,固在斗十三四度間——非矣。
劉孝孫甲子元歷(孝孫A)推太初
前 104 冬至在牽牛初;下及晉太元、宋元嘉,皆在斗十七度;開皇十四年594 ,在斗十三度。而《劉焯歷》仁壽四年605 冬至,日在黃道斗十度,於赤道斗十一度也。其後孝孫改從焯法(稱孝孫B),而仁壽四年冬至,日亦在斗十度。焯卒後,冑玄以其前歷上元起虛五度(姑且命名為大業A),推漢太初,猶不及牽牛,乃更起虛七度(命名為大業B),故太初在斗二十三度,永平在斗二十一度,並與今歷合。而仁壽四年605 ,冬至在斗十三度,以驗近事,又不逮其前歷矣。戊寅歷,太初元年辛酉冬至(我算得壬戌0331,差了一點),進及甲子(為何要看甲子?),日在牽牛三度。永平十一年(68 年)得戊午冬至(我算得戊午8616),進及辛酉,在斗二十六度。至元嘉(424 年)中,氣上景初三日(戊寅曆乙丑9432,景初曆丁卯7965,應該是「上二日」),而冬至猶在斗十七度。欲以求合,反更失之。又曲循孝孫之論,而不知孝孫已變從皇極,故爲淳風等所駁。歲差之術,由此不行。⋯⋯又皇極歷歲差皆自黃道命之,其每歲周分,常當南至之軌,與赤道相較,所減尤多。計黃道差三十六度,赤道差四十餘度,雖每歲遯之,不足爲過。然立法之體,宜盡其原,是以開元歷皆自赤道推之,乃以今有術從變黃道。
虞𠠎測出當時冬至在斗 10–14 之間,誤差的原因是漏壺精度。根據兩次觀測結果,冬至都在 12 度。
下表各年第一行是一行的計算,第二行為我的計算。
孝孫A | 皇極、孝孫B | 大業A | 大業B | 今曆 | 戊寅 | 大衍 | |
---|---|---|---|---|---|---|---|
太初前104 | 牛初 | 斗21 | 斗23 | 斗23 | 牛1 | ||
斗23.2 | 斗22.2 | 牛0.4 | 斗20.5 | ||||
永平十一68 | 斗21 | 斗21 | 斗23 | ||||
斗20.3 | 斗23.6 | 斗18.4 | |||||
元嘉424 | 斗17 | ||||||
斗16.0 | 斗17.2 | 斗14.1 | |||||
開皇十四594 | 斗13 | ||||||
仁壽四年605 | 斗13 | 斗11 | 斗11 | 斗13(不逮前歷) | |||
斗13.9 | 斗13.9 | 斗13.9 | 斗11.9 |
還是不理解「欲以求合,反更失之」是要合誰。
歲實消長
由於地球自轉放慢等因素,回歸年會逐漸變短,現代値大約是 365.24218968 - 6.16*1e-8 * (year - 2000)
,按照等差數列求和,歲實消長的累積値就是 (0 + 6.16*1e-8 * (y - 2000)) * (y - 2000) / 2 = 3.08 * 1e-8 * (y - 2000)^2
朱載堉
古曆的歲實變化
此二曆的歲實消長是根據以往所有曆法的參數歸算出來的。我們把(0.2425 - 斗分) / ((1281 - 制曆年) / 100)
,得出每百年消長數,最後求平均值,算出 -0.0005841
,卽每百年減 5.8 分。顯然,古曆的回歸年都比實際偏大很多,這是爲了推算古代天象,預留了一些增量。可是增加得太多了,眞的會準確嗎?這是各曆制曆時間與斗分:
|
|
祖沖之
日躔月離
月平行速
月平行速 V 平 = Sidereal/Lunar + 1
。為什麼要加 1?因為是朔望月,每個月要比恆星月多走一點,所以一年下來月亮多走了正好一圈,因為地球也公轉了一圈。v = s / t,總路程是一年走的圈數,一個月走一圈,所以就是一年的月數 +1,時間當然就是一年。
所以可以推出 恆星月 = Sidereal/V平 = Sidereal * Lunar / (Sidereal + Lunar)
。古曆從沒有恆星月,可能確實沒什麼用。
槪念、符號
太陽運動很簡單,週期項影響不大,用一次傅立葉函數就能比較準確地擬合,但有一箇問題是,基本上所有的古曆都以冬至爲近日點
表格各欄依次爲:
- 日盈縮積,距冬至日數這麼多天,太陽實際上走了多少度
- 月遲疾積,入近點月這麼多天,月亮實際走了多少度
日行改正 = 日盈縮積 / (月實行速 - 日實行速)
月行改正 = -月遲疾積 / (月實行速 - 日實行速)
平朔 + 日行改正 + 月行改正 = 定朔
,平氣 - 日盈縮積 = 定氣
,入交定分 = 入交泛分 + 太陽改正 + 0.078507*月亮改正
。
自
隋志中 說張賔開皇 「減朓就朒」
,我猜「朓朒」「朏朒」
一詞就是張賔開始用的,隨後劉焯皇極 沿用,成爲盈縮積的替代說法。晦而月見西方謂之朓,朔而月見東方謂之朒。
古代沒有負數運算的槪念,所以遇到負數都要轉換爲正數,朓朒的正負問題詳見張培瑜等
依次爲:盈縮積、實行速、損益率、列差
另外,「四七日」指的是近點月中 6.8886、13.7772、20.6656、27.5545 這四箇七日
另外,平朔一般稱「經朔」,
分母
精確的日月改正算法是:(日盈縮積 - 月朓朒積) / (月實行速 - 日實行速) 。這其實是一箇簡單的 t = v / s
問題,不用考慮符號正負。古曆日月改正的算法可以統一爲這樣
- 日盈縮積或月朓朒積 = 整日朓朒積 + 該日損益率 * 比例
- 月實行速 = 整日月實行速 + 〔列差*比例〕
- 改正數 = (〔日盈縮積〕- 月朓朒積) / (月實行速
或月平行速 - 〔日平行速〕)
理想的分母是 月實行速 - 日實行速
,但是不同時期的曆法所選分母各不相同,魏晉曆法基本上是 月實行速 - 日平行速
,北系是 月平行速
,大業是 月實行 - 日平行
,隋唐宋系反而退步,都是 月平行
,授時曆 月實行
。
後來突然想到,之所以分母要用 月平行速
,而不用 月平行 - 日平行
,是因爲古曆太陽改正都比實際偏大許多,分母更大的話能夠抵消一部分誤差。各曆太陽朏朒極值:麟德 2.767,大衍降到 2.42,此後一直在 2.4–2.42 之間,南宋後期會元達到最低的 2.3,後來三部南宋曆是 2.36,授時又返回 2.4,而實際上只有 1.98。若用這樣的比例抵銷,2.14 * 12.36875/13.36875 = 1.98
,最常見的 2.4 等於 2.22。所以看起來唐以後相比魏晉退步了,但實際效果應該相差不多。
線性還是二次?
求經朔弦望入氣朏朒定數:各以所入氣小餘乘其日損益率,如樞法而一,卽得。
明確說「其日」,則是二次插值。每部曆法都會根據日躔術和二十四節氣表編製全年每日的立成表,這就是「其日」的意思,在具體編製每年曆書時只用査立成表進行線性內差卽可,但曆志中無一保存了唐宋曆的立成表,只能自己根據日躔術來寫程序。各曆二次插值具體形式有所不同。對於
符號:Δ1
爲本氣升降分、損益率,Δ2
爲後氣升降分、損益率,(Δ1-Δ2) / n
是總差、合差、差率,(Δ1 - Δ2) / n^2
是別差、日差。
- 麟德:氣初日消息數
(Δ1+Δ2)/2n + (Δ1-Δ2)/n
- 皇極:氣初日遲速數
(Δ1+Δ2)/2n + (Δ1-Δ2)/n -(Δ1-Δ2)/2n^2
- 應天乾元:氣初日盈縮分
Δ1/n + (Δ1-Δ2)/2n
- 崇玄儀天崇天以後:
Δ1/n + (Δ1-Δ2)/2n - (Δ1-Δ2)/2n^2
其中 1、3 等價,2、4 等價,在 1、3 的基礎上考慮半日差卽爲 2、4。經驗算,算法 4 與招差術結果相等。
至於不等間距內插的曆法,經驗算,
再看月離表的算法。
求朔弦望入轉朏朒定數:置所入轉餘,乘其日損益率,樞法而一,所得,以損益其下朏朒積爲定數。其四七日下餘如初數下,以初率乘之,初數而一,以損益朏朒爲定數。
宋曆無一採用二次內插進行月離改正。
經過以上梳理,眉目終於清楚了:
- 【唐曆】交食:二次日躔 + 二次月離。定朔:二次日躔 + 一次月離
- 【宋曆】交食、定朔:二次日躔 + 一次月離
- 【授時】交食、定朔:三次日躔 + 三次月離
欽天 步月
在唐代,只有交食用二次內插,一般注曆用線性內插,到宋代,乾脆交食也只用線性內差了。王樸批評道:
自古朓朒之法,率皆平行之數;入曆旣有前次,而又衰稍不倫。降及諸曆,則疎遠而多失。
「衰稍不倫」大槪指線性內差誤差很大。248 限的好處是省去「248 * 800 = 198400
,和轉分 198393.09
差一些,但這點誤差落在了小數點後 5 位,不會造成任何影響。
可惜
授時 步日躔
太陽在冬至速度最快,夏至速度最慢。冬至到夏至的半歲爲盈曆,夏至到冬至爲縮曆。
秋正__
縮末限、盈初限等分爲 6 段,每段約 14.82 日,各段積差爲段末實行度與平行度之差。積差/積日 = 日平差、盈加分,卽平均每日多走的分數。各段日平差與後段日平差相減爲一差,一差與後段一差相減爲二差。
冬至前後:
泛立積差 0.69008362180639865平差 (泛平積差 - 泛立積差)/段日 = 2.45538585649203063124214613275506563014130423474055立差 泛立積差/段日^2=0.00314275533037503126
積日 | 積差 | 日平差 | 一差 | 二差 | |
---|---|---|---|---|---|
冬至 | 0 | 定差 513.3822097763196113 | 泛平積差 37.074492551251009 | 泛立積差=1.3801672436127973/2 | |
第 1 段 | 14.8182041666666667 | 7058.0250 | 泛平積 476.3077172250686023 | 38.4546597948638063 | 1.3801672436127973 |
第 2 段 | 29.6364083333333333 | 12976.3920 | 437.853057430204796 | 39.8348270384766036 | |
第 3 段 | 44.4546125 | 17693.7462 | 398.0182303917281924 | ||
第 4 段 | 21148.7328 | ||||
第 5 段 | 23279.9970 | ||||
第 6 段 | 24026.1840 |
夏至前後:
泛立積差 0.6650565922569702平差 (泛平積差 - 泛立積差)/段日 = 2.20748194450453482997512859208836859517228445335591立差 泛立積差/段日^2=0.002726280004867184
冬夏至後 x 日的 日平差、盈縮差 = 定差 x - 平差 x^2 - 立差 x^3 * 10^-4
積日 | 積差 | 日平差 | 一差 | 二差 | |
---|---|---|---|---|---|
夏至 | 0 | 0 | 定差 487.1014493604209279 | 泛平積差 35.1429904539999003 | 泛立積差=1.3301131845139404/2 |
第 1 段 | 15.6186708333333333 | 7058.9904 | 泛平積 451.9584589064210276 | 36.4731036385138407 | 1.3301131845139404 |
第 2 段 | 31.2373416666666667 | 12978.6580 | 415.4853552679071869 | 37.8032168230277811 | |
第 3 段 | 46.8560125 | 17696.6790 | 377.6821384448794058 | ||
第 4 段 | |||||
第 5 段 | |||||
第 6 段 |
授時 步月離
入轉日__
這是f(限) = (11.11 限 - 0.0281 限^2 -0.000325 限^3)/100
:
月亮改正在四箇象限都是對稱的,f(81.748) = 5.429
,所以在 81.748–84 之間還有一點小小塌陷。朓朒極值 5.429 度 / 13.36875 度每日 = 0.4061 日
公式源於這箇差分表:
積限 | 積差分 | 限平差 | 一差 | 二差 | |
---|---|---|---|---|---|
初日 | 0 | 定差 11.1100 | 泛平積差 0.3840 | 0.0936 | |
第 1 段 | 12 | 128.7120 | 泛平積 10.7260 | 0.4776 | 0.0936 |
第 2 段 | 24 | 245.9616 | 10.2484 | 0.5712 | |
第 3 段 | 36 | 348.3792 | 9.67720 | ||
第 4 段 | 48 | 432.5952 | |||
第 5 段 | 60 | 495.2400 | |||
第 6 段 | 72 | 532.9440 | |||
第 7 段 | 84 | 542.3376 |
又想到,之所以宋代只有
時憲曆日躔
《新法曆書》用對分圓模型,《曆象考成》用本輪均輪模型。下圖是兩條曲線,可見幾乎重合,只有在極值附近才分開了一點。《新法》極值是$(88.973,2.05335)$,《考成》是$(88.973,2.05302)$
時憲曆月離
《新法》和《考成》月離初均如下圖,極值爲$(91.662,-4.974295)$。時憲曆日躔從近地點起算,月離從遠地點起算。
日軌
黃赤轉換
古代天文模型是以赤道爲基準,所謂「赤道者,常道也,其數常定,紘帶天中,儀極攸準」,黃道度要根據赤道轉換而來。
度數從冬至起算,二至到二分:赤大於黃;二分到二至:黃大於赤。只有
纪元历 利用求根公式给出了二次函数的反函数,将唐代边岗的双二次函数改造成了一套漂亮的二次复合函数,这个大体上等价于对三角函数用泰勒级数展开以后的前 4 次项结果。在误差上,当角度大于 40 度时,他的算法的精度比泰勒级数还要好。
黃赤轉換公式的推導:
- 大衍等曆的黃赤轉換表格是用等差級數構造的。設歸算到半象限之內的赤道度爲 $x$,黃道度爲 $x_1$,「初率」爲 $e$,「每限增減」爲 $-f$,分母爲 $g$,每「限」長度爲 $s$
- 代入等差級數公式 $S_n=n[a_1+\frac{(n-1)d}{2}]$,其中 $n=\frac{x}{s},a_1=\frac{e}{g},d=-\frac{f}{g}$,可得 $S_n=\frac{x[s(2e+f)-fx]}{2gs^2}$
- 令 $a=s(2e+f),b=2gs^2,c=f$,得 $\Delta_{eq\rightarrow ec}=\frac{x(a-cx)}{b}$,即紀元等曆的赤轉黃公式
- 求 $x-\Delta_{eq\rightarrow ec}$ 的反函數,得 $h=\sqrt{(\frac{b-a}{2c})^2+\frac{b}{c}x_1} - \frac{b-a}{2c}$,即紀元曆的黃轉赤公式
- 黃轉赤之差 $\Delta_{ec\rightarrow eq}=abs(x_1-h)$,最後根據象限取適當的符號。
- 皇極、大衍、乾元、儀天有「依平」,到 45 度即止,45–半象限之間爲 45 度的值,所以要設取值範圍。皇極是 $f(x){max}=f(44)$,其他幾部 $f(x){max}=f(45)$。欽天、應天略有不同,函數的極值不到 45, $f(x)_{max}=f(\frac{a}{2c})$
更多見《中國古曆通解》討論大衍曆 p215、欽天曆 p496、應天曆 p523。崇玄曆的黃赤轉換公式比較特殊,不在討論範圍之內。
積度轉宿度
下表據
序號 | 宿 | 洛下閎 | 一行 | 皇祐 | 元豐 | 崇寧 | 授時 |
---|---|---|---|---|---|---|---|
75 | 77 | 79 | 78 | ||||
1 | 角 | 12 | 12.1 | ||||
2 | 亢 | 9 | 9.25 | 9.2 | |||
3 | 氐 | 15 | 16 | 16.3 | |||
4 | 房 | 5 | 6 | 5.75 | 5.6 | ||
5 | 心 | 5 | 6 | 6.25 | 6.5 | ||
6 | 尾 | 18 | 19 | 19.25 | 19.1 | ||
7 | 箕 | 11 | 10 | 11 | 10.5 | 10.4 | |
98 | 95 | 94 | |||||
8 | 斗 | 26 | 25 | 25.2 | |||
9 | 牛 | 8 | 7 | 7.25 | 7.2 | ||
10 | 女 | 12 | 11 | 11.25 | 11.35 | ||
11 | 虛 | 10 | 9 | 8.7 | |||
12 | 危 | 17 | 16 | 15.5 | 15.4 | ||
13 | 室 | 16 | 17 | 17.1 | |||
14 | 壁 | 9 | 8.75 | 8.6 | |||
80 | 81 | 83 | 82 | 83 | |||
15 | 奎 | 16 | 16.5 | 16.6 | |||
16 | 婁 | 12 | 11.8 | ||||
17 | 胃 | 14 | 15 | 15.6 | |||
18 | 昴 | 11 | 11.25 | 11.3 | |||
19 | 畢 | 16 | 17 | 18 | 17 | 17.25 | 17.4 |
20 | 觜 | 2 | 1 | 0.5 | 0.05 | ||
21 | 參 | 9 | 10 | 10.5 | 10.1 | ||
112 | 111 | 110 | 109 | ||||
22 | 井 | 33 | 34 | 33.25 | 33.3 | ||
23 | 鬼 | 4 | 3 | 2 | 2.5 | 2.2 | |
24 | 柳 | 15 | 14 | 13.75 | 13.3 | ||
25 | 星 | 7 | 6.75 | 6.3 | |||
26 | 張 | 18 | 17 | 17.25 | 17.25 | ||
27 | 翼 | 18 | 19 | 18.75 | 18.75 | ||
28 | 軫 | 17 | 17.3 |
先秦時期的赤道宿度已不可俱考,但是出土材料能提供很多線索。到太初改曆,赤道宿度就固定下來了,
自漢太初後至唐開元治曆之初,凡八百年間,悉無更易。今雖測驗與舊不同,亦歲月未久。新曆兩備其數,如淳風從舊之意。
以從舊之誼,
而黃道觀測結果就更迭得頻繁得多,想看具體情況,可以看我的源代碼。
這箇工具提供了各曆的宿度轉換,需要根據年代選用當時的曆法:
斗分
「斗分」是什麼意思呢?歲實
黃道過宮
以後補充。直到時憲曆,宮纔固定是十二中氣,此前都沒有對應起來。
里差
求朔弦望中日 以尋斯干城爲準,置相去地里,以四千三百五十九乘之,退位,萬約爲分,曰里差。以加減經朔弦望小餘,滿與不足,進退大餘,即中朔弦望日及餘。〔以東加之,以西減之。〕
算了24 * 0.17 = 4.08 時 = 2.04 辰
,結合 郭津嵩:撒马尔干的中国历法——蒙古扩张中的知识变动及其文化因素,「撒马尔干与燕京之间距离和时差的估计分别是二万里和二时」,考慮到修正因素,則尋斯干城與中國都城正好相差 2 辰。另外,里差並無球面三角經度的意義,只表示地表距離。
里差 = 里 * 4359 / 10 /10000
,尋斯干城與中國都城的里差是 20000 * 0.04359 / 日法 5230 = 0.16667
日,正好 2 辰。33.3333 / 5230 = 0.63735 刻
。撒馬爾罕在 67°E,北京在 116°E,時差 3.27 小時,遠小於 4 小時,耶律楚材高估了兩地距離。
里差怎麼用?
求天正冬至 置上元庚午以來積年,以歲實乘之,爲通積分;滿旬周,去之;不盡,以日法約之,爲日,不盈爲餘⋯⋯〔先以里差加減通積分,然後求之。〕
求冬至赤道日度 置通積分,以周天分去之⋯⋯〔其在尋斯干之東西者,先以里差加減通積分。〕
求經朔弦望入轉 置天正朔積分,以轉終分及秒去之,不盡,如日法而一,爲日,不滿爲餘秒,即天正十一月經朔入轉日及餘秒⋯⋯〔加減里差,即得中朔弦望入轉及餘秒〕
求朔望入交 〔先置里差,半之,如九而一,所得依其加減天正朔積分,然後求之。〕置天正朔積分,以交終分去之
求五星天正冬至後平合及諸段中積中星 置通積分,〔先以里差加減之。〕各以其星周率去之,不盡,爲前合分
先把里差加在通積分上,接著按一般步驟求冬至、冬至日度、五星前合分。求經朔入轉,先用朔積分求得入轉日,再加減里差。「朔積分」是用沒有加減里差的通積分求得的:「置通積分,滿朔實去之,不盡,爲閏餘;以減通積分,爲朔積分」。稍微麻煩一點的是入交,里差 / 2 / 9
加到朔積分上,再求入交,爲什麼要除 18 呢?按這樣的方法加上里差後,
步晷漏
假設 1 尺 = 20 cm,小數點後 4 位是精度就是 20μm。日出時刻 = 夜半漏 + 一般 2.5 刻
赤緯
陳美東
漏刻觀測地點
各曆晷影觀測地點及緯度
現代測定:[北緯, 東經, 海拔]
- 南京 [32.061, 118.791, 100](雞鳴山北極閣。明时“国朝于山巅置仪表,以测玄纬,名观象台,更名钦天山”。南朝时为皇家苑囿。明洪武十八年复建观象台。清康熙七年,清皇室将观象台天文仪器全部运至北京)
- 長安 [34.282, 108.964, 405](假設在大明宮南門)
- 陽城縣 [34.404, 113.141, 265](登封告成鎭周公測景臺。周公表高1.64m、開元八尺)34.475 度
大衍宣明曆測 - 洛陽 [34.696,112.626, 154](灵台遗址在今偃师县佃庄公社朱圪垱大队岗上村与大郊寨之间。臺高六丈14m)
- 浚儀縣岳臺 [34.813, 114.295, 75](开封市示范区西郊乡演武庄)34.8 度
麟德曆測「唐貞觀初,李淳風於浚儀縣古岳臺測北極出地高三十四度八分」 - 大都 [39.906, 116.428, 60](建國門觀象臺)40.95 度
授時曆四十度太強 39.9917°(清代)
據陈美东《中国古代昼夜漏刻长度的计算法》:
- 【洛陽】四分、景初、元嘉、大明
- 【長安】皇極、大業、戊寅、麟德
- 【陽城】大衍、宣明、崇玄、應天、儀天、崇天
- 【浚儀】乾元、明天、觀天、紀元、重修大明、庚午
《新五代史·司天考一》(中華,2016,頁756):
古者,植圭於陽城,以其近洛也,蓋尚慊其中,乃在洛之東偏。開元十二年,遣使天下候影,南距林邑,北距横野,中得浚儀之岳臺,應南北弦,居地之中。大周建國,定都於汴。樹圭置箭,測岳臺晷漏,以爲中数。晷漏正,則日之所至,氣之所應,得之矣。
均方誤差:
長安 | 陽城 | 洛陽 | 岳臺 | |
---|---|---|---|---|
四分 | 0.0585 | 0.0448 | 0.0540 | |
元嘉 | 0.0408 | 0.0356 | 0.0250 | |
大明 | 同元嘉 | |||
大業 | 0.0426 | 0.0373 | 0.0265 | |
戊寅 | 0.1091 | 0.0895 | ||
皇極 | 0.0527 | 0.0361 | ||
麟德 | 0.0264 | 0.0222 | 0.0141 | |
大衍 | 0.0452 | 0.0395 | 0.0278 | |
宣明 | ||||
崇玄 | ||||
應天 | ||||
乾元 | ||||
儀天 | ||||
崇天 | ||||
明天 | ||||
觀天 | ||||
紀元 | ||||
重修大明 |
太陽赤緯
這是儀天公式(紅、紫)與現代公式(黑)的對比,區別很大,因爲儀天是以距冬至時長爲自變量,他曆和現代公式都是以黃道實行度爲自變量。
晷影
這是《崇玄》晷長公式(紅、紫)與現代算法(黑)的對比,兩者難以區分,非常貼合。
月行九道
黃赤白道示意圖
春 | 夏 | 秋 | 冬 | |
---|---|---|---|---|
陰 | 黑1 | 白1 | 朱1 | 靑1 |
陽 | 朱2 | 靑2 | 黑2 | 白2 |
再加上與黃道交會,一共就是九道。
推月行九道:凡合朔所交,冬在陰曆,夏在陽曆,月行靑道;
冬、夏至後,靑道半交在春分之宿,當黃道東;立冬、立夏後,靑道半交在立春之宿,當黃道東南:至所衝之宿亦如之。 冬在陽曆,夏在陰曆,月行白道;冬、夏至後,白道半交在秋分之宿,當黃道西;立冬、立夏後,白道半交在立秋之宿,當黃道西北:至所衝之宿亦如之。 春在陽曆,秋在陰曆,月行朱道;春、秋分後,朱道半交在夏至之宿,當黃道南;立春、立秋後,朱道半交在立夏之宿,當黃道西南:至所衝之宿亦如之。 春在陰曆,秋在陽曆,月行黑道。春、秋分後,黑道半交在冬至之宿,當黃道北;立春、立秋後,黑道半交在立冬之宿,當黃道東北:至所衝之宿亦如之。
九道術前身是劉洪
交食
我把交會推步分一下階段:
- 漢代:只能根據食季判斷是否可能出現日月食。
- 魏晉南北朝:可以計算食分多少,判斷交食程度、虧食所起。
- 隋唐初
:出現時差、食差改正,但相當不成熟,瑣碎不堪複雜無比。大業 、戊寅 、皇極 、麟德 - 盛唐中唐
:規範化。大衍 、五紀 、正元 、欽天 宣明 之後,崇玄 另起爐灶,五代欽天 又回到大衍 的思路,把食差加在食限上,而非去交分上。經過一番角逐,最終宣明 方案勝出。此前人所未發。 - 唐後期至北宋前期,
宣明 :日食三差公式算法確立下來,奠定後世步交會基本模式。此後應天 、乾元 、儀天 都在不斷調整,變動幅度也不小。 崇天 以後:成熟定型,此後各曆只有比較小的區別。紀元 標誌著完全成熟。這一階段比以往都要簡明精練。
古代判斷交食都是用黃白經差,而月黃緯沒有參與計算,可能只是用來輔助判斷。
參數、槪念
交點月
交點月與食季(單位:朔望月)轉換公式:Node = Lunar * 食季的朔望月數/ (0.5 + 食季的朔望月數) = Lunar * 交點年的朔望月數 / (1 + 交點年的朔望月數)
(沒什麼用:也就是說 (交點年的朔望月數 +1)/交點年的朔望月數=朔望月/交點月——為什麼呢???)
不過乾象有三種交點月,反映出劉洪對交點月的認識還不成熟。
交點退行速度
交點退行速度用此公式計算: Sidereal = (V 平 + V 退) * Node
(陳美東《劉洪的生平、天文學成就和思想》,1986),再把月平行速 V 平 = Sidereal/Lunar + 1
公式代入,得 V 退 = Sidereal/Node - Sidereal/Lunar - 1
,我們可以用這箇公式計算任意曆法的交點退行速度。
交率交數
關於交率交數,主要參考劉金沂
定朔入交定日 = 經朔入交泛日 + 日改正 ± 交率/交數 * 月改正
交率/交數 = 交點月/交點年 = (V 日+V 退) / (V 平+V 退) = 27.2122/346.608 ≒ 0.0785
。交率交數是經朔到定朔才用的,計算其他時候的不用管,某時直接加減月亮改正即可。
經過驗證,這箇公式完全可靠。計算以下幾部曆法:
紀元 交率/交數 324 / 4127 = 0.07850739,精確値爲 7323715785246679/93286970952593250 = 0.078507381 精確到了小數點後 7 位,非常棒。通過「同餘」標籤下的連分數計算,可見紀元交率是精確值的一箇漸進分數。觀天 183 / 2331 = 0.07850708,精確值爲
3271955768163223/41677024412605020 = 0.078507422597416
精確到了小數點後 6 位。重修大明 10/127 = 0.07874,精確值
4098461650124679/52204833831588280 = 0.0785073
有些出入。欽天 72 / 963 = 0.0747664,精確值 5214687527858525/66791617777516270 = 0.078074
相差有點遠。刘金沂最後提到藪內清有一種近似算法,交率/交數=0.0748,這正是欽天曆的值。
食限
時差
古曆日食時差是基於定朔時刻 r
的一元函數,R = | 0.5 - r |
,則 時差 = kR(0.5 - R)
。但理論上還應該考慮太陽黃經,如果授時曆加上一箇黃經的線性函數,就能很好地與理論曲線脗合。
食差
食差是對日食視差影響的修正。由於視差,視月亮位置總是比眞實位置低,古人用相對的模型,視太陽、視黃道比眞實位置高,可以用此圖幫助理解
虛線是眞實的黃道、陰陽曆分界線
書上看到的:食差只與月亮天頂距有關,與午正前後無關,古曆卻將此作爲正負判斷依據,完全不對,只能是正誤參半。
階段四五步交會
本文是一箇提綱,主要目的是明晰各曆槪念的區別、各算法的自變量,這是最要命的。相關論文也有,但是看得不明不白,只好自己根據宋志等原文重新理一遍。
爲節省篇幅,「入交」表示加時入交日及餘分交率/交數 ≒ 0.0785
,各曆比例不同。日月改正爲太陽改正、月亮改正相加減。
南宋各曆全同紀元;遼金系和紀元很像,除了單獨說明的,其他基本上都是紀元。
〇、布算
入交
「定朔入轉」的槪念也困擾我很久,終於在
置經朔弦望入轉日及分,以定朔弦望加減差加減之,爲定朔弦望加時入轉;以定朔弦望日下分減之,爲夜半入轉。
置經朔弦望遲疾曆,以定朔弦望加減差加減之。在疾曆,便爲定朔弦望加時入轉日;在遲曆,用加轉中。置定朔弦望加時入轉日,以定朔弦望小餘減之,爲夜半入轉日。
所以定朔入轉 = 經朔入轉 ± 日月改正。
天正經朔入交
經朔夜半入交 = 經朔入交 - 小餘。
定朔夜半入交:整數日有進退的,加減一日,否則因經爲定
明天求去交度分的算法很獨特,交初度 = Sidereal - 積月 * 朔差 % Sidereal
,翻譯過來,就是上元以來交點退行的距離,再反減。這樣得到的是正交距冬至度數,另外再根據太陽距冬至度數,得出交前後分。
入陰陽曆
朔入交常日 = 經朔入交 ± 日改正
【欽天乾元儀天崇天觀天遼金】朔入交定日 = 朔入交常日 ± 比例 × 月改正
入陰陽曆 ():
- 【應天】朔入交常日 ± 月改正
卽紀元的定朔入交泛日。很奇怪,不確定是不是這樣 - 【應天乾元儀天崇天觀天遼金】朔入交定日
交前後分 (入陰陽曆)
不論陰陽,近交初爲交初,在二十六日、二十七日爲交初;近交中爲交中,在十三日、十四日爲交中。交初交中主要用來判斷食差符號。
【紀元】食甚泛餘 = 經朔 ± 日月改正 (朔入氣入轉) ± 日月改正 (朔入氣入轉) * 損益率 (定朔入轉)
【遼金】遼金系和紀元很像,除了直接以入交定日入陰陽曆,以及這條:食甚泛餘 = 經朔 ± 日月改正 (朔入氣入轉) * 1337 / 轉定分 (定朔入轉) 。
關於「泛餘」,
紀元 :以其朔望入氣入轉朏朒定數,同名相從,異名相消,副置之;以定朔、望加時入轉算外損益率乘之,如日法而一⋯⋯所得,視入轉,應朒者依其損益,應朏者益減損加其副;以朏減朒加經朔望小餘,爲泛餘。
上文說過,唐宋以來躔離分母都是月平行速,這樣並不精確,這裏的泛餘實質上就是以月實行速爲分母的躔離。如果
紀元 還不好理解,那重修大明 就非常明白了,乘月平行速,除月實行速,就等於把分母替換成了月實行速。紀元 與重修大明 幾乎等價。
【崇玄】定朔入交定積度 = 入交常日 * 月平行速
【崇天觀天】月入陰陽曆積度 = 入陰陽曆 * 月平行速
【紀元庚午授時】定朔入交泛日 = 經朔入交 ± 日月改正
【紀元庚午】定朔入交積度 = 定朔入交泛日 * 月平行速
【授時】交常度 = 經朔入交 * 月平行速
【紀元庚午】定朔入交定積度 = 定朔入交積度 ± 月改正 (定朔入轉)
【授時】交定度 = 交常度 ± 月改正 (經朔入轉)
時差
只有紀元、授時有月食時差,其他都以定望爲食甚。
【應天乾元儀天崇天】午前後分 (定朔)
【紀元庚午】中前後分 (泛餘)
【宣明應天乾元儀天】時差 (午前後分,半晝分)
【欽天崇天觀天授時】時差 (午前後分)
【紀元】時差 (中前後分)
【欽天應天乾元儀天崇天】食甚定餘 = 定朔 ± 時差
【明天】食甚 = (經朔 ± 月改正) * 月平行速/月實行速 ± 日改正
【紀元】食甚定餘 = 泛餘 ± 時差。
【應天乾元儀天崇天授時】距午分 = 午前後分 + 時差
【明天觀天紀元】午前後分 (明天觀天:食甚,紀元:定餘)
氣差
氣差
【應天乾元儀天崇天】氣差 (定朔距冬至日,距午分)
【宣明觀天】氣差 (定朔距冬至日,午前後分)
【明天紀元授時】食甚距冬至日 = 經朔距冬至日 + 食甚 - 經朔
【明天紀元授時】食甚日行積度 = 食甚距冬至日 ± 日改正 (食甚)
【明天紀元】氣差 (食甚日行積度,午前後分)
【授時】氣差 (食甚日行積度,距午分)
冬至前後符號:
宣明氣差「秋分後,陰曆減之,陽曆加之。」應天赤道差「盈初縮末內減外加」,乾元離差「秋分後陰減陽加」,紀元氣差「夏至後末限、冬至後初限,〔交初以加,交中以減。〕」崇天「秋分後,交初以加,交中以減」,庚午「秋分後陽曆加陰曆減」。
授時「在縮初盈末者,交前陰曆加陽曆減,交後陰曆減陽曆加」相當於交初交中。大統「縮初盈末,食在正交爲加,中交爲減」
刻差
刻差
【應天乾元儀天崇天】刻差 (定朔距冬至日,距午分)
【觀天】刻差 (定朔距冬至日,午前後分)
【明天紀元】刻差 (食甚日行積度,午前後分)
【授時】氣差 (食甚日行積度,距午分)
盈曆
宣明刻差「冬至後食甚在午正前,夏至後食甚在午正後,陰曆以減,陽曆以加。」應天黃道差「入盈,以定分午前內減外加」,儀天黃道差「冬至後,甚在午正東,陰減陽加;甚在午正西,陰加陽減;夏至後卽返此。」紀元刻差符號「冬至後食甚在午前,夏至後食甚在午後:交初以加,交中以減」,崇天「冬至後食甚在午前,夏至後食甚在午後:交初以加,交中以減」,庚午「冬至後午前陽加陰減」。
授時東西差「在盈,中前者,交前陰曆減陽曆加,交後陰曆加陽曆減;中後者,交前陰曆加陽曆減,交後陰曆減陽曆加。」
加差
只有宣明、儀天有加差。
符號:宣明「若蝕甚在午正後,則每刻累益其差,陰曆以減,陽曆以加。」
【宣明應天乾元儀天明天紀元授時】食差 = 氣差 ± 刻差 ± 加差
食分
除了【紀元授時】距交分 = 交前後分 ± 食差
【紀元】朔入交定日 = 入交常日 ± 食差 ± k0。望入交定日 = 入交常日 ± 比例*月改正 (望入轉)
【紀元】入陰陽曆 (入交定日) 。交前後分 (入陰陽曆)
【授時】正交中交限 = 正交中交度 ± 食差。正交度 357.64 = 交終度 - k0
【應天乾元儀天】日食分 (距交分,定餘)
【應天乾元儀天】月食分 (距交分)
【欽天崇天明天觀天紀元授時】食分 (交前後分,明天:去交定分)
月食旣內外分
食延
【應天】定用分 (食分,月實行速)
【乾元】定用分 (食分)
【儀天】定用刻 (食分,去交定分)
【崇天明天觀天授時】日食定用分 (食分,月實行速)
【崇天明天觀天】月食定用分 (交前後分,明天:去交定分,月實行速)
【紀元】定用分 (交前後分,食甚入轉損益率)
紀元月食半食延的最大值是 656 / 日法 7290 * (1 + 726 / 7290) = 9.895 刻
。
這是
f(食分) = sqrt((30 - x)x) * 0.00574 / 1.0962
,極值 f(15) = 0.0785 日
。1.0962 是月亮每限平行度,化爲每日平行度就是我們熟悉的 13.36875,0.574/1.0962 = 7/13.36875
以下是各曆定用分的分配,數字的單位是定用刻、定用分。
曆法 | 初虧——食甚 | 食甚——復圓 |
---|---|---|
皇極大衍宣明 | 0.5 | 0.5 |
戊寅 | 0.6 | 0.4 |
麟德 | 0.4 | 0.6 |
五紀正元 | 日食根據食甚時刻確定是 0.4 還是 0.6 | 月食都是 0.5 |
崇玄以後 | 1 | 1 |
計算食延一般來說只涉及食分,但也有幾部曆法用到了去交定分:儀天、明天、崇天觀天、紀元。
另外,
虧蝕所起方位
無關緊要,略
帶食出沒
凡日月帶蝕出沒,各以定法通蝕分,半定用刻約之,以乘見刻。多於半定用刻,出爲進,沒爲退。少於半定用刻,出爲退,沒爲進。各如定法而一,爲見蝕之大分。
說了半天,帶食分其實就是可見食延和眞實食延的線性關係,非常簡單。崇玄也是線性關係。
⋯⋯
階段三步交會
大衍
入交定日。初步判斷入食限
月食
去交前後分 (入交定日)
食分 (去交定分)
日食
入氣差積 (距冬至日)
朔定差及定限 (入氣差積)
入陰陽曆
⋯⋯
時差
五紀
一項加在陰曆、類陽曆上的食差:
自大寒畢立春,交前五辰外,自大暑畢立冬,交後五辰外,又減一辰。
基於夏至前後對稱,以及覆蓋範圍連續性,我覺得應該改爲「自大寒畢立夏」。但後來發現,
大寒畢立春,交前五時外、大暑畢立冬,交後五時外,皆減一時;五時內者,加一時。
非常難辦,不大可能兩部曆法都產生相同的訛誤吧?那只能這樣理解:「大寒畢立春」是立春前後一氣,「大暑畢立冬」是秋分前後四氣。
崇玄
1、置其朔距天正中氣積度,
2、以減三百六十五度半,餘以千乘,滿三百六十五度半除爲分,曰限心。加二百五十分,爲限首。減二百五十分,爲限尾。滿若不足,加減一千。 3、退蝕定餘一等, 4、與限首尾相近者,相減,餘爲限內外分。 5、其蝕定餘多於限首、少於限尾者,爲外;少於限首、多於限尾者,爲內。
1、「距天正中氣積度」找不到解釋,上文步晷漏的自變量是「二至加時已來至其日昏後夜半日數及餘」,那積度應該指加上了日躔的實行度。
2、「滿若不足,加減一千」,就要用到 mod:
|
|
3、「蝕定餘」是食甚時刻的約餘萬分小數,比如一日的 0.75 就是 7500,再退一等得 750。
4、限內外分的算法:min(abs(食甚 - R), abs(食甚 - L))
,這樣就能求得與限首尾相近的了。
5、蝕定餘和限首尾比較,得出限內外。可見限內外是與距冬至積度、食甚時刻有關的二元一次函數。
藍色限首 R,綠色限尾 L:
另外一箇關鍵點是,「多於限首、少於限尾者」不應該是同時滿足,而是滿足其中之一卽可,否則很多區間旣不在限內,也不在限外。據此可以作下圖:
與其他曆法的氣差刻差符號不同,
欽天
欽天日食分:
以定準加中限,爲陰道定準;減中限,爲陽道定限。不足減者,反減之,爲限外分。視陰道距交分,定準以上,定限以下,爲陰道食;卽置定限,以距交分減之,爲距食分。定準以下,雖曰陰道,亦爲陽道食;卽加陽道定限,爲距食分。其有限外分者,卽減去限外分,爲距食分。不足減者,不食。其陽道距交分,定限以下,爲入定食限;卽用減陽道定限,爲距食分。
很迷惑。我索性這樣改:
以定準加中限,爲陰道定限;減中限,爲陽道定準。不足減者,反減之,爲限外分。視陰道距交分,定準以上,定限以下,爲陰道食——卽置定限,以距交分減之,爲距食分。定準以下,雖曰陰道,亦爲陽道食——卽加陽道定準,爲距食分。其有限外分者,卽減去限外分,爲距食分;不足減者,不食。其陽道距交分,定準以下,爲入定食限;卽用減陽道定準,爲距食分。
這樣就非常通暢了。
階段二推遊交
大業戊寅
這兩部曆法推算交食都考慮了五星的因素,這是很神奇的思路,當時人爲什麼覺得五星對交食有影響呢?值得探討一下。也許因爲星和日月有牽制作用?