貞享暦の計算
とりあえず貞享暦~天保暦の計算を行うコードを追加して、
https://github.com/suchowan/when_exe の trunk に登録
し、史上の暦日との朔閏の差異を確認した結果(とプログラム)
をこちら(verify-edo.zip)に置きました。
授時暦系の暦法では、地球と月の運動速度の変化により月の
位相に発生する中心差(角度)を、月の位相の変化速度(角度/日)
で割って、平朔と定朔の時間差を計算するというのが、基本的
な考え方ですが、中心差の計算が明確に記述されているのに対
して、月の位相の変化速度の計算方法は記述が見当たりません。
特に、授時暦では月の位相の変化速度のかわりに、月の位置の
変化速度が用いられているようです。2014-03-15の記事の誤差も、
この変化速度の計算方法のずれによるものと思われます。
幾何学的には、
定朔の日時の日月中心差の差=月の位相の平均変化速度×定朔と平朔の時間差(*)
となるような定朔の日時を求めればよいのですが、授時暦も
貞享暦も、一見するとそのような計算をしているようには見
えませんでした。
ところが、逐次近似で上記の日時を計算するアルゴリズム[1]を
貞享暦の暦定数に対して適用してみたところ、70年の行用
期間中で、朔がずれたのはたった一例のみ
相違暦日 通日 日の干支 計算暦日 朔(計算) 定朔時刻/h(/d)
1711-04-01 2346127 庚申(56) 1711-04-02 2346126 23.9884(1.000)
計算で23.9884時(夜半前42秒)となったのが、実際には夜半
直後だったというわけで、致し方ない計算誤差です。
貞享暦の計算の説明にある「一位進退」という記述の意味は
よくわかりませんが、結果的に(*)のような計算をするのと
同等の計算になっているのではないかと推察されます。
宝暦暦~天保暦についてはまた明日
[1] こちらの「C 方式 - 幾何学的補正」という処理です。
https://github.com/suchowan/when_exe の trunk に登録
し、史上の暦日との朔閏の差異を確認した結果(とプログラム)
をこちら(verify-edo.zip)に置きました。
授時暦系の暦法では、地球と月の運動速度の変化により月の
位相に発生する中心差(角度)を、月の位相の変化速度(角度/日)
で割って、平朔と定朔の時間差を計算するというのが、基本的
な考え方ですが、中心差の計算が明確に記述されているのに対
して、月の位相の変化速度の計算方法は記述が見当たりません。
特に、授時暦では月の位相の変化速度のかわりに、月の位置の
変化速度が用いられているようです。2014-03-15の記事の誤差も、
この変化速度の計算方法のずれによるものと思われます。
幾何学的には、
定朔の日時の日月中心差の差=月の位相の平均変化速度×定朔と平朔の時間差(*)
となるような定朔の日時を求めればよいのですが、授時暦も
貞享暦も、一見するとそのような計算をしているようには見
えませんでした。
ところが、逐次近似で上記の日時を計算するアルゴリズム[1]を
貞享暦の暦定数に対して適用してみたところ、70年の行用
期間中で、朔がずれたのはたった一例のみ
相違暦日 通日 日の干支 計算暦日 朔(計算) 定朔時刻/h(/d)
1711-04-01 2346127 庚申(56) 1711-04-02 2346126 23.9884(1.000)
計算で23.9884時(夜半前42秒)となったのが、実際には夜半
直後だったというわけで、致し方ない計算誤差です。
貞享暦の計算の説明にある「一位進退」という記述の意味は
よくわかりませんが、結果的に(*)のような計算をするのと
同等の計算になっているのではないかと推察されます。
宝暦暦~天保暦についてはまた明日
[1] こちらの「C 方式 - 幾何学的補正」という処理です。
この記事へのコメント