月齢を簡単に求める方法(月齢略算式)
 およそで良いので月齢を求める式は無いか 

時々聞かれる質問です。
月齢は、月が直前に朔(新月)となった瞬間からの経過時間を日数で数えたものだとは、こよみのページの随所で説明したとおり。

例えば、「月齢 14.6」は、前の新月から、14.6日(およそ14日と14時間)経過したことを示す数値です。
よく満月は月齢15などと言われますが、そういうものではありません(詳しくは「月齢はどうして決まる?」「月の満ち欠けの話」をお読み下さい)。
とはいえ、月齢15と言えば大体満月ですし、月齢 7の頃は、夕方に上弦の月が見えますから月の満ち欠けの目安には便利な数字です。このため、新聞やTVのお天気のコーナーなどで「明日の月齢」といった形で紹介されることが多いものです。

さてこの月齢、朔(新月)の瞬間さえ解ればあとは日数(+時刻)計算ですので、小学生でも出来るのですが、この朔の瞬間を求めることが実は大変。
天文学的には「月と太陽の視黄経が合となる瞬間」なので、月と太陽の視黄経を計算しなければなりません。
さてどうするか。地道に天体力学の本を読んで学ぶか、いくつか公開されている位置略算式を用いて計算すると言う方法があります。「位置略算式」には海上保安庁水路部(現海洋情報部)が公開した方式などが便利です(こよみのページも日月出没、月齢計算などでは利用しています)。ただ、略算式とはいいながら本の数ページに延々と印刷された大量の数値を使う式ですので、略算式とは言いながら「簡単」に使えるというものでは無いようです。

とすると、月齢とは気軽に求められるようなものでは無いのかな?
いえいえ、大丈夫条件付きですが、簡単に知る方法もあるのです。

 そんなに精度は要らない 
を条件に、月齢を求める式というのを探すと、いくつかそれらしいものがあります。

新こよみ便利帳
(暦計算研究会編 恒星社厚生閣刊行)

と言う本には、「簡易月齢計算式」として次の式が掲載されています(同書Ⅲ-2.P70より抜粋)

 グレゴリオ暦でのある年月日の月齢は、1日前後の違いを許容すれば簡単な式や表から求めることができる。
 ・・・中略・・・

(a) Y年M年D日の月齢A
1943≦Y≦1961なら C=(Y-1952)×11+M+D
1962≦Y≦1980なら C=(Y-1971)×11+M+D
1981≦Y≦1999なら C=(Y-1990)×11+M+D
で得られたCを30で割った余りがAである。ただし1月,2月の場合にはさらに2を加える。1943年以前,1999年以後について同様な式が得られることは明らかであろう。

文中の[Y年M年D日]は、[Y年M月D日]の明らかな誤植だが、手元にあった、1991年の初版のとおり引用した。

ずいぶんとまたシンプルな式で計算出来るものである。残念ながら上記の本には1999年までの式しかないが、文中にあったとおり、2000年以降の式も同様に作れる。

2000年以降の式 C=((Y-2009)%19)×11+M+D  

が一般化した式である。式の中に[%]というちょっと見慣れない演算子が登場したが、これは「剰余」、つまり余りを求める計算の意味(30 % 19 = 11といった具合)。
これで、19年ごとに式を分ける必要が無くなる(もっとも、1万年後の計算などして、ずれてるぞと言われても困る。良識ある使い方を・・・100年くらいなら問題ない)。


 どうしてそうなる? 

略算式を知りたいという用途には上に書いた式で良いのだが、これだけではただ何かの本の引き写しで「こよみのページ」としては面白くない。
「なぜそうなるの?」という疑問を持ってくださる奇特な方の存在を期待しつつ、この式の意味を考えてみよう。

