Excel「元嘉暦」2022【改訂版】の配布
―『宋書』『日本書紀』対応版―[暦]
以前(2021年7月1日(木))、当ブログ記事Excel版「元嘉暦」の配布―倭国の暦―で、Microsoft EXCELで作成した長暦(暦のシミュレーション)を無償配布しましたが、古賀達也の洛中洛外日記 第2711話 2022/04/03 柿本人麻呂系図の紹介 (8) ―石見国益田家の「柿本朝臣系図」― の暦日を確認していたところ、『日本書紀』の閏月との不一致が発見されました。
『日本書紀』と合わなかった原因その1
その原因を調べたら次のことが判明しました。
(1)Excel「元嘉暦」2021(初回配布版)は、「二十四気[1]」の「中気[2]」のある月が「閏月[3]」となっている場合がある。
(2)Excel「元嘉暦」2021(初回配布版)は、『宋書』(卷十三 志第三 律曆下 「元嘉曆法」)にある「閏有進退,以無中氣御之。」(閏は変動あり、中気の無い月を閏月とする。)」に基づいていない。
次が、『宋書』の「元嘉暦法」に記されている閏年・閏月の決め方です(下線は山田による)。
………………………………………………………………………………………………………………………………
〖原文〗
推積月術:置入紀年數算外,以章月乘之,如章歲為積月,不盡為閏餘。閏餘十二以上,其年閏。
〖私の意訳〗「積月[4]」の推算方法:「入紀年数[5]」に「章月[6](235ヶ月)」を乗じ、「章歳[7](19ヶ年)」で割って「積月[8]」とする。端数(余り)[9]を「閏餘[10]」とする。「閏餘」が十二以上ならその年が「閏年[11]」である。
推閏月法:以閏餘減章歲,餘以歲中乘之,滿章閏得一,數從正月起,閏所在也。閏有進退,以無中氣御之。
〖私の意訳〗「閏月」の推算方法:「章歳[7]」から「閏餘[10]」を減じ、余りに「歳中[12](12ヶ月)」を乗じ、「章閏[13](7ヶ月)」を満たして1を得る〔いくつ得られるか〕。正月より起算した数〔に当たる月〕が「閏月[3]」である。閏〔閏年と閏月〕は進退(変動)があり、「中気[2]」が無い月を「閏月[3]」とする。)
………………………………………………………………………………………………………………………………
初回配布版は、紀元前433年にギリシャの数学者メトンが発見した「メトン周期」(19 太陽年がは365.242194 日 ✕ 19 = 6939.601686 日で、これが235 朔望月(29.530589 日 ✕ 235 = 6939.688415 日)とほぼ等しいという19年の周期)に依った「章法」という太陰太陽暦の造暦メソッド(太陽年19年間に7閏月を置く手法)に基づいて、19年分のカレンダーがあれば繰り返し使えると間違った(閏年に関してだけなら正しい)解釈をしていました。その解釈に基づいて、章年次(元嘉暦では雨水が元旦になる年が章首)によって定まる(変動しない)「閏月表」を参照して閏月を決めていました。それが『日本書紀』の閏月と一致しない一つの原因でした。
そこで、『宋書』の元嘉暦法の「推閏月法」の計算によって「閏月」を決めてみましたが、それでも『日本書紀』の閏月とは一致しませんでした。
………………………………………………………………………………………………………………………………
581年 敏達天皇十年 春潤二月(閏二月)。(「推閏月法」の計算:閏一月。)
673年 天武天皇二年 閏六月 乙酉朔 庚寅(閏六月)。(「推閏月法」の計算:閏五月。)
684年 天武天皇十三年 閏四月 壬午朔 丙戌(閏四月)。(「推閏月法」の計算:閏三月。)
695年 持統天皇九年 閏二月 己卯朔 丙戌(閏二月)。閏一月。(「推閏月法」の計算:閏一月。)
………………………………………………………………………………………………………………………………
『日本書紀』と合わなかった原因その2
もしかすると『日本書紀』の元嘉暦は『宋書』(卷十三 志第三 律曆下 「元嘉曆法」)とは異なっているのではないか、という疑いが起きました。そこで『宋書』の本紀(卷五 本紀第五 文帝 ~卷十 本紀第十 順帝)に登場する閏月を悉皆調査して、その閏月と照合してみました。ところが、『日本書紀』だけではなく『宋書』とも一致しませんでした。
………………………………………………………………………………………………………………………………
448年 宋・元嘉二十五年 閏月 己酉 二月庚寅と三月庚辰に挟まれている(閏二月)(「推閏月法」の計算:閏一月。)
461年 宋・大明 五年 閏月 戊子 九月甲寅朔,日有食之。丁卯,甲戌と冬十月甲寅に挟まれて、月中に丙申,壬寅あり(閏九月)(「推閏月法」の計算:閏八月。)
………………………………………………………………………………………………………………………………
こうなると、『日本書紀』は『宋書』の元嘉暦法に従っているが、Excel「元嘉暦」2022β版(「推閏月法」計算に従ったもの)の方に誤りがある、と考えられました。『宋書』「元嘉暦法」を何度か読み直していると次の一文が気に懸かりだしました。
………………………………………………………………………………………………………………………………
推閏月法:〔中略〕閏有進退,以無中氣御之。
………………………………………………………………………………………………………………………………
先に掲げた〖私の意訳〗では「閏〔閏年と閏月〕は進退(変動)があり、「中気」が無い月を閏月とする。」としていますが、これは最終的に達した理解であって、当初は「推閏月法の計算によって決まる閏月は中気が無い月になるんだな。」という程度に思っていたのです。やがて「御」という漢字があることに遅まきならがら気づきました。「御」という漢字は「コントロールする」という意味です。すなわち「閏は〔月だけではなく年も〕進退のある〔変動する〕ものなので、中気が無いように御〔コントロール〕しなさい。」という意味が「閏有進退,以無中氣御之。」という一文なのでした。つまり、「(計算通りに閏月を決めると中気が入っている場合があるので)閏月はそれを進退させて中気の無い月に決めなさい。」という意味だったのです(閏年も章歳の中で一定せず動いていますので中気を含まない月(閏月)がある年が閏年です)。
実際に、先に掲げた年(448年・461年・581年・673年・684年・695年)は推閏月法の計算式だけでは『宋書』や『日本書紀』の閏月と一致しません(詳しくはダウンロードしたExcel「元嘉暦」2022【改訂版】のシート「資料1」をご覧ください)。
資料1のように一月ずれてしまうのは、ひと月を大の月(30日)と小の月(29日)にすることで月の満ち欠けの周期(約29.5日)に合わせているため、中気が一個だけ月末(30日)あたりにある場合、月の大(30日)小(29日)によって、中気が当月(大月の場合)になったり翌月(小月の場合)になったり前後するためです。そのことを「元嘉暦法」は「閏有進退」と言っているのです。前段の計算法だけでは「閏有進退」に対応できていないのです。ということは、「章法」暦といえども、暦(こよみ)が19年分あっても繰り返し使えるのではない、ということなのです。言い換えれば、「推閏月法」の計算だけでは閏月を決定できず、「二十四節気」を決めてからその月に中気があるかないかを確かめて、計算で求めた閏月に中気が有る場合には、中気が無い月が前月なのか翌月なのか調べてから閏月を決定しなければならないのです。つまり、暦本(その年の暦(カレンダー))を造る作業をしなければ閏月は決められない(「暦書[14]」だけでは閏月は決まらない)のです(古代にはコンピュータが無いからです)。
Excel「元嘉暦」2022【改訂版】の検証
今回のバグフィックス版( Excel「元嘉暦」2022【改訂版】)を配布するにあたり、『宋書』(「本紀」の閏月のみ)『日本書紀』(閏月のみ)と一致することを確認しましたが、それだけでは私が『宋書』『日本書紀』と一致するように作成した可能性もあるわけです(笑)。
そんな皆様の不安を解消するために、「暦」や「位置天文学(天文学暦部)」のexpertの方々の下記論文にある暦日と照合して検証した結果も以下に掲載しておきます。【改訂版】 の値と論文中の値とを確認する必要がある箇所において、それぞれのスクリーンショットを掲げてあります。なお、全ての分岐条件について網羅的にテストしてはいませんので、「バグ(不具合)が全くない」という保証はないことにご留意ください。
落合敦子, 渡辺瑞穂子 (國學院大學),相馬 充, 上田暁俊,谷川清隆(国立天文台)「元嘉暦による皇極天皇二年の月食の観測可能性」(https://www2.nao.ac.jp/~mitsurusoma/gendai3/100-105Ochiai.pdf)
元嘉暦の計算法の説明
上記論文に「本論文では、元嘉暦の計算法をわかりやすく解説する。」とした解説がありましたので、そのまま引用させていただきます(下線や強調は山田による)。
…………………………………………………………………………………………………………
2.元嘉暦による推算
2-1.元嘉暦の特徴
景初暦 日付は平気平朔、食予測は平気定朔 (中国で西暦237年-444年に行用)
元嘉暦 景初暦と同じく日付は平気平朔、食予測は平気定朔だが、観測に基づき二十四気の日付が約3日遅れていたのを正すなどした (中国で西暦445年-509年に行用)
麟徳暦 日本では儀鳳暦と呼ばれる。日付は平気定朔、食予測は定気定朔 (中国で西暦665年-728年に行用)
ここで
平気とは太陽の平均的な動きに基づく二十四節気のこと。
平朔とは月と太陽の平均的な動きに基づく朔のこと。
定気とは太陽の動きの遅速を取り入れた二十四節気のこと。
定朔とは月の動きの遅速を取り入れた朔のこと。
2-2.元嘉暦の採用定数
太陽年=222070日/608 =365.2467105…日 (現在値は365.24219…日)
朔望月=222070日/7520=29.53058510…日 (現在値は29.530589…日)
近点月= 20721日/752 =27.55452127…日 (現在値は27.554550…日)
交点月/朔望月=939×2/(939×2+160)より
交点月=27.21218784…日 (現在値は27.212221…日)
朔望月の長さが精密で、太陽年の長さがやや不正確であるには理由がある。これは朔望月の長さを決めて19年7閏法を守ると一年の長さは不正確になるからである。
29.53058510…日×235=6939.6875日、365.2467105…日×19 =6939.6875日
2-3.平気平朔の計算
ここでは元嘉暦で皇極天皇二年の暦を計算する。
元嘉暦は、元嘉二十年(中国の年号で、これは西暦443年に当たる)の5703年前が上元になる。上元は甲子の日で0時の瞬間に雨水で同時に朔になるときである。その年を0年として元嘉二十年が5703年になるということである。
…………………………………………………………………………………………………………
太陽や月は、その周期は一定であっても楕円軌道なので一周する間に速くなったり遅くなったりしています(「遅速」とか「遅疾」とかいいます)。「平均的な動き」とは、それを真円軌道上を等速で動いているとみなすことを意味します。
「近点月」とは、月が近地点(月の公転軌道上、地球に最も近い点)から再び近地点にくるまでの周期(この現在値は平均27.554 5505日=27日13時18分33.16秒)です(元嘉暦の定数は27日 + 417/752 日(≒ 27.55452127…日) で現在値とは異なります)。
「交点月」とは、月が黄道(天球上における太陽の見かけ上の通り道)に対する昇交点を通過してから再び昇交点を通過するまでの周期(現在値は27.212221…日)です(元嘉暦の定数は27日 + 325,194/1,532,576 日(≒ 27.21218784…日) で現在値とは異なります)。
上元の日は、ほとんどの太陰太陽暦が「甲子夜半朔旦冬至(かっしやはんさくたんとうじ)」(日干支が甲子で、その日の夜半(午前0時)に朔(新月)で(二十四節気の)冬至)となっていますが、元嘉暦は例外で、上元の日の二十四節気が「雨水」、すなわち「甲子夜半朔旦雨水」となっています。「天正月(てんしょうつき)」(冬至のある月のこと)が「子(ね)月」なので、「夏正(寅月正始)」の暦(寅月を正月とする暦)の場合は、「天正月」が前年十一月で、その2ヶ月後が「1月(正月)」です(子月(11月),丑月(12月),寅月(正始月=正月))。つまり「積年」(上元から何年経過しているか)の計算において、上元が「朔旦冬至」なら前年11月までの年数、「朔旦雨水」なら「当年正月」までの年数という違いが出るわけです。
※ 干支番号について 以下、論文は「甲子」=1 ですが、excel「元嘉暦」は「甲子」=0 としていますので、この違いにご留意ください。
平朔法による朔弦望の計算
皇極天皇二年(西暦643年)は上元から数えて5,903年(「積年」)。
皇極天皇二年正月朔日の干支の計算(excel元嘉暦)
表1 平朔法による皇極天皇二年の朔弦望の計算
平朔法による皇極天皇二年の朔弦望(excel元嘉暦)
平気法による二十四気の計算
表2 平気法による皇極天皇二年の二十四気の計算
皇極天皇二年の各月朔(excel元嘉暦)
平朔平気による暦
Excel「元嘉暦」2022【改訂版】は、暦に弦と望を入れ込んでいません(「朔弦望表」は当然ありますが)。正月直前の前年の3か月から翌年の正月まで(各月毎に日干支・二十四気・JDNのみ)を表示します。
表3 平朔平気による皇極天皇二年の暦
Excel元嘉暦の皇極天皇二年の暦1(正月から4月まで)
Excel元嘉暦の皇極天皇二年の暦2(5月から閏7月まで)
平気定朔による月食予測
Excel「元嘉暦」は、平気定朔による月食予測も計算しています。
皇極天皇二年五月の月食の存否を判定する「去交分」の値は 930 です。
月蝕の存否
皇極天皇二年五月望の去交分は930
定朔法による月の近点通過後の日数の計算
皇極天皇二年五月の月食時の月の近点からの日数は21日737.5分となっています。
皇極天皇二年五月望のときの月の近点からの日数
定朔法による日蝕月蝕の予測計算(正月朔日を例)
真の望の日時の計算
定朔法による日蝕月蝕の予測計算1
定朔法による日蝕月蝕の予測計算2
以上のように、検証して一致することを確認しました。
このExcel「元嘉暦」2022【改訂版】のダウンロードは下記リンクからどうぞ。アップロードにあたってウイルスチェックは行っておりますが、ダウンロード後にもお手元でウイルスチェックをなされることを推奨いたします。シート「説明と履歴」にある《著作権と使用許諾に関して》は必ずお読みください。もし、使用許可条件に従えないならば、ダウンロードしたファイルを削除してください。
ダウンロードの際、ファイル名は Excel「元嘉暦」2022【改訂版】 に変更して保存願います。
ダウンロード - excele3808ce58583e59889e69aa6e3808d2022e38090e694b9e8a882e78988e38091.xlsx
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
[1] 二十四気 一年を二十四等分して、12の「節気」と12の「中気」を交互に配して季節を表示する「太陽暦」です
[2] 中気 「二十四気」のなかの、季節の節目の「節気」と次の「節気」の間にある気なので「中気」と呼ばれます。
[3] 閏月 太陰暦は月の盈虧(満ち欠け)の周期(=朔望月:約29.5日)をひと月としているので、季節の周期である1年(太陽年=グレゴリオ暦では365.2425日)とは一致しません(「章法」暦の1年(平均)=12+7/19ヶ月≒12.368421朔望月)。そこで太陰太陽暦(太陽暦と太陰暦を統合した暦法)では、13ヶ月を1年とする閏年を19年間に7回設けて一致させる「章法」という手法があります。
太陰太陽暦19年の日数=19年の月数(19年×12ヶ月+7ヶ月)=235月×29.5日/月=6,932.5日
太陽暦(G暦)19年の日数=1年の日数365.2425日×19年=6,939.6075日
その差は、太陽暦の日数6,939.6075日-太陰太陽暦の日数6,932.5日=7.1075日ですが、
元嘉暦19年の日数は、ひと月(1朔望悦月)の日数を22,207(通数)÷ 752(日法)=29日+399/752日=29.530585…日 としていますので、22,207/752×235月=6,939.6875日であり、また、太陽年19年の日数は、1年の日数を222070(紀日)÷ 608(紀法)=365日+75/304日 としていますので、(365日+75/304日)×19年=111,035/304(日/年)×19年=3639.6875日となり、19年で太陽暦と太陰暦が一致するわけです。しかし、これは朔望月(観測値)から「章法」によって太陽年を逆算したからであり、「章法」では季節が実際の季節と19年間で、3639.6875日-6,939.6075日=0.08日(1.92時間=約1時間55分)暦面が遅れる(実際の季節が先にくる)ことになります。この累積した遅れを元嘉暦の編者 何承天 は冬至の日を3日早めて調整したわけです。それでも「章法」というメソッドを採る限り暦面の遅れは免れませんので、以後の暦は「章法」を採らない暦になっていくわけです(元嘉暦は最後の「章法」暦となりました)。
[4] 積月 「上元」(元嘉暦は「紀首」から)からの経過月数。
[5] 入紀年數 元嘉暦は19太陽年(=章歳)を1章、32章を1紀(608年=32章×19年/章)、6紀を1元としています。元嘉暦では上元(元嘉二十年(443年)の5,703年前(=-5,260年)の甲子夜半朔旦雨水の日(=JD-200,089))から当年(暦を造る年)までの経過年数(「積年」)を1紀の年数608年(「紀法」)で割った商の翌年を「紀首」として、その「紀首」から起算した当年までの経過年数を「入紀年数」としています。すなわち、「積年」を「紀法(608)」で割った余りの年数のことです。
[6] 章月 1章(章歳19年)の月数(朔望月数)です。「章法」は「19太陽年に7閏を置く」のですから、235ヶ月(=19年×12月+7閏月)です。
[7] 章歳 1章の年数(太陽年数)です。「章法」では19年です。
[8] 積月 太陰太陽暦では一般に「積月」と言えば「上元」から「天正中気」までの経過月数をいい、「上元の気」が冬至の場合(「甲子夜半朔旦冬至」の場合)には「天正冬至」(前年11月の冬至)までの経過月数です。しかし、「元嘉暦」では「入紀年数」をもとに計算しますので「入紀年数」(入紀積年)から「天正雨水」(当年の雨水)までの経過月数(入紀積月)をいいます。「入紀年数」に章年平均月数(「章法」での1章中の年平均月数=章月235ヶ月/章歳19年≒12.368421ヶ月)を乗じたものです。
[9] 端数(余り) 暦法は分数で計算しますので「推積月術:置入紀年數算外,以章月乘之,如章歲為積月,不盡為閏餘。閏餘十二以上,其年閏。」の「閏餘」は分数の分子であり、その分母は割った「章歳」の数19です。すなわち「閏餘十二以上」というのは、「入紀年數に章月を乗じて章歳で割って出た積月の端数(小数部)が12/19以上」と言う意味になります。
[10] 閏餘(じゅんよ) 「閏餘」をググると、「1年間の実際の日時が、暦の上の1年より余分にあること。」とあります。「閏餘」の意味を知らない人には分からない説明であり、これでは説明したことにはならないと思います。
『宋書』「元嘉暦法」には「閏餘」が「推積月術:置入紀年數算外,以章月乘之,如章歲為積月,不盡為閏餘。閏餘十二以上,其年閏。」と定義されています。これは次のことを言っています。
「入紀年数」(入紀積年)に「章月(235ヶ月)」を乗じて「章歳(19年)」で割って(すなわち、「章法」暦(太陰太陽暦)での1年の平均月数を乗じて)「積月(入紀積月)」を求め(紀首から当年まで、平均月数で何ヶ月あったかを求め)、割った「章歳」(=分母19)に満たなかった余り(=分子)が「閏餘」だ、と言っています。
わかるように説明すると、「入紀年数」(入紀積年)が何ヶ月(朔望月で)あったか計算して、1章における年平均月数(朔望月数)で割ることにより、陰暦なら何年に相当するかを計算して、その余り(つまり当年に割り当てられる朔望月数)が12以上なら、(平年の月数は12だから)当年は閏年(13ヶ月)である、ということです。つまり、「閏餘」とは「ある時点からの経過朔望月数を太陰暦1年の平均朔望月数で割った余りを分数で表したときの分子の数」で、分母は平均朔望月数を算出する際に割る数として用いた数です。
よって「閏餘」とは次のような説明になります。
………………………………………………………………………………………………………………………………
上元(元嘉暦は「紀首」)から当年までの経過朔望月数(「積月」、元嘉暦は「(入紀)積月」)を陰暦1章中の1年の平均朔望月数(帯分数で表される)で割った余り(帯分数の分子)。「閏餘」は経過朔望月数のうちの当年の暦に属する朔望月数を表す。
………………………………………………………………………………………………………………………………
「1年間の実際の日時が、暦の上の1年より余分にあること。」と元嘉暦法の「閏餘」は全然意味が違うと思うのは私だけでしょうか?
そもそも、「1年間の実際の日時」というのはその年の回帰年(太陽年)であり、「暦の上の1年」(グレゴリオ暦の365.2425日)より長い場合(秒単位か分単位か)を「閏餘」という意味が、グレゴリオ暦においてどこにあるというのでしょうか?私にはわかりませんでした。
[11] 閏年 太陰太陽暦で1年が13ヶ月(朔望月)ある年(閏月のある年)のこと。
[12] 歳中 平年の月数(12ヶ月)のことです。
[13] 章閏 1章(章歳19年間)中の閏の数(閏月の数=閏年の数)のこと(「章法」は7閏)です。
[14] 暦書 暦(こよみ)を造る計算などの方法を記したものです。暦(こよみ)自体は「暦本」といいます。
最近のコメント