旧暦の計算《朔の計算編》

本ページは旧暦の計算のサブページです。

1873(明治6)年のグレゴリオ暦への改暦まで日本で使われていた旧暦
本ページでは、旧暦の計算で必要となるの時刻の計算方法について記載する。

目次

旧暦の計算

平朔と定朔

概要編にも記した通り、旧暦の各月は(新月)の日から始まる。

下のアニメーションは、地球の周りを回る月と太陽の位置関係と、月の朔望を表したものである。
これを見るとわかる通り、朔とは「地球から見て月と太陽が同じ方向に来る瞬間」のことである。
(作暦においては「太陽の周りを地球が回る」ではなく「地球の周りを太陽が回る」と捉えた方がわかり易いので、本稿でもそのように表現する)

月と太陽の位置関係と月の朔望
月と太陽の位置関係と月の朔望

平朔

平均的には、月は1日当たり約 $13.2\degree$、太陽は1日当たり約 $0.985\degree$ だけ進む。
月と太陽が常に一定の速さで進むと仮定すると、朔から次の朔までの間隔(すなわち月が太陽よりも $360\degree$ 先に進む時間)$\TLunar$ は次式で表される。
これを平均朔望月と呼ぶ。

\[ \TLunar = \frac{360\degree}{\about 13.2\degree/\day - \about 0.985\degree/\day} = \about 29.5\,\day \]

また、第 $m$ 朔の時刻 $\nubar_m$ は平均朔望月 $\TLunar$ を用いて次式で表現できる。これを平朔と呼ぶ。
(朔の番号については節気番号と月番号を参照)

\[ \nubar_m = \nubar_0 + \TLunar \cdot m \]

但し、各暦法における第0朔の時刻 $\nubar_0$ と平均朔望月 $\TLunar$ の値は次表で与えられる。

平朔の計算に用いる定数[注1]
暦法 第0朔の時刻(グレゴリオ暦)
$\nubar_0$
平均朔望月
$\TLunar$
元嘉暦
儀鳳暦
平朔儀鳳暦
大衍暦
五紀暦
宣明暦
貞享暦
宝暦暦
修正宝暦暦
寛政暦[注2]
天保暦[注2]

定朔

平朔は月や太陽の速さが常に一定と仮定して求めた朔であったが、実際には月や太陽の動きは速くなったり遅くなったりする。
平朔 $\nubar_m$ に対し、月や太陽の速さの変動を加味して求めた“真の”朔の時刻 $\nu_m$ を定朔と呼ぶ。

定朔 $\nu_m$ を求めるに当たっては、多くの暦法では、まず前項により平朔 $\nubar_m$ を求め、これに補正項を加えて定朔とする。
次節以降、各暦法における定朔の求め方を説明する。

元嘉暦・平朔儀鳳暦の朔

元嘉暦・平朔儀鳳暦では、定朔を求めず平朔をその侭作暦に用いる。
これはすなわち、平朔を以てその侭定朔と見做しているのと同じである。

\[ \nu_m = \nubar_m \]

儀鳳暦・大衍暦・五紀暦・宣明暦の定朔

儀鳳暦・大衍暦・五紀暦・宣明暦では、月離げつり(月の動き)による補正値と日躔にってん(太陽の動き)による補正値とをそれぞれ求め、これらを平朔に加減して定朔を求める。

上述の通り、朔とは「地球から見て月と太陽が同じ方向に来る瞬間」のことである。
言い換えると、「月が太陽を追いかけて、追い抜く瞬間」であるとも言える。
従って、月や太陽の動く速さの変化に応じて以下の現象が生ずる。

月離による補正値

月は地球を焦点とする楕円軌道上を周回している(ケプラーの楕円軌道則)。
そして、月は地球に近づいたときほど速く動き、遠ざかるに連れて動きが遅くなる(ケプラーの面積速度一定則)。[注3]

月の軌道と速さ
月の軌道と速さ

月が地球に最も近づく点を近地点、地球から最も遠ざかる点を遠地点と呼ぶ。
月が近地点を出発して楕円軌道を一周して再び近地点に戻るまでの時間を近点月 $\PLunar$ と呼ぶ。
以降、月の周回運動における近地点(遠地点)通過時刻を単に近地点(遠地点)通過時刻と書く。

月の動く速さは地球からの距離に依存するので、各時点において月が平均と比べて何時間分先に進んでいるかをプロットすると、下図のように近点月 $\PLunar$ を周期とする周期関数となる。
この関数を $\DLunar(t)$ と書くことにする。$\DLunar(t)$ の具体的な式は計算式編を参照。