月齢を月や太陽の位置計算をせずに年月日だけから求めるにはどうしたら良いか考えてみよう。もちろん厳密な計算は端からあきらめて、「概略でいい」と言う条件で。
  1. 日数から月齢を推測する方法 
     月の満ち欠けを朔望、朔から朔までの周期を朔望周期と言います。朔望周期は毎回違って、朔望周期の変動を簡単に計算するのは困難(それくらいなら、地道に位置計算した方がいい)。
     次善の策として、平均の朔望周期を使って代用することにします。
     平均朔望周期は、29.53059日。実際に朔となる日が解れば、その日から平均朔望周期の整数倍経過した日は、「朔」である可能性が高い。月齢は朔からの経過日数ですから、
      朔の日付が「Ya年Ma月Da日」だったとすると(この日の月齢は0)、例えば100日後の月齢は、
      100 / 29.53059 = 3 余り 11.4 
     となり、式の「余り 11.4」が月齢に相当すると考えられます(平均朔望周期を用いた簡易計算ですので、11.4というのは怪しい。約11とお考え下さい)。
     
  2. 実際に月齢を推測してみよう 
     論より証拠。実際に月齢を推測する課程を通して略算式の意味を考えてみます。
     例として、2004/07/01の月齢から1日後、1月後、1年後の月齢を推測することにします。
     こよみのページの月齢カレンダーで2004/07/01(日本時12時)の月齢を見ると
       2004/07/01 (JST 12時) 月齢 13.3  
    となっています。
     
    • 1日後(2004/07/02)の月齢は? 
       月齢は、朔(新月)からの経過日数ですから、1日後の月齢はほとんどの場合現在の月齢+1となります。よって、
         2004/07/02 (JST 12時) 月齢 14.3  
      となります。実際の数値ももちろん 14.3。
      「ほとんどの場合」とわざわざ断りましたように、計算の途中に朔が来てしまうと、月齢は改めてそこから数えることになりますので、その場合だけ修正をする必要があります。ここで、月の朔から朔の間隔は30日を超えることが無いので、これを利用して、計算結果が30より大きな場合は、答えから30の整数倍をひくことにします。
        例.計算結果が69.4なら → 69.4 - (30 * 2) = 9.4
       
    • 1月後(2004/08/01)の月齢は? 
       要は日の計算の延長なのですが、困ったことが一つ。それは暦の「月」の日数が30日だったり31日だったりすると言うこと。
        7/1と8/1の間は何日?
      くらいならすぐに31日と答えられますが、
        7/1と12/1の間は?
      と気かれたら、「ちょっと待って、計算するから」となりそうです。これだと、「月齢を簡単に求める」という趣旨に合わないですから、手抜きを考えましょう。

       暦月の日数はいろいろありますが、平均するとおよそ30.5日。大の月と小の月は大体交互に並んでいますから、月の日数は30.5日と考えても大きく狂うことはありません。今後は暦月の日数をこの日数を使って考えることにします。
        30.5 / 29.53059 = 1 余り 0.97 
      上の式では、「余り 0.97」が重要。この数字は、カレンダーの上で1月が経過すると、月齢はこのあまりの分だけ増えることを意味します。
         2004/08/01 (JST 12時) 月齢 (13.3 + 0.97) ≒ 14.3  
      となります。実際の数値は、14.7ですから、概略計算としては「正解」としても良さそうです。
       
    • 1年後(2005/07/01)の月齢は? 
       ここまで来れば手順は想像つきそうですね?
       年の日数は平年が365日。4年に一度の閏年が366日ですから、平均すると365.25日と考えられます。1月後の話同様この日数と平均朔望周期から1年での月齢の進みを見てみましょう。
        365.25 / 29.53059 = 12 余り 10.88 
      「余り 10.88」ですから、1年で平均して月齢は10.88だけ進みます。これから
         2005/07/01 (JST 12時) 月齢 (13.3 + 10.88) ≒ 24.13  
      実際の数値は、24.2ですから、概略計算としてはこれも「正解」。
       
  3. Y年M月D日の月齢は? 
    1日、1月、1年後の推測計算の手法を組み合わせれば好きな日付の月齢が推測できます。その式は、次の通り。
      Y年M月D日の月齢 =
      (Y - 2004)×10.88 + (M - 7)×0.97 + (D - 1) + 13.3
     
    試しに、2007年4月15日の月齢を計算してみましょう。
      (2007 - 2004)×10.88 + (4 - 7)×0.97 + (15 - 1) + 13.3 = 57.03
      結果が30より大きいので、30を引いて 57.03 - (30 * 1) = 27.03

       2007/04/15 (JST 12時) 月齢 = 27.03  
    を得ます。実際の月齢を調べると、27.0ですから「大正解」です。
     
  4. もっと簡単に(電卓よさらば) 
     上の式でも十分簡単ですが、それでも少数の計算がありますので、電卓が欲しいところです。もう少し簡単にして、暗算で出来るようにしたいと思いませんか?
     よく見ると掛け算の係数となる数は 10.88,0.97とそれぞれ、11,1に近い数字です。思い切って整数にしてみましょう。そうすると
      Y年M月D日の月齢 =
      (Y - 2004)×11 + (M - 7) + (D - 1) + 13.3
     
    これで2007/04/15の例を計算してみると、
      (2007 - 2004)×11 + (4 - 7) + (15 - 1) + 13.3 = 57.3 → 27.3
    を得ます。実際の月齢が27.0ですから、十分使えそうです。
    係数を整数で近似しても、その差は年の係数で0.12(11-10.88)ですから、この差が1を超えるのは計算基点から9年以上離れたとき。数年の間なら十分な精度が維持できるのです。
     
  5. もっと長期に・・・19年で一回り 
    何年かは使えるとは解っても、出来れば少しでも長く使いたいとと言うのが人情。何か良い手は無いかというと、それがあります。それはメトン周期として知られるものの利用です。

    平均朔望周期 29.53059日と太陽年 365.2422日の間にはメトン周期として知られる次の関係があります。
      29.53059 × 235 (=6939.6887日) ≒ 365.2422 × 19 (=6939.6018日)
    つまり19年と月が235回の朔望(満ち欠け)を繰り返すのに要する時間はほぼ同じ。2時間5分程度の差があるだけです。この差は月齢に換算すれば0.1にも満たない小さな誤差です。
    つまり、19年離れた同じ日付の月齢は、同じと考えても問題ないと言うことです。
    こう考えれば、19年ごとに区切って計算すれば、様々な「手抜き」で累積する計算誤差が19年毎にリセットされるわけです。
    この解説の一番最初、「新こよみの便利帳」の式が19年毎に区切れていた理由はこれです。
     
  6. 集大成・・・実際に作ってみよう 
     メトン周期を上手く取り入れ、計算基点となる年月日を計算期間のメトン周期の中間付近に取れば、手抜きによる誤差は小さく押さえることが出来ます。
    新こよみ便利帳の式が1999年までだったので、2000年以降の例で式を作ってみます。
    2000年からメトン周期で期間を区切れば第1の期間は2000~2018年。その中間と言うことで、2009/07/00 (2009/06/30)の月齢から式を作ってみます。例によって月齢カレンダーからこの日の月齢を引くと
       2009/06/30 (JST 12時) 月齢 7.3  
    前に、電卓なし用に作った式に当てはめると、
      (Y - 2009)×11 + (M - 7) + D + 7.3
    計算起点の月齢は7.3ですが、式の精度はせいぜい1.0程度ですので、7と見なすと、
      (Y - 2009)×11 + M + D
    が得られます。さらに剰余演算子を用いて
      Y年M月D日の月齢 = (((Y - 2009) % 19)×11 + M + D) % 30 
    とすれば、まあ100年くらいは使える式となります(最後の [% 30]は計算値が30を超えた場合の補正)。
     
  7. 忘れてはいけない大事なこと・・・2月の日数 
     何となく綺麗に終わったかと思いましたが実は落とし穴が。
     それは2月の日数。計算の前提として、「月の日数の平均は30.5日とする」としましたが、平均はまあ良いのですが、2月のところだけ28日ないしは29日と他の月と日数が大分違います。
     この局所的な日数のアンバランスを式では考慮していないので、最後の式で計算すると、1月と2月の計算結果だけ2日分狂ってきます。これを考慮して式を作ることも可能ですが、最後に示した式のようにすっきりした形にはとてもなりません。そう考えると式を変更するのは余り有効な方法ではなさそうです。
     と言うことで、最後の式は

      Y年M月D日の月齢 = (((Y - 2009) % 19)×11 + M + D) % 30 
      注意 1月と2月の月齢については、上記計算値に 2 を加える 

    と注意書きすることが、現実的ですかね?
