Loading [MathJax]/jax/output/HTML-CSS/jax.js

2020年9月9日 星期三

二十四節氣 (5) :如何推算二十四節氣是未來的哪一天?

在上一篇文章中推算出了冬至日子與時刻,而為了架構整部曆法,二十四個節氣都非常重要,那其他節氣該怎麼推算?

周髀算經裡就有描述在不同節氣時測量正午的晷影。

周髀長八尺,夏至之日晷一尺六寸。

凡八節二十四氣,氣損益九寸九分六分分之一。冬至晷長一丈三尺五寸,夏至晷長一尺六寸。問次節損益寸數長短各幾何?
冬至晷長丈三尺五寸,
小寒丈二尺五寸,小分五。
大寒丈一尺五寸一分,小分四。
立春丈五寸二分,小分三。
雨水九尺五寸三分,小分二。
啟蟄八尺五寸四分,小分一。
春分七尺五寸五分。
清明六尺五寸五分,小分五。
穀雨五尺五寸六分,小分四。
立夏四尺五寸七分,小分三。
小滿三尺五寸八分,小分二。
芒種二尺五寸九分,小分一。
夏至一尺六寸。
小暑二尺五寸九分,小分。
大暑三尺五寸八分,小分二。
立秋四尺五寸七分,小分三。
處暑五尺五寸六分,小分四。
白露六尺五寸五分,小分五。
秋分七尺五寸五分,小分一。
寒露八尺五寸四分,小分一。
霜降九尺五寸三分,小分二。
立冬丈五寸二分,小分三。
小雪丈一尺五寸一分,小分四。
大雪丈二尺五寸,小分五。
凡為八節二十四氣。氣損益九寸九分六分分之一。

不只周髀算經,各曆書中都會記錄節氣的晷影,越到後代越精確。但能在該節氣時測量晷影,表示節氣當有其定義法,是怎麼定義的呢?這定義又是否曾改變過?另外周髀算經這裡的數字顯然有問題,春秋分的晷影絕對不可能是夏冬至晷影長的平均值,這些在之後文章還會細述,但即使真的測量準確。曆法中的節氣不可能是用這個方法推定的,因為總不能測完之後再宣布某節氣是哪一天,還是要能先事先推測才行,測量是用來記錄驗證與修正用的。

在臺灣,清明寒食時節吃春捲 (圖片來源:Wikipedia)

古代推算測量節氣,太初曆以前沒有明確文字記載,僅能從片段的記錄推知,我們在此不討論,而從有明確文字記載的太初曆三統曆開始即是使用「平氣」。雖然「定氣」的概念很早就有,但一直到清初改用時憲曆時才將「定氣」用於曆法,「定氣」的部分其他文章還會提及。

「平氣」是指直接把回歸年等分成24等分,再直接從冬至點的那個時刻累加而得。 因為下一篇文章的關係,我們這裡先以唐代時唐肅宗頒布的太衍曆為例, 


 根據【新唐書卷二十八上 志第十八上 曆四上】:
《開元大衍曆》演紀上元閼逢困敦之歲,距開元十二年甲子,積九千六百九十六萬一千七百四十算。

以策實乘積算,曰中積分。盈通法得一,為積日。爻數去之,餘起甲子算外,得天正中氣。凡分為小餘,日為大餘。加三元之策,得次氣。 

看起來很複雜,但其實不會,裡面只是加減乘除而已,常數都有附上,只因為是文言看起來比較複雜:

通法三千四十。
策實百一十一萬三百四十三。 
三元之策十五,餘六百六十四,秒七。

「通法」3040,指的是把一天分成幾等分,「策實」1110343,指的是一年共有幾個「通法」的等分,把「策實」除以「通法」就是一個回歸年有幾天,也就是11103433040=365.2444,所以在大衍曆中推算的回歸年是365.2444天。

「三元之策」指的是兩個節氣間隔幾天,因為用的是平氣,所以就是回歸年等分成24個節氣: 11103433040×124=3657433040×124=365×124+7433040×124=15524+7433040×124=15+524+7433040×124=15+5×3040+7433040×124=15+159433040×124=15+664×24+73040×124=15664+7243040

所以三元之策是15664+7243040=15.21852,也就是上文中出現的「三元之策十五,餘六百六十四,秒七。」秒七的分母未明寫,但這裡的秒也不是現今相同的單位,只是更小的次單位,但推算的來源應如上述所示,方便起見我們之後直接用回歸年除以24計算上或視覺上可能更簡單些。

「積算」就是上元積年,如果算到開元十二年(西元724年)的剛過的那個冬至則如上述所寫共有96961740年(上一篇有提及,曆書中描述上元積年都是描述到所指年的剛過的那個冬至以方便計算)。以「策實」乘「積算」盈「通法」,其實就是96961740×1110343÷3040,即從上元算到開元十二年剛過的冬至共有幾天,也就是96961740年乘以一個回歸年有幾天。

「分為小餘,日為大餘」把上述的天數除以60得到的餘數,整數部分(就是大餘)可以知道是哪一天,分數的部分(就是小餘)可以知道冬至點的時刻。

「加三元之策,得次氣。」若要計算開元十二年的夏至,因為冬至到夏至過了12個節氣,從冬至點再加365.2422×1224天,也就是夏至的時刻。而除以60得到的餘數,「大餘」可以算出是哪一天,「小餘」可以知道是哪一刻。算式如下:

先計算到上元到開元十二年剛過的那個冬至有幾天:1110343×969617403040

再加上冬至到夏至過了12個節氣:

1110343×969617403040+11103433040×124×12=35414733497.3656

所以上元到開元十二年的夏至共有35414733497.3656天,把這個數字除以60的餘數中的「大餘」便可知道天干地支記日是何日,從「小餘」可知道是哪一刻:

35414733497.365617.3656 (mod 60) ,把小數點化為分母為3040的分數,

0.3656×3040=1111,所以 17.3656=1711113040,小餘1111,大餘17

查表可知大餘17所以是辛巳日,但跟上一篇一樣,如果參考萬年月曆的網站軟體程式等,因其都是用這個方法推算的,因此算出來一樣是必然的結果,當然這其實跟實際上的日月運行不同畢竟當時觀測與天文觀還是有限制。






上一篇推算冬至,筆者暫時沒能找到驗證的文章,不過節氣共有二十四個,提到其他節氣的文章就比較多了,筆者搜尋維基文庫查到了這篇元稹的祭文:

元稹【秋分日祭百神文

維長慶元年歲次辛丑八月甲子朔十八日辛巳,皇帝遣通議大夫行內侍省常侍賜紫金魚袋李某,祭於百神之靈:朕奄宅萬有,亭毒品類,日月所照,永思和寧,上極於天,下蟠於地,包山絕海,窮冥入元,至於毛鱗躶羽之神,鹹秩無文,以祛不若。秋序始肅,時將順成,且報且祈,用舉常祀。罔害嘉穀,以貽神羞。

標題都寫秋分日了,應該是那天寫的吧。文章的第一句直接寫出是農曆的哪一年哪一月哪一天,那就讓我們來算算長慶元年 (西元821年) 的秋分日究竟是不是辛巳日吧! 

首先要先知道當年所用的曆法及其常數,簡單google查詢可以知道長慶元年使用的是「觀象曆」(西元807年 - 西元821年)。「觀象曆」在新唐書中有記錄:

新唐書卷三十上 志第二十上 曆六上

憲宗即位,司天徐昴上新曆,名曰《觀象》。起元和二年用之,然無蔀章之數。至於察斂啟閉之候,循用舊法,測驗不合。

寫得不甚清楚,我們剛好就是需要蔀章之數。只好查閱舊唐書:

舊唐書卷三十二志第十二曆一

憲宗時,徐昂造《觀象曆》。其法今存,而元紀蔀章之數,或異前經;而察斂啟閉之期,何殊舊法。

還是沒寫清楚,而且「或異前經」,這下有點麻煩。不過難得有古文能幫助驗證,讓我們姑且使用前一個曆「建中正元曆」來計算,如果天數有差最多差到一兩天,雖然不是很好的驗證方式,不過畢竟是大文學家元稹寫的,使用名家的作品算起來比較有感覺,後段還會有其他文章可供驗證。

新唐書卷二十九 志第十九 曆五

《建中正元曆》演紀上元甲子,距建中五年甲子,歲積四十萬二千九百算外。   

《正元》通法千九十五。策實三十九萬九千九百四十三。 三元之策十五,餘二百三十九,秒七。

可以看到上元到建中五年 (西元784年) 共有402900年。建中是唐德宗的年號,因為建中五年那一年改曆且改年號為興元,建中五年(西元784年)就是興元元年甲子年。元稹寫的祭文是在長慶元年(西元821年),所以從上元到長慶元年共 402900+37年。

這裡正元曆的用詞也是「通法」1095為一天切成幾等分,「策實」399943為一個回歸年有幾個「通法」的等分,所以正元曆的回歸年長度是3999431095=365.2447天。