月離による補正値
月離による補正値 $\DLunar(t)$ (図は宣明暦の場合)

月の動きが速い程朔の時刻も早くなるので、月の動き(月離)を加味すると、定朔の時刻は以下のように表せる。

\[ \nu_m = \nubar_m - \DLunar(\nubar_m) \]

日躔による補正値

太陽についても月と同様である。
太陽は地球を焦点とする楕円軌道上を周回している(ケプラーの楕円軌道則)。
そして、太陽は地球に近づいたときほど速く動き、遠ざかるに連れて動きが遅くなる(ケプラーの面積速度一定則)。

太陽の軌道と速さ
太陽の軌道と速さ

太陽が地球に最も近づく点を近日点、地球から最も遠ざかる点を遠日点と呼ぶ。
太陽が近日点を出発して楕円軌道を一周して再び近日点に戻るまでの時間を近点年 $\PSolar$ と呼ぶ。
以降、太陽の周回運動における近日点通過時刻を単に近日点通過時刻と書く。[注4]

太陽の動く速さは地球からの距離に依存するので、各時刻において太陽が平均と比べて何時間分先に進んでいるかをプロットすると、下図のように近点年 $\PSolar$ を周期とする周期関数となる。
この関数を $\DSolar(t)$ と書くことにする。$\DSolar(t)$ の具体的な式は計算式編を参照。

日躔による補正値
日躔による補正値 $\DSolar(t)$ (図は宣明暦の場合)

太陽の動きが速い程朔の時刻は遅くなるので、太陽の動き(日躔)を加味すると、定朔の時刻は以下のように表せる。

\[ \nu_m = \nubar_m + \DSolar(\nubar_m) \]

進朔

大衍暦・五紀暦・宣明暦では進朔しんさくという朔日の調整が行われていた。
これは、「朔の時刻が夕方以降である場合、朔のある日ではなくその翌日を朔日と見做す」というものである。

大衍暦・五紀暦では進朔の実施の有無は不規則であったが、宣明暦の時代になると

1日の¾が過ぎて以降(すなわち18時以降)の朔は翌日の朔と見做す

という形で機械的に進朔が行われていたようである。
言い換えると、朔日の計算に於いては定朔に¼日を加えていたとも見做せる。

\[ \nu_m = \nubar_m + \frac{1}{4}\,\day \]

(但しこれはあくまで日単位の計算用であって、進朔とは朔の時刻をずらすことではない)

定朔の計算

以上を纏めると、儀鳳暦・大衍暦・五紀暦・宣明暦の定朔日は、平朔 $\nubar_m$ を用いて次式で表現できる。

\[ \nu_m = \nubar_m - \DLunar(\nubar_m) + \DSolar(\nubar_m) + j \]

但し、$\DLunar(t)$ と $\DSolar(t)$ はそれぞれ月離と日躔による補正を表す周期関数であり、$j$ は進朔である。

各暦法における関数 $\DLunar(t)$, $\DSolar(t)$ の周期(近点月・近点年)とその始点(近地点通過時刻・近日点通過時刻)並びに進朔 $j$ の値は次表で与えられる。
各暦法における関数 $\DLunar(t)$, $\DSolar(t)$ の具体的な式は計算式編を参照。

儀鳳暦・大衍暦・五紀暦・宣明暦の定朔の計算に用いる定数[注5]
暦法 第0月の近地点通過時刻
(グレゴリオ暦)
$\pi_0$
近点月
$\PLunar$
西暦0年の近日点通過時刻
(グレゴリオ暦)
$p_0$
近点年
$\PSolar$
進朔
$j$
儀鳳暦 なし
大衍暦 不規則
五紀暦 不規則
宣明暦 $\dfrac{1}{4}\,\day$

貞享暦・宝暦暦・修正宝暦暦の定朔

貞享暦・宝暦暦・修正宝暦暦では、「平朔の時点において月と太陽がどれだけ離れていて、それを解消するのにどれだけの時間を要するか」を求め、これを平朔に加減して定朔を求める。

黄経

周回軌道における月や太陽の位置は、黄経によって表される。
これは、「周回軌道全周を $360\degree$ としたとき、月や太陽が冬至点の方向から何度進んだ位置にあるか」の値である。
(西洋天文学では春分点を $0\degree$ とするのが通例だが、本稿では中国暦の慣習に倣い冬至点を基準とする)

時刻 $t$ における月と太陽の黄経をそれぞれ $\lLunar(t)$, $\lSolar(t)$ と書く。
例えば下図の状況であれば、月の黄経は $\lLunar(t) = 45\degree$、太陽の黄経は $\lSolar(t) = 75\degree$ ということになる。