「簡単な計算式の簡単な説明」のつもりで書いてみたら、長くなってしまった。
私ってくどい性格だな・・・。
余 談
メトン周期と閏月の関係
 19太陽年≒235平均朔望周期 というメトン周期、東洋においては「章」という名前で知られていた周期です。東洋の古い太陰太陽暦には19年ごとに7回閏月を設けるという規則があり、これに沿った暦を「章法の暦」と言います。これは、
  235 = 19 × 12 + 7 
から来るもので、初めの「19 × 12」は12ヶ月が19回繰り返されることを意味し、最後の「7」が臨時に設けられる月「閏月」の回数を表しています。
つまり、19年の間に7回の閏月を入れると、月の朔望と太陽位置(季節)が良く合致すると言うことを知っていたわけです。
月齢略算式と復活祭(イースター)
 教会暦を作る際にもっとも重要な復活祭の日付を決定するには、春分の日と満月の日を計算することが必要です。
 この計算において満月が何時になるかを計算するのに使われた、ドミニカル・レターと言う表がありますが、これは今回作った略算式の「年ごとの月齢の進み」を計算する箇所と同じ作りです。
 なるほど、昔の人も同じように考えて計算表を作っていたんだなと感心するかわうそでした。
■この記事を評価してください(最高5 ~ 最低1)
  • 良→
  • やや良→
  • 普通→
  • やや悪→
  • 悪→

※2010.6.1~の記事の評価   , 閲覧数 
http://koyomi8.com/reki_doc/doc_0250.html
暦と天文の雑学
http://koyomi8.com/
こよみのページ