旧暦2033年問題【2】

現在公開しているCalend Mate version 2.00では、2月12日の「旧暦2033年問題【1】」で述べた問題点を解決するため、旧暦月決定のアルゴリズムを改良しています。

Version 1.xxでは天保暦の規則に則り、まず直前の二分二至(春分、夏至、秋分、冬至)の月を決定してから、直後の二分二至までの月数が4のときは閏月が存在するとしていました。この方法ですと先日の記事に示したような問題が生じます。

中国清朝の時憲暦の置閏規則(制定当初)は

  1. 冬至を含む月を11月とする。
  2. 次の冬至まで13ヶ月ある場合、中気を含まない最初の月を閏月とする。

となっています。この規則に従うならば、中気を含まない月があっても、翌年の冬至までに12ヶ月ある場合は閏月が存在しないことになります。また中気を含まない月が2つあっても、最初の月を閏月とするので月名の不連続は生じません。

天保暦置閏法の謎」(suchowanさん)によると嘉慶16年(1810~1811年)に置閏規則が変わり、上記の1.が「冬至を含む月を11月、春分を含む月を2月とする。」となりました。変更後の規則では冬至から春分の間に月が1つしかない場合、春分を含む月が2月とはならず矛盾が生じてしまいます。

この問題についてすのものさんは「夏至から次の夏至まで13ヶ月ある場合、どの月を閏月としたら中気と月の名とのずれが最小になるかを調べ、その月を閏月とする。」ことを提案されています。また旧暦月を中気名で呼ぶことも提案されています。

中気を二つ含む月の前後における閏月の入れ方の案(その2)(すのものの「いろいろ」)

旧暦月は平気法の時代から冬至を11月に固定して決定されていますので、すのものさんの案は従来とは逆になります。

これらを勘案した結果、Calend Mate version 2.00では原則として天保暦の規則により旧暦月を決定するが、決まらないときは清の時憲暦の制定当初の規則を適用することにしました。改良したアルゴリズムは次のようになります。

  1. 冬至から次の冬至まで、二分二至を2、5、8、11月に固定し月を決定する。
  2. 1年分の月の不連続の検査を行う。
  3. 2.で不連続があったときは、冬至から次の冬至までの月数が13の場合にのみ閏月が存在するとして月の再決定を行う。

従来は4か月分の計算ですみましたが、このアルゴリズムでは1年分の計算が必要になります。また冬至は11月に固定されますが、春分、夏至、秋分が2、5、8月からずれることがあります。

【関連記事】
旧暦2033年問題【1】
Calend Mate作成時の参考サイト

|

Calend Mate作成時の参考サイト

Calend Mate作成時に以下のサイトに掲載されているデータを参考にしました。

元号、明治以降の休日の変遷
行政歴史研究会

記念日
今日は何の日~毎日が記念日

六曜、十二直、二十八宿、選日
こよみの読み方 ver2RC

暦一般
こよみのページ
国立国会図書館「日本の暦」

暦法
暦関係(massangeana's page)
suchowan's Home Page

暦要項
国立天文台 暦計算室

【関連記事】
旧暦2033年問題【1】

| | トラックバック (0)

旧暦2033年問題【1】

拙作Calend Mateの旧暦計算では天保暦(1844年~1872年施行)と同じ定気定朔法を用いており、置閏規則も天保暦と同じ規則を採用しています。

1.中気は太陽の視黄径による。
2.朔日は太陽と月の視黄径が一致する瞬間を含む日とする。
3.太陽と月の視黄径の計算は略算式を用い、日本中央標準時で計算する。(天保暦とは異なる)
4.冬至を含む月を11月、春分を含む月を2月、夏至を含む月を5月、秋分を含む月を8月とする。
5.閏月は中気を含まない月に置く。しかし中気を含まない月がすべて閏月にはならない。

規則1により中気と中気の間隔が一定でないため、規則2によって求めた朔と朔の間隔より短くなることがあります。このため1ヶ月に2つの中気が含まれたり、中気が含まれない月が1年に2回存在することがあります。

旧暦2033年~2034年には規則4、5によって月が決定できないことが起こります。
旧暦2033年問題(Calend Mate)
2033 年の旧暦について(すのものの「いろいろ」)
2004-06-16(massangeanaさん、「いろいろ」)

Version 1.01で2033年および1700年は既に対応しているのですが、massangeanaさんのサイトにはこれ以外の年でも問題が生ずるとの記述がありました。
2004-06-22
2004-06-23

そこでCalend Mate Vedrsion 1.31のCalender_Lib.dll(Version 1.30)で月が不連続になるところをチェックしてみました。

不連続な月 旧暦年
10月-12月 192、716
10月-閏11月 211、431、936
1月-閏2月 1480、2224、2558、2577、2710、2797、2892、2949、2987、3082、3321、3416、3788、3989、4046、4084、4418、4752、4847、5257、5629、5849
1月-3月 3044、3473、3655、3807、4141、4179、4513、4885、6001
4月-閏5月 6506、6878、7250、7470、7622、7842、7994、8214、9072、9444、9816

既に修正済の2033年は2番目の10月の次が閏11月に、1700年は3番目の1月の次が閏2月になるパターンでした。

massangeanaさんのところに載っていた2147年~2148年については次のようになっていました。

朔日 旧暦月
8/26 8
9/25 9
10/25 10
11/23 11
12/23 閏11
1/21 12
2/20 1
3/20 2
4/19 3
5/18 4
6/16 5

また2204年~2205年については次表のようになっています。

朔日 旧暦月
8/26 8
9/24 9
10/24 閏9
11/22 10
12/22 11
1/21 12
2/20 1
3/21 2

| | トラックバック (0)