月と太陽の黄経(冬至点基準)
月と太陽の黄経(冬至点基準)

月や太陽の速さが常に一定であると仮定すると、黄経(平均黄経)は以下のように単純な1次関数で表される。
($360\degree$ の倍数の違いは無視する。例えば $361\degree$ は $1\degree$ と同じ黄経を表す)

\[ \begin{align*} \lbarLunar(t) &= a + \obarLunar t \\ \lbarSolar(t) &= b + \obarSolar t \end{align*} \]

実際には月や太陽の速さは変動するので、真の黄経は平均黄経には従わない。
その誤差を $\dLunar(t)$, $\dSolar(t)$ とすると、黄経は以下の形で表される。

\[ \begin{align*} \lLunar(t) &= \lbarLunar(t) + \dLunar(t) = a + \obarLunar t + \dLunar(t) \\ \lSolar(t) &= \lbarSolar(t) + \dSolar(t) = b + \obarSolar t + \dSolar(t) \end{align*} \]

誤差項 $\dLunar(t)$, $\dSolar(t)$ は、平均黄経に対する月離・日躔の進み具合であるから、それぞれと近点月 $\PLunar$ と近点年 $\PSolar$ を周期とする周期関数となる(下図)。
これらの具体的な式は計算式編を参照。

平均黄経に対する月離の進み
平均黄経に対する月離の進み $\dLunar(t)$
平均黄経に対する日躔の進み
平均黄経に対する日躔の進み $\dSolar(t)$

角速度

月や太陽の位置を黄経で表すとき、その速さ(すなわち単位時間当たりの黄経の変化量)を角速度と言う。
時刻 $t$ における月と太陽の角速度は、それぞれ黄経の導関数 $\lLunarp(t)$, $\lSolarp(t)$ によって表される。

\[ \begin{align*} \lLunarp(t) &= \obarLunar + \dLunarp(t) \\ \lSolarp(t) &= \obarSolar + \dSolarp(t) \end{align*} \]

定数項 $\obarLunar$, $\obarSolar$ は平均角速度と呼ばれる。
これらは角速度の平均値であり、また、平均黄経の角速度でもある。

定朔の計算

今、平朔 $\nubar_m$ の時点で太陽が月よりも進んだ位置にあるとする。
この時点で太陽と月の黄経の差は $\lSolar(\nubar_m) - \lLunar(\nubar_m)$ であり、相対角速度は $\lLunarp(\nubar_m) - \lSolarp(\nubar_m)$ である。
よって、ここから月が太陽に追いつくまでの時間(すなわち平朔から定朔までの時間 $\nu_m - \nubar_m$)を旅人算[注6]の要領で求めると、次式の通りとなる。

\[ \nu_m - \nubar_m = \frac{\lSolar(\nubar_m) - \lLunar(\nubar_m)}{\lLunarp(\nubar_m) - \lSolarp(\nubar_m)} \qquad\text{(但し $\lSolar(\nubar_m) - \lLunar(\nubar_m)$ は ${\pm180}\degree$ 以内の角度で表す)} \]

これに前項までで求めた等式を代入すると次式が得られる。

\[ \nu_m - \nubar_m = \frac{(\lbarSolar(\nubar_m) + \dSolar(\nubar_m)) - (\lbarLunar(\nubar_m) + \dLunar(\nubar_m))}{(\obarLunar + \dLunarp(\nubar_m)) - (\obarSolar + \dSolarp(\nubar_m))} \]

ここで、平朔 $\nubar_m$ とは月と太陽の平均黄経 $\lbarLunar(\nubar_m)$, $\lbarSolar(\nubar_m)$ が同じ方向となる時刻であったから、次式が得られる。

\[ \nu_m - \nubar_m = \frac{\dSolar(\nubar_m) - \dLunar(\nubar_m)}{(\obarLunar + \dLunarp(\nubar_m)) - (\obarSolar + \dSolarp(\nubar_m))} \]

斯くして平朔 $\nubar_m$ と定朔 $\nu_m$ との関係式が得られた。
これは平朔 $\nubar_m$ の時点で月の方が太陽よりも進んだ位置にある場合も同様である。

平朔 $\nubar_m$ から定朔 $\nu_m$ を求めるには導関数 $\lLunarp(t)$, $\lSolarp(t)$ の値も必要になるが、これらは愚直に微分して求める必要は無い。
貞享暦の原典では以下の近似式で求めている(実際には予め用意された数表を参照する形である)。
※真に必要なのは平朔における瞬間の角速度ではなく平朔~定朔間の平均の角速度であるから、愚直に微分するよりもこちらの方が却って正確である。

\[ \begin{align*} \dLunarp(t) &= \frac{\dLunar(\floor{t} + 0.1\,\day) - \dLunar(\floor{t})}{0.1\,\day} \qquad\text{(但し $\floor{t}$ は $t$ を $0.1\,$日単位で切り捨てた値)} \\[2ex] \dSolarp(t) &= \frac{\dSolar(\floor{t} + 1\,\day) - \dSolar(\floor{t})}{1\,\day} \qquad\text{(但し $\floor{t}$ は $t$ を $1\,$日単位で切り捨てた値)} \end{align*} \]

なお、簡便に以下のような形で計算しても、(少なくとも貞享暦・宝暦暦・修正宝暦暦の施行期間においては)朔日は正しく求まる。

\[ \begin{align*} \dLunarp(t) &= \frac{\dLunar(t + 0.5\,\day) - \dLunar(t - 0.5\,\day)}{1\,\day} \\[2ex] \dSolarp(t) &= \frac{\dSolar(t + 0.5\,\day) - \dSolar(t - 0.5\,\day)}{1\,\day} \end{align*} \]

各暦法における関数 $\dLunar(t)$, $\dSolar(t)$ の周期(近点月・近点年)とその始点(近地点通過時刻・近日点通過時刻)並びに角速度 $\obarLunar$, $\obarSolar$ の値は次表で与えられる。

貞享暦・宝暦暦・修正宝暦暦の定朔の計算に用いる定数
暦法 第0月の近地点通過時刻
(グレゴリオ暦)
$\pi_0$
近点月
$\PLunar$
月の平均角速度
$\obarLunar$
西暦0年の近日点通過時刻
(グレゴリオ暦)
$p_0$
近点年
$\PSolar$
太陽の平均角速度
$\obarSolar$
貞享暦 $13.36875\,\text{日度}/\day$ $1\,\text{日度}/\day$
宝暦暦 $13.36875\,\text{日度}/\day$ $1\,\text{日度}/\day$
修正宝暦暦 $13.36875\,\text{日度}/\day$ $1\,\text{日度}/\day$

表中の「日度」とは、太陽が1日に進む角度を表す単位である。
(例えば貞享暦の場合、$1\,\text{周} = 360\degree = 365.256696\,\text{日度}$ となる)[注7]

寛政暦以降の定朔

寛政暦以降の旧暦では、平朔を介さずに月と太陽の黄経から直接定朔を求める。

抑〻定朔とは、月の黄経 $\lLunar(t)$ と太陽の黄経 $\lSolar(t)$ とが同じ方向となる時刻 $t = \nu_m$ である。
前節までは一旦平朔を求めてから補正する形で定朔を求めていたが、実のところ関数 $\lLunar(t)$, $\lSolar(t)$ から定朔を直接求めてしまえばそれでよい。

黄経

前節までは、月や太陽の進み方は地球からの距離のみに依存するものであり、近点月・近点年を周期として周期的に変化するものとしていた。
寛政暦以降の旧暦では、地球からの距離のみならず歳差や他の天体に因る摂動等をも考慮に入れるので、黄経 $\lLunar(t)$, $\lSolar(t)$ は単純な周期関数にはならない。

1868年近辺における月と太陽の黄経 $\lLunar(t)$, $\lSolar(t)$ の変動を図示したものが下図である。
これらの具体的な求め方は計算式編を参照。

1868(明治元)年近辺の月と太陽の黄経
1868(明治元)年近辺の月と太陽の黄経 $\lLunar(t)$, $\lSolar(t)$
(図上部の年月はグレゴリオ暦の年月)

定朔の計算

月と太陽の黄経の差 $\varDelta(t) := \lLunar(t) - \lSolar(t)$ を図示すると下図のようになる。

1868(明治元)年近辺の月と太陽の黄経の差
1868(明治元)年近辺の月と太陽の黄経の差 $\varDelta(t)$
(図上部の年月はグレゴリオ暦の年月)

定朔とはすなわち $\varDelta(t) = 0$ の解($\varDelta(t) \lt 0$ から $\varDelta(t) \gt 0$ に転ずる $t$)であるから、あとはこれを二分探索等で求めてやればよい。

細かい時刻は無視して朔の日付だけを求めたければ、次式を満たす日付 $d$ を探せばよい。

\[ \varDelta(d\,\day\,0\,\text{時}) \le 0 < \varDelta({d + 1}\,\day\,0\,\text{時}) \]

出典・参考資料

脚注