那計算上元到長慶元年剛過的那個年底冬至就是 (402900+37)×3999431095天。

「正元曆」的「三元之策」(兩個節氣相距的天數)用的是15239+7241095,同樣也就是回歸年3999431095除以24照之前推算方法來的,用後者回歸年除以24更簡單些。

元稹寫的時間點是秋分日,是冬至後第18個節氣, 所以從上元到長慶元年的秋分共有(402900+37)×3999431095+3999431095×1824=147170897.3043 天,而除以60的餘數則為17.3043,小數點要用分母為1095的分數表示,也就是0.3043×1095=333左右。

所以除以60的餘數是173331095,大餘是17,小餘是333。小餘是表示秋分點的時刻其實這裡我們用不到,但大餘可以知道是哪一天,我們查表可知17即為辛巳!跟元稹寫的一樣!

可惜這是用前一個曆法計算的,不是真的很好的驗證方式,我們再換個例子好了,筆者繼續從維基文庫中找到了這篇文章,不過這就是單純史書中的記事而不是大家熟知的文學家寫的文章了:

南齊書卷九志第一禮上

又尋景平元年正月三日辛丑南郊,其月十一日立春,元嘉十六年正月六日辛未南郊,其月八日立春,此復是近世明例,不以先郊後春為嫌。

景平 (西元423年 - 西元424年) 是南朝劉宋宋少帝的年號,元嘉 (西元424年 - 西元453年) 是南朝劉宋宋文帝的年號,景平二年時宋少帝過世,年號即換成元嘉元年。景平元年 (西元423年) 與元嘉十六年 (西元439年) 皆使用「景初曆」,「景初曆」在宋書中有記錄:

宋書卷十二志第二

壬辰元以來,至景初元年丁巳,歲積四千四十六,算上。此元以天正建子黃鍾之月為曆初,元首之歲夜半甲子朔旦冬至。

紀法,千八百四十三。

周天,六十七萬三千一百五十。

推二十四氣術曰:置所入紀年,外所求,以餘數乘之,滿紀法為大餘,不盡為小餘。大餘滿六十去之,餘命以紀,算外,天正十一月冬至日也。 求次氣,加大餘十五,小餘四百二,小分十一,小分滿氣法從小餘,小餘滿紀法從大餘,命如前,次氣日也。

「壬辰元」表示這裡用的上元不是習慣用的「甲子年」而是「壬辰年」。可以看到上元到景初元年 (西元237年) 共有4046年,不過景初元年 (青龍五年) 是個曆法上有點複雜的一年,那年魏明帝改正朔以建丑為歲首還砍掉三月份。可能是因為有點複雜的關係,這裡描述的上元積年是真的算到景初元年年底的那個冬至,與其他曆書的習慣算到前一年年底的冬至不太一樣,所以計算的時候要少算一年,如果照其他曆習慣的寫法會是壬辰元到景初二年戊午年 (西元238年) 共有4046年,我們用後者來計算比較不會混淆。

景初二年 (西元238年) 跟我們要算的景平元年 (西元423年) 相距185年。

這裡景初曆的用詞是「紀法」1843為一天切成幾等分,「周天」673150為一個回歸年有幾個「紀法」的等分,所以景初曆的回歸年長度是6731501843=365.2469天。

那計算上元到景平元年 (西元423年) 剛過的那個年底冬至就是 (4046+185)×6731501843天。

「景初曆」的兩個節氣相距的天數如上述用的是15402+11121843,同樣也就是回歸年6731501843除以24照之前推算方法來的,用後者回歸年除以24更簡單些。

文中寫的時間點是立春日,是冬至後第3個節氣, 所以從上元到景平元年的立春共有(4046+185)×6731501843+6731501843×324=1545405.20550733 天,而除以60的餘數則為45.20550733,小數要用分母為1843的分數表示,也就是0.20551×1843=378左右。

所以除以60的餘數是453781843,大餘是45,我們查表可知45即為己酉,對照原文「三日辛丑,其月十一日立春」,辛丑日後八日,沒錯也真的是己酉!文中另一個元嘉十六年的立春也可以用同樣的方式計算,讀者可以自行驗證!如同上篇所述,如果查閱萬年曆網站程式資料,也都是從這些史書的數據中推出的,不便拿來當驗證的工具,唯有直接對照當時的文章留下的記錄才適合。

希望這篇能讓大家對於當時如何推算有更進一步的了解!

沒有留言:

張貼留言