/ / / / / /

上一篇 下一篇 同標題 發表文章 文章列表

作者  weihan (天天天藍) 站內  CPP_DS
標題  萬年曆問題
時間  2012/11/21 Wed 12:00:15

昨天看到一則新聞討論有關明年 2013 年在傳統萬年曆所推算出來的五月初一與氣象
局根據美國海軍天文台資料推算的陽曆日期不一樣,由於臺灣社會普遍會使用農民曆
來選日子。同時有問題的是在五月,當然就會影響到端午節到底是哪一天。於是取出
手邊的萬年曆翻看看,結果真的是有爭議的萬年曆。

為何會有差一天的問題,原因是出在農民曆到底是如何訂定每月的初一。由於農民曆
不是純陽曆也不是純陰曆,而是陰陽合曆,也就是說,農民曆的日期製定是一併考量
天上兩顆最大天體的位置,也就是太陽,月亮的運行位置。所謂農民曆的初一就是完
全看不見月亮那一刻的那一天,根據天文資料推算,明年國曆六月八日二十三時五十
六分為月朔時刻,因此六月八日就是農民曆的五月初一,但萬年曆可能推算時有誤,
將六月九日當成農民曆的五月的第一天,所以五月五日端午節在氣象局推算為六月十
二日,但傳統萬年曆則為六月十三日。

農民曆每月的第一天完全要看到底哪一天月亮完全看不見,所以不可能像陽曆一樣,
規定大月與小月的日數。由於月球繞地球一圈的時間,即一個朔望月平均為 29.5306
天,因此就有可能一月有 29 天,也可能有 30 天。此外,由於 12 個朔望月才共有
354.3672 天,這比一個平均太陽年 365.2422 天少了 10.875 天,如果不在月份上
作調整,每三年就會少一個月的天數,幾個三年下來,農民曆的一月就可能在夏天。
因此很明顯的農民曆須要每隔幾年就要加上一個月份,這多出來的月份就是閏月。但
問題又來了,閏月要加在哪裡,有沒有公式可循。很不幸地,這也沒有簡單的答案。
加閏月的月份完全要看地球的運行位置。首先,根據地球運行的位置,古人將一個回
歸年分為 24 個節氣,這包含白天最短的那一天冬至日,最長的那一天夏至日,白天
晚上時間一樣的春分日與秋分日。如果將黃道定義為地球環繞太陽運行的平均軌道平
面,二十四節氣正好將黃道分成二十四等份,每個氣相差黃經 15 度。春分時黃經為
0 度,清明時黃經為 15 度,依此類推。二十四個節氣分別對應到太陽在黃道上每運
動 15 度所到達的位置,任兩個中氣間隔 30 度。24 個節氣還可細分為 12 個節氣
與 12 個中氣,節氣與中氣相間排列:

朔望月: 二  三  四  五  六  七  八  九  十  11  12  一

中氣  : 春  穀  小  夏  大  處  秋  霜  小  冬  大  雨
         分  雨  滿  至  暑  暑  分  降  雪  至  寒  水

節氣  :   清  立  芒  小  立  白  寒  立  大  小  立  驚
           明  夏  種  暑  秋  露  露  冬  雪  寒  春  蟄

農民曆規定每月一定要有一個中氣,沒有中氣的月份就是閏月,但很可惜這樣並沒有
完全解決所有的問題。

一個回歸年平均有 365.2422 天,除以 12 後就是兩個中氣之間的平均天數,也就是
30.43685 天。由於地球繞太陽的軌道是橢圓形,依克普勒天體運動定律,當地球遠離
太陽時,運行速度變慢,兩者相近時,運行速度加快。當北半球為冬天時,地球此時
靠近太陽,運行速度會加快,造成在冬天時兩個中氣的時間偶而會少於 30.43685 天,
若少於一個平均朔望月的時間,即 29.5306 天。因此有可能造成一個朔望月內會有兩
個中氣,這會讓接在其後月份沒有中氣。但按照之前所定的規則其後的月份要閏月,
如果是這樣,會引起很奇怪的現象。例如:若冬至與大寒兩個中氣同時出現在同一月,
即農曆的十一月,因之後的月份因無中氣,變成閏十一月,而下個月份的中氣是雨水,
原來應是一月的,就變成十二月,這樣一來全部都亂掉了。所以有雙中氣月份後的那
一月就不能當成閏月,這就是所謂的假閏月。根據計算,西元 1645 年到 2245 年之
間共有十八個假閏月。

當每月初一的日子規則有了,且閏月的規則也定了,接下來就是月份如何訂定。由於
地球的近日點約落在冬至到大寒之間,此時地球繞轉太陽的速度最快,因此雙中氣的
現象僅會發生在冬至到大寒之間。也就是說,若發生雙中氣現象,之後的月份不能叫
為閏十一月,而是十二月,但沒有中氣(因為被用掉了)。若定義有冬至的那一月為十
一月,則其它的月份就可以決定了。由此來看中國農民曆的規則實際上利用到地球,
太陽與月球三者的運行,總結一下規則:

(1) 初一:包含月朔時刻的那一天。
(2) 閏月:沒有中氣的月份,但若是接在有雙中氣的月份之後,則不能閏月。
(3) 有冬至的月份為 11 月。

此外還有其它的曆法修正方式,滿有趣的。約十年前,我也是使用美國海軍天文臺的
觀測資料寫了一個三千多行的 C++ 程式,根據不同條件弄了一份萬年曆,有興趣的
同學可參考 http://www.math.ncu.edu.tw/~ziyou/ziwei/wcalendar.cgi 的說明。


--
===================================================================
*               人生的意義 : 盡責任  負責任                      *
*               人生的目的 : 受報  還願  行善                *
*               人生的價值 : 奉獻  付出                        *
================================================== 聖嚴法師  語 ===

--
發信站 [中央數學  織夢天堂 bbs.math.ncu.edu.tw]
  •FROM [weihan 從 ziyou4.math.ncu.edu.tw 發表]
→ weihan :研究這個應該算興趣。                                    13/04/26

上一篇 下一篇 同標題 發表文章 文章列表