公式や表を使わず、何も覚えていない状態で、手軽に任意の年月日の曜日を暗算。
ユリウス暦では、4で割り切れる年は常にうるう年。
グレゴリオ暦(現在の普通の暦)もだいたい同じだが、100の倍数の年だけは特別ルール: 400で割り切れればうるう年、そうでなければ平年。例えば、2000年には2月29日があるが、1900年や2100年の2月は28日まで。
ユリウス暦では、1世紀につき、うるう年が25回入る。グレゴリオ暦では、うるう年が25回入るとき(ユリウス世紀)と、24回のとき(短い世紀)があり、400年ごとに前者が1回、後者が3回。
以下の三つは、落ち着いて考えればどれも当たり前のことであり、一度仕組みを理解すれば、無理に記憶しなくても、いつでも頭の中で再構成できる。
平年の1年(365日)ごとに、曜日は1個前進。例えば、ある年の5月5日が日曜日なら、翌年の5月5日は月曜日。
理由は、365 を 7 で割ると 1余るから。このことは覚えていなくても、365 = 350 + 15 ≡ 14 + 1 ≡ 1 (mod 7) と、その場で暗算できる(7の倍数は無視していい)。
同様に、うるう年の1年(366日)なら、曜日は2個前進。
4年を1周期とすると、平年3+うるう年1の通常の1周期では、曜日は2個後退。
理由は、基礎1から、1 + 1 + 1 + 2 = 5 ≡ −2 (mod 7)。
通常の7周期(28年)では曜日の後退は (−2) × 7 ≡ 0 (mod 7) であり、曜日が元に戻る。
グレゴリオ暦には、まれに通常ではない周期(4年連続平年)もある。しかし「XX00年2月末日」をまたぐ曜日計算をしない限り、そのことは問題にならない(以下では、またがないように切り分けるので問題なし)。
1ユリウス世紀(通常の周期25回)では、曜日は1個後退。
理由は、基礎2から、(−2) × 25 = −50 = −49 − 1 ≡ −1 (mod 7)。
短い世紀では、1日少ないので、曜日は2個後退。
グレゴリオ暦の4世紀では、(−1) + (−2) + (−2) + (−2) = −7 ≡ 0 (mod 7) なので、曜日が元に戻る。つまり、400年ごとに曜日パターンは循環。
最初に3月1日の曜日を考える。任意の年の3月1日の曜日が分かれば、任意の日付の曜日は簡単に分かる(「計算の後半」参照)。
「原点」として、2000年3月1日は水曜日。覚え方は、「ミレニアムで浮かれて水商売が儲かった」または「21世紀は水瓶座の時代」。もし原点の曜日を忘れてしまっても、今日の日付と曜日が分かれば、以下の4ステップを逆順に適用することにより、基準の曜日をその場で求めることができる。
基礎3から、+100年ごとに、ユリウス世紀なら曜日は1個後退し、長い世紀なら曜日は2個後退する(−100年なら、それぞれ1個・2個前進)。
よって1900・2000・2100・2200年の3月1日は、それぞれ木・水・月・土曜日。それを基準日とする。(この範囲外の年についても、400の倍数を加減すればこの範囲に帰着できる。)
直前の ’00年3月1日からの経過年数を Y とすると、基礎2から、Y を「Y を28で割った余り y」で置き換えて構わない。例えば、2050年3月1日は、2022年3月1日と同じ(Y = 50, y = 22)。
実際上は、28・56・84のどれかを適宜引き算すればいい。
y を4で割って商を q、余りを r とすると、基準日との曜日の違いは、−2q + r。第1項は基礎2、第2項は基礎1による。
例えば y = 22 なら5周期と2年なので、(−2) × 5 + 2 = −8 ≡ −1。2000年3月1日(基準日)は水曜なので、2050年3月1日は火曜日と分かる。
直前の3月1日からの経過月数を M とする。31 = 28 + 3 ≡ 3 なので、大の月が1個経過するごとに曜日が3個前進する。小の月(月の日数が30)なら、曜日の前進量はそれより1小さい。よって、3月1日との曜日差は 3M − N。ここで、N は「小の月が何回挟まったか?」で、期間に含まれる「4・6・9・11月30日」の回数。例えば8月1日を考えると M = 8 − 3 = 5, N = 2 で 3 × 5 − 2 = 13 ≡ −1 なので、3月1日と比べて曜日は1個後退。例えば、2050年3月1日(火曜日)を基準として、2050年8月1日は月曜日と分かる。
3月1日を基準としているので、最長で翌年2月1日までの11カ月を考えれば足り、2月が何日あるかを考える必要はない。
1月1日・2月1日に関しては、前年3月1日からの経過月数を考える点に注意(下記例題参照)。
最後に、1日以外の曜日については、単に1日からの経過日数分、曜日を前進させればいい。
以上により、グレゴリオ暦の任意の日付の曜日が簡単に求められる。
公式めいたものも記したが、どれも原理を考えれば単純明快なことであり、無理に公式を暗記しなくても、その場で容易に生成できる。ただし、何月が小の月かは既に知っているものとする!
以下の例では、説明を具体的にするために、途中計算の曜日も記してある。実際には、’XX年3月1日の曜日を求めずに、’00年3月1日との曜日差だけを通算しても構わない。
基礎3より1945年と同じ。基礎2より、それは1917年と同じ。
1900年3月1日は木曜日。1916年3月1日は4周期後なので、曜日差は (−2) × 4 ≡ −1、1917年3月1日は、それプラス1で木曜日のまま。
3月1日と6月1日との曜日差は (+3) × 3 − 1 ≡ 1、6月1日と6月7日の曜日差は 7 − 1 = 6、合わせて 7 ≡ 0 なので、結局、木曜日のまま。
2200年3月1日は土曜日。
2220年3月1日は5周期後なので、曜日差は (−2) × 5 ≡ −3、2221年3月1日はそれプラス1なので木曜日。
そこから2222年2月1日までの曜日差は (+3) × 11 − 4 ≡ 1、2月1日と2月22日の曜日差は 21 ≡ 0、合わせて +1 なので、答えは金曜日。
8000を引いて1999年9月9日と同じ。
1999年は84を引いた1915年と同じ。
1900年3月1日は木曜日。そこから1912年3月1日までの曜日差は、(−2) × 3 ≡ −6、そこから1915年3月1日までの曜日差は +3、合わせて月曜日。
3月1日から9月1日までの曜日差は (+3) × 6 − 2 ≡ 2、そこから9月9日までの曜日差は 8 ≡ 1、合わせて木曜日。
(別解) 2000年3月1日は水曜日。1999年3月1日は366日前なので月曜日(基礎1のリバース)。以下同じ。
もう少しだけ複雑でトリッキーな方法を使うと、任意の日付の曜日を数秒以内に言えるようになる。それに比べると上述の方法は少し時間がかかるが、その分、アルゴリズムが単純明快で、ほとんど何も覚える必要がない(メモリー消費量が小さい)。この方法でも、ゆっくり考えて数分以内、慣れれば10秒くらいで曜日が分かるだろう。ある意味、トリッキーな速算より素直で良い。
上記の手順はグレゴリオ暦専用だが、少し変えるだけでユリウス暦にも対応できる。
この計算法は、もともと別の話題(グレゴリオ暦での曜日の分布)の土台として考えたものだが、それ自体としても実用性がありそうなので、独立した記事とした。
曜日は「日月火水木金土」の繰り返しだから、各曜日の頻度はもちろん均等! …のような気がするが、現実は奇妙なもの。「毎月1日の曜日」「13日の曜日」のように「特定の日にちが何曜になるか」を考えると、現在の暦(グレゴリオ暦)では曜日分布に偏りがある。原因は:
「1~28日」のどの日付についても、そうなる。「29~31日」については別に考える必要があるが、結論から言うと、グレゴリオ暦ではどの日付も曜日が不均等。13日・金曜日は400年につき688回も発生し、迷信深い人を震え上がらせる。対照的に、13日・土曜日は684回しかない。30日・月曜日は631回あるが、30日・火曜日は626回。
トータル回数が7で割り切れない以上、正確に7等分できないのは仕方ないとして、多い曜日・少ない曜日で4~5回も差があるというのは、一体どういう現象だろう?
様子を見るために、1年分だけを取り出して考えてみよう。
問題1 2017年1月1日は、日曜である。2017年の1年間における、毎月1日の曜日の分布はどうなるか。
問: 「1月1日が日曜のとき、同じ年の2月1日は何曜?」
答: 1月は31日あるから、1月1日→2月1日で曜日は31個前進。「7の倍数の日数差」は曜日に影響しないので、計算上、31を「7で割った余り」の 3 で置き換えて構わない(31から「7の倍数28」を引き算)。つまり、曜日が31個前進することは、曜日が3個前進することと同じ意味。1月1日が日曜なら、2月1日の曜日はその3個先=水曜。
同様に考えると、「ある月の1日の曜日」を基準にした場合、その月の日数が30か31かに応じて「翌月の1日の曜日」は2または3前進する。ただし、その月が2月の場合には、月の日数が28か29かに応じて、0または1前進する(「0前進」の場合、2月1日と3月1日が同じ曜日)。
日曜日を「0」、月曜日を「1」…とすると、問題1の分布はこうなる:
曜日 | 日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|---|
曜日番号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
月 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
日数 (A) | 31 | 28 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | (31) |
A÷7の余り (B) | 3 | 0 | 3 | 2 | 3 | 2 | 3 | 3 | 2 | 3 | 2 | (3) |
「1日」の曜日 (C) | 0 | 3 | 3 | 6 | 1* | 4 | 6 | 2* | 5 | 0* | 3 | 5 |
A欄は、各月の日数。B欄は、それを7で割った余りで、Aマイナス28に等しい。この値は、「その月の1日→翌月1日で、曜日が何個前進するか」を表している。C欄の初期値「0」は「1月1日が日曜」という意味。2月以降のC欄は「前月の1日の曜日番号 + 前月のB欄」つまり前月の「B + C」。曜日番号なので、7以上になったら7を引く(例えば、曜日番号8は曜日番号1と同じ意味)。アスタリスクの場所で、この「7を引く処理」が行われている。
12月のA欄・B欄の丸括弧内の値は、ここでは必要ない(翌1月のC欄の計算に必要なデータだが、それは計算範囲外なので)。
さて、C欄全体を見ると「0」(日曜)が2回現れ、1月1日と10月1日が日曜になることが分かる。
「1」(月曜)は1回しかない(5月1日)。
各曜日について一覧表にすると:
結論として、1月1日が日曜の平年では、その年の各月1日の「日・月・火・水・木・金・土の回数」は、それぞれ 2・1・1・3・1・2・2 となる。これを
…と書き表すことにする(左端の成分が、日曜日の回数)。
a1 は「毎月1日」についてのデータだが、それと曜日が等しい「毎月8日」なども同じこと。一方「毎月2日」なら、「毎月1日」と比べ曜日が全部1個ずつ進んで、
…となるのだから、曜日の頻度は次のようになる(左端の成分が、日曜日の回数)。
a1 から a2 を得るには、成分を1個ずつ右にずらして、右端の 2 を左端に移せばいい。
2 1 1 3 1 2 2 もともとの状態(a1) 2 1 1 3 1 2 2 右に一個ずつずらした ¦ <----<----<----<------ ¦ 2 2 1 1 3 1 2 はみ出た成分を左端にワープさせる(a2)
実際、「1日が日曜である回数」と「2日が月曜である回数」は等しいから、a1 の左端の成分と a2 の左から2個目の成分は同じ値。他の曜日についても同様。「成分を右に1個ずつずらす。ただし、右端の成分は左端にワープさせる」というこの処理をリングシフトと名付け、σ で表すことにすると:
同じ年における「毎月2日の曜日分布」「毎月3日の曜日分布」「毎月4日の曜日分布」…は、それぞれ a1 に対して1・2・3…回リングシフトを行ったものに等しい。
もう少しだけ長い期間を考えてみよう。
問題2 2017年1月1日は、日曜である。2017~2020年の4年間に48回ある「毎月1日」の曜日の分布はどうなるか。
2017年の分については、問題1において a1 = (2, 1, 1, 3, 1, 2, 2) という統計を得た。2017年は365日あり、365を7で割ると1余るのだから、翌2018年には、全部の日付について、2017年と比べて曜日が1個ずつ前進する。例えば、2018年1月1日は月曜。そうすると、2017年の日付で日曜だった場所は全部月曜になり、月曜だった場所は全部火曜になり、以下同様なので、2018年の毎月1日の曜日分布は、
に等しい。実際、2018年には:
同様に、2019年の統計は:
もし2020年も平年だったら、2020年の統計は、単純に
となって、これらの和 D が問題2の解となっていた(和は、成分ごとに足したもの)。
a1 = (2, 1, 1, 3, 1, 2, 2) a2 = (2, 2, 1, 1, 3, 1, 2) = σ(a1) a3 = (2, 2, 2, 1, 1, 3, 1) = σ(a2) a4 = (1, 2, 2, 2, 1, 1, 3) = σ(a3) D = (7, 7, 6, 7, 6, 7, 8) ← 上の4行を成分ごとに足し算 D = a1 + a2 + a3 + a4
この D = (7, 7, 6, 7, 6, 7, 8) は、「日曜から始まる平年・平年・平年・平年」という4年間における、毎月1日の曜日分布を表している。
現実には2020年は うるう年なので、上記のやり方では計算が合わない。「平年・平年・平年・うるう年」というパターンを考慮して、4年目の統計 a4 を「うるう年バージョン」の統計 x に置き換える必要がある。統計 x を得るために、ここでは最初の a1 と同様に2020年の表を作り、手動で曜日をカウントしておく。2020年1月1日は、2017年1月1日から曜日が3回進んで水曜日「3」であることに注意すると:
月 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
日数 (A) | 31 | 29 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | (31) |
A÷7の余り (B) | 3 | 1 | 3 | 2 | 3 | 2 | 3 | 3 | 2 | 3 | 2 | (3) |
「1日」の曜日 (C) | 3 | 6 | 0* | 3 | 5 | 1* | 3 | 6 | 2* | 4 | 0* | 2 |
表3は表2と同じようなものだが、2月のA欄・B欄が1大きく、C欄の初期値が「3」になっている。表2と同様、前月のB欄とC欄の和がその月のC欄(7以上の場合、7を引く)。そうすると、2020年の統計は:
これで x = (2, 1, 2, 3, 1, 1, 2) が得られたので、問題2の正しい答えは:
a1 = (2, 1, 1, 3, 1, 2, 2) a2 = (2, 2, 1, 1, 3, 1, 2) = σ(a1) a3 = (2, 2, 2, 1, 1, 3, 1) = σ(a2) x = (2, 1, 2, 3, 1, 1, 2) ← a4 を置き換えた(2月29日の存在を考慮したデータ) W = (8, 6, 6, 8, 6, 7, 7) ← 上の4行を成分ごとに足し算 W = a1 + a2 + a3 + x
この W は「ウェット」、つまり「潤い」(うるう年)が含まれる4年間の統計に当たる。正確に言うと「1月1日・日曜日から始まる平年・平年・平年・うるう年」という4年間における、毎月1日の曜日分布を表している(左端の要素が日曜日の数)。…この記事では「2月29日が1回もない4年間」をドライと呼び、「2月29日が1回含まれる4年間」をウェットと呼ぶ。ユリウス暦の4年間(1月1日→4年目の12月31日)は常にウェットだが、グレゴリオ暦(現行のカレンダー)では、ドライな4年間も存在する(詳細は後述)。
統計 x のために表2と似た別の表を作ったり、4年統計が W と D の2バージョンに分かれてしまったり、すっきりしない感じだが、とりあえずこのまま進めてみましょう…。
4年単位のことは分かったので、4年×7回を考えてみる。
問題3 2017~2045年の28年間における「毎月1日」の曜日の分布はどうなるか。
2017年からの4年間における「毎月1日の曜日の分布」は計算済み(上記の W)。ところで、平年の日数365を7で割った余りは1。うるう年の日数366を7で割った余りは2。だから「平年・平年・平年・うるう年」の4年間を考えると、1月1日の曜日は、4年前の1月1日と比べて 1 + 1 + 1 + 2 = 5 前進する。
別の言い方をすると: 上記4年間の日数 365 + 365 + 365 + 366 = 1461 を7で割ると5余る。
つまり、2021年からの4年間における毎日の曜日は、4年前の同じ日の曜日に比べ、5個ずつ進んでいる。4年前に日曜だった日は全て金曜、月曜だった日は全て土曜、火曜だった日は全て日曜…。だから、2017年からの4年間の統計 W2 について、「W の日曜の回数」=「W2 の金曜の回数」、「W の月曜の回数」=「W2 の土曜の回数」…となる。
従って、W に対してリングシフトを5回行うことにより(=成分を5個ずつ右にずらすことで)、機械的に W2 を求めることができる:
0 1 2 3 4 5 6 0 1 2 3 4 ← 曜日番号 W = (8, 6, 6, 8, 6, 7, 7) W2 = 8, 6, 6, 8, 6, 7, 7 ← 右に5個ずらした a b c d e = (6, 8, 6, 7, 7, 8, 6) ← はみ出た部分を左へ a b c d e
「曜日が5個前進」は「曜日が2個後退」と同じ意味なので、左に2個ずらす、と考えても同じこと:
5 6 0 1 2 3 4 5 6 ← 曜日番号 W = (8, 6, 6, 8, 6, 7, 7) W2 = 8, 6, 6, 8, 6, 7, 7 ← 逆方向に2個ずらした y z = (6, 8, 6, 7, 7, 8, 6) ← はみ出た部分を右へ y z
記号的には:
W3 以降も同様で、4年ごとに、統計を左に2個ずつ ずらせばいい。4年×7=28年分を考えると:
W = (8, 6, 6, 8, 6, 7, 7) W2 = (6, 8, 6, 7, 7, 8, 6) ← 逆方向(左)に2個ずらした W3 = (6, 7, 7, 8, 6, 6, 8) ← さらに2個ずらした W4 = (7, 8, 6, 6, 8, 6, 7) ← さらに2個ずらした W5 = (6, 6, 8, 6, 7, 7, 8) ← さらに2個ずらした W6 = (8, 6, 7, 7, 8, 6, 6) ← さらに2個ずらした 48 48 48 48 48 48 48 ← 成分ごとの和
結局、問題3の答えは「どの曜日も48回ずつ」。
以下のように考えると、計算するまでもなく、各曜日が同じ数になることが分かる。…正方向または逆方向に7回リングシフトすると1周して元の状態に戻るのだから、リングシフトの回数(σ の指数)に7の倍数を加減しても、シフト結果は変わらない。従って、上記の和は、次のように表現される(結果が0~6の範囲になるように、指数に7または14を足す)。
和の順序を並べ替えれば、「もともとの(0個ずらした)統計」「1個ずらした統計」「2個ずらした統計」…「6個ずらした統計」をちょうど1回ずつ足し合わせていることになり、結果の各成分は、いずれも、もともとの7個の成分を足し合わせたものに等しい。
(a, b, c, d, e, f, g) : σ^0(W) (g, a, b, c, d, e, f) : σ^1(W) (f, g, a, b, c, d, e) : σ^2(W) (e, f, g, a, b, c, d) : σ^3(W) (d, e, f, g, a, b, c) : σ^4(W) (c, d, e, f, g, a, b) : σ^5(W) (b, c, d, e, f, g, a) : σ^6(W) --------------------- (A, B, C, D, E, F, G) A = a + b + c + d + e + f + g B = a + b + c + d + e + f + g C = a + b + c + d + e + f + g ...
この議論では、W の成分の具体的な値は使われていない。つまり、ウェットな4年(平年・平年・平年・うるう年)が反復される28ユリウス年(ユリウス暦の28年間)においては、任意の日付に関して、4年単位の曜日分布が具体的にどうなっていようと、28年間のトータルでは各曜日の出現回数は均等。「1~28日」の日付だけではなく、毎月ある わけではない「29~31日」の曜日を考えても(極端な話、4年に1度しかない「2月29日」の曜日を考えても)、同じ原理によって、
ことが保証されている。
「毎月1日」という日付について、問題1では a1 を手動でカウントし、問題2では W = a1 + a2 + a3 + x を構成し、問題3ではこの W から28年分の統計を求めた。計算結果は「どの曜日も48回」だった。ところが、上記の考え方に基づくと、次の2行の推論で同じ答えが得られる。
ユリウス暦では、28年より長い周期の変動要素は何もないため、「28年単位で曜日が均等」=「長期的には曜日が均等」となる。
§2と§3の考え方を組み合わせて、本題の「400年ごとの曜日の偏り」を求めてみましょう…。
ユリウス暦では、西暦年数が4で割り切れる年は必ず うるう年。グレゴリオ暦でも普通はそうだが、例外があって、西暦年数が100で割り切れる年については、4回に3回の割合で、平年になる。例えば、1900年・2100年・2200年は(年数が4で割り切れるので)ユリウス暦では うるう年だが、グレゴリオ暦では平年。2000年は、どちらでも うるう年。グレゴリオ暦では、年数が100で割り切れる年は、400で割り切れれば うるう年、割り切れなければ平年という規則になっている。
ユリウス暦の場合、必ず4年に1度うるう年があるのだから、
一方、グレゴリオ暦の場合、「うるう年がない(ドライな)4年間」が400年につき3回あるので、うるう年の頻度が少し減って、
§3で見たように、28ユリウス年ごとの曜日の分布は均等(48回ずつ)。グレゴリオ暦の場合でも、400年につき3回の例外の年以外はユリウス暦と同様なのだから、グレゴリオ暦の400年単位の曜日分布を計算するこつは、
…という2段構えになる。400年間の選択と分割については、いろいろなやり方が考えられ、どの方法でも結果は同じだが、ここでは1901~2300年の400年間を次のように6分割しておく。この場合、「ア」「イ」「ウ」の12年×3回だけを考えればいい。ただし「○○年~△△年」という期間は、△△年を含むものとする。
「あ」「い」「う」を合わせると、そこには28ユリウス年が 7 + 3 + 3 = 13 回含まれていて、各曜日が 48 × 13 回ずつ出現する。
一方、「ア」「イ」「ウ」の期間は、いずれも例外の年を含んでいる(それぞれ2100年・2200年・2300年が、ユリウス暦と違い うるう年にならない)。問題は、この期間だが…。とりあえず「ア」を考えてみよう。
問題4 グレゴリオ暦では、1901年1月1日は火曜である。期間「ア」の12年間における「毎月1日」の曜日の分布はどうなるか。
1901年の1月1日が火曜なら、196年後の2097年1月1日も火曜。なぜなら、この196年間はユリウス年(4年に1度うるう年がある)。196は28の整数倍。28ユリウス年ごとに、同じ曜日のパターンが反復される(§3)。…ところで、グレゴリオ暦2100年は平年だから、期間「ア」の最初の4年(2097・2098・2099・2100年)はドライ。そしてこの期間は、今見たように、火曜から始まる。従って、その4年間における「毎月1日の曜日分布」は:
ここで、§2で求めた D を使った。ただし D は「日曜から始まる4年間」のデータなので、火曜から始まる4年間に置き換えるため、要素を2個ずつ右にずらしている。
ウェットな4年(平年・平年・平年・うるう年)ごとに、曜日は5前進(=2後退)する。なぜなら、365 + 365 + 365 + 366 を7で割ると、余りは5(§3参照)。ドライな4年(平年×4)では、それより日数が1少ないので、曜日は4前進する。これは 365 + 365 + 365 + 365 を7で割った余りに当たる。そうすると、
結局、「ア」の12年間の曜日分布は次のようになる。
W = (8, 6, 6, 8, 6, 7, 7)
D = (7, 7, 6, 7, 6, 7, 8)
σ^2(D) = 7, 8, 7, 7, 6, 7, 6 ← 2097~2100年(ドライな4年)
σ^6(W) = 6, 6, 8, 6, 7, 7, 8 ← 2101~2104年(ウェットな4年) σの指数は2+4= 6
σ^4(W) = 8, 6, 7, 7, 8, 6, 6 ← 2105~2108年(ウェットな4年) σの指数は6-2= 4
21 20 22 20 21 20 20 ← 上記3行を縦に足し算
σ の指数の変動は、直前の4年間がウェットかドライかによって決まる。
…これで、問題4の答えが得られた: 日・月・火・水・木・金・土の回数が、それぞれ 21, 20, 22, 20, 21, 20, 20。
ところで、「ア」の12年間は、ウェット2回・ドライ1回なので、12年間での曜日の変化量は:
つまり、12年後の曜日が同じになり、期間「ア」が明けた日(2109年1月1日)は再び火曜(*注1)。そこから「イ」までの期間は28ユリウス年の整数倍なので、「イ」の開始日も火曜。同様に「ウ」も火曜から始まる。
*注1 「2105年1月1日=木曜」は計算済みなので、そこから曜日が2後退すると考えてもいい。
そうすると、期間「イ」の曜日分布も、「ア」と同じように計算できる:
σ^2(W) = 7, 7, 8, 6, 6, 8, 6 ← 2193~2196年(ウェットな4年)
σ^0(D) = 7, 7, 6, 7, 6, 7, 8 ← 2197~2200年(ドライな4年) σの指数は2-2= 0
σ^4(W) = 8, 6, 7, 7, 8, 6, 6 ← 2201~2204年(ウェットな4年) σの指数は0+4= 4
22 20 21 20 20 21 20 ← 上記3行を縦に足し算
同様に、期間「ウ」の曜日分布は:
σ^2(W) = 7, 7, 8, 6, 6, 8, 6 ← 2289~2292年(ウェットな4年)
σ^0(W) = 8, 6, 6, 8, 6, 7, 7 ← 2293~2296年(ウェットな4年) σの指数は2-2= 0
σ^(-2)(D) = 6, 7, 6, 7, 8, 7, 7 ← 2297~2300年(ドライな4年) σの指数は0-2= -2 (☆)
21 20 20 21 20 22 20 ← 上記3行を縦に足し算
(☆) の σ−2(D) は「D を逆方向(左)に2個ずつずらす」操作で、σ5(D) と同じこと(§3参照)。
3個の小計を足し合わせれば、「ア・イ・ウ」の36年間における曜日分布 n が得られる:
「ア・イ・ウ」以外の期間では曜日は均等(前記のように、48 × 13 = 624回ずつ)なのだから、グレゴリオ暦の曜日の偏りは n に集約される。「毎月1日は日曜になりやすいが、月曜や土曜には なりにくい」こと、「その際、多い曜日と少ない曜日で4回の差があること」が見て取れる。400年分の統計を c とすると:
c は毎月1日の曜日分布だが、毎月2~28日の曜日分布は、単に c をリングシフトすることで得られる。例えば12日先の「毎月13日」の分布は
となって、確かに金曜日が多い。
あまりきれいな計算ではないが、めでたく400年間の曜日分布が求まった(毎月1~28日について)。
d = | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
8 | 9 | 10 | 11 | 12 | 13 | 14 | |
15 | 16 | 17 | 18 | 19 | 20 | 21 | |
22 | 23 | 24 | 25 | 26 | 27 | 28 | |
688回 | 日 | 月 | 火 | 水 | 木 | 金 | 土 |
687回 | 火・金 | 水・土 | 日・木 | 月・金 | 火・土 | 日・水 | 月・木 |
685回 | 水・木 | 木・金 | 金・土 | 日・土 | 日・月 | 月・火 | 火・水 |
684回 | 月・土 | 日・火 | 月・水 | 火・木 | 水・金 | 木・土 | 日・金 |
この統計には、ある種の対称性が隠れている…。例えば13日の金曜日は688回だが、その1個前・1個後の曜日(木曜・土曜)の回数はいずれも684で等しく、2個前・2個後の曜日はいずれも687回で等しく、3個前・3個後の曜日はいずれも685回で等しい。これには何か理由がある はずだが…。
§1~§4の解法は計算が複雑で、見通しが悪い。「29日以降の曜日は どうなるのか」という点に関して応用も利かないし、隠れた対称性の意味にも迫れていない。
もう少し優雅にやってみましょう…。
「1年は3月1日に始まり、翌2月末日まで」と約束する。平年は2月28日で終わり、うるう年は2月29日で終わる。この新しい定義の下で、年初を日曜日とすると、表2に当たるものは:
月 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
日数 (A) | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 | 31 | (?) |
A÷7の余り (B) | 3 | 2 | 3 | 2 | 3 | 3 | 2 | 3 | 2 | 3 | 3 | (?) |
「1日」の曜日 (C) | 0 | 3 | 5 | 1* | 3 | 6 | 2* | 4 | 0* | 2 | 5 | 1 |
2月の日数は平年・うるう年によって異なるため「?」となっているが、この数値は計算上 必要ない。表2では、12月のデータが丸括弧内になり使われなかった。ここでも、年末の月の日数は、年内の1日の曜日とは無関係(われわれの定義では翌3月は年内ではない)。このやり方なら、平年・うるう年のどちらにも対応できる便利なデータが得られる。
C欄を見ると「4」と「6」が1回ずつ、それ以外が2回ずつ出現している。従って、12カ月(3月1日・日曜日が起点)における毎月「1日」の曜日の頻度は:
これを(「1日」についての)1年統計と呼ぶことにする。
リングシフトしながら1年統計を4個束ねれば、(「1日」についての)4年統計、つまり4年を単位とする曜日分布のデータが得られる。365 ≡ 1, 366 ≡ 2 (mod 7) なので、リングシフト量は、その年が平年なら1、うるう年なら2。実際には、必ず4年に3回以上 平年があるのだから、「初めの3年間は常に平年」と仮定できる。のみならず、4年目が うるう年か平年かを気にする必要もない。というのは、その違いは4年間の最終日に関するもので、その影響が現れるのは(29日自身のカウントを別にすれば)5年目以降に限られる。要するに「平年/うるう年両対応」の y を基にすることで、4年統計も「ウェット/ドライ両対応」になってくれる。ここでウェットとは4年単位の最終日が2月29日の場合、ドライとは4年単位の最終日が2月28日の場合。
4年単位のデータなので、quad という意味で q と呼んでおこう:
おやおや、ベクトルの成分がきれいに左右対称に並んだぞ! 狙ってやった わけではないが、これは幸先が良さそうだ。
q は最初の計算における W または D に相当するベクトルだが、そんな面倒な区別も必要なくなった。
入力が y とは限らない一般の場合に備えて、y から q を得る処理を関数 f として抽象化しておこう。以降、抽象的な処理を表す場合、入力を任意の7次元ベクトル X = (α0, α1, …, α6)、出力を Y = (β0, β1, …, β6) で表すことにする。
となって、出力 Y の各成分は次の関係を満たす。
ただし、添え字 i が0未満になったとき(あるいは7以上になったとき)には、適宜そこに7を加減して、i が常に0~6の範囲であるかのように扱う。この点は、以降の議論でも同様。
入力の各成分について、自分自身から3個左の成分までの4成分を足し合わせたものが、対応する出力の成分となる(α0 の左の成分は α6)。例えば q の右端の成分は、y の右側4個の成分を足し合わせたものに等しい。
ここで考えているベクトルにおいては、「右端のさらに右は左端」「左端のさらに左は右端」と理解される。イメージとしては、円周を7等分した点(=1日が7時間の星のアナログ時計の数字の位置)に成分があって、円周上で左右を考えている。この表記法を使ってリングシフト σ をあらためて定義すると:
「平年・平年・平年・うるう年」という4年間が経過した瞬間において、曜日の前進量は 365 × 3 + 366 ≡ −2 (mod 7)。従って、それが7回連続した28ユリウス年における曜日分布は:
この式の右辺各項について「もともとのベクトル q のどの成分が、左端の成分になるか」を考えると、それは「円周を7等分した点について、毎回2個先の点に飛び移りながら6回ジャンプする動き」と等価であり、q の各成分がちょうど1回ずつ(どこかの項において)左端に来る(§3)。ゆえに t の左端の成分は、q の各成分の和に等しい。t のそれ以外の各成分についても同様だから、28ユリウス年ごとに曜日分布は均等。
この議論が成り立つのは、曜日の種類の数(7)が素数だから。もし仮に曜日が8種類だったとすれば、2個先・2個先…とジャンプした場合、出発点の偶奇に応じて、偶数曜日・奇数曜日ばかりが繰り返し選択されてしまうだろう。
28ユリウス年(言い換えれば、ウェットな4年間×7回の期間)を自明28年と呼び、自明28年における曜日分布を自明統計と呼ぶことにする。一般に、4年統計から自明統計を得る操作を g とすると:
特に、q = (6, 7, 7, 8, 7, 7, 6) から得られる自明統計 t の各成分は、いずれも q の全成分の和(6 + 7 + 7 + 8 + 7 + 7 + 6 = 48)に等しい:
実際の計算では「28年間に含まれる日付には曜日が均等に配分されるのだから、28年間における各曜日の回数は、28/7 = 4 年分の日付の回数に等しい。4年間の毎月1日の数は 4 × 12 = 48」と考えた方が早い。
グレゴリオ暦では400年周期で曜日が循環するのだから、連続400年ならどの区間を考えても、曜日分布は同じ。1900年3月1日~2300年2月28日を考え、次のように6分割すると都合がいい。
3回の非自明な12年間のそれぞれを非自明12年と呼び、3回分36年をまとめて非自明36年と呼ぶことにしよう。
400年間の始点1900年3月1日は木曜。そのため、6個の期間(自明または非自明)の全てが木曜から始まる。なぜなら自明28年の日数は7の倍数であり、非自明12年の日数も7の倍数。後者については、ウェットが2回なので、365 × 12 + 2 ≡ 1 × 12 + 2 ≡ 0 (mod 7) となる。どの期間も木曜から始まる分割法なので、これをジュピター分割と名付けておく。
非自明12年のそれぞれについて: (1) 最初の4年間を取り出すと、その期間の曜日分布は、同一の4年統計 q′ = σ4(q) に従う(いずれも木曜から始まるので)。(2) 中央の4年間・末尾の4年間は q′ を順次リングシフトものであり、相対的なシフト量は、直前の4年間がウェットかドライかに応じて −2 または −3。…ゆえに、非自明36年における曜日分布 n は:
式の変形では、σ−5 = σ2 のような性質を使った。写像の和と定数倍については、普通に定義する。例えば [2(σ2 + σ−2)](q′) = 2σ2(q′) + 2σ−2(q′)。結局、n は次の関数 h によって計算される。
入力の各成分について「自分自身の3倍」「2個前・2個後ろの成分それぞれの2倍」「3個前・3個後ろの成分それぞれの1倍」を足し合わせたものが、対応する出力の成分。この h は q′ に対する計算であり、q に対する計算ではない。
n を非自明統計と呼ぶことにする。実際に計算すると:
自明期間(自明28年×13回)については、曜日は均等に分布している。従って、400年ごとの統計を c とすると:
すなわち:
表4が再び得られた。
(別解1) 1900年3月~2300年2月を200+100+100年の3期間に分割して、前半の200年間を自明28年×7 + 非自明4年に分け、後半の100年間のそれぞれを自明28年×3 + 非自明16年に分けてもいい。その場合の非自明期間は:
上記3行には σ−3 が3回、σ−3±2 が2回ずつ、σ−3±4 が1回ずつ現れ、q′ = σ−3(q) と置くことにより、直ちに h が得られる。ジュピター分割と比べた場合、最初の2個の期間の始点は同じだが、その先では、2100年と2184年の3月1日・月曜、2200年と2284年の3月1日・土曜が期間の始点となる。この分割法をルナ・サターン分割と名付けておく。この方法でも、自明期間を通算した統計は 13t に等しい。のみならず、上記9項の和である非自明統計は n に等しい。なぜなら400年間における曜日分布 c は一定で、どちらの非自明統計も、そこから 13t を引いたものだから。
(別解2) 1900~2300年という期間設定、特にジュピター分割には、天下り的な面がある。グレゴリオ暦2000~2400年(あるいは0~400年)を考え、それを100年ごとに区切って4分割するのが、区切り方としては最も自然だろう。その場合、4回ある100年間のそれぞれについて、最初の84年間は自明28年×3回であり、末尾の16年間は次の構造を持つ:
σ の指数のうち、左上の項の「3」は2084年3月1日・水曜に対応している(2000年3月1日と同じ曜日)。項が進むごとに、また行が進むごとに、指数は2ずつ減少する(365 × 4 + 1 ≡ −2, 365 × 100 + 24 ≡ −2)。整然として美しい。ただし、このままでは「自明期間」が28年×12回だけで、「非自明期間」が16年×4回ある。理論的には それでもいいが、非自明部分が増えると、実際の計算は複雑になる。実は、この64年の「非自明期間」から自明28年を1回取り出すことができ、その残りが非自明36年に当たる。すなわち、16項の和は:
1行目から2行目への変形において、7種類の項の和 σ3(q) + σ1(q) + σ−1(q) + … + σ−9(q) が自明統計 t に等しいことを使った。2行目第2項以下の和は n に等しい。
非自明36年を4年単位で並べ替えて、そこから(さらに)自明28年を取り出すことは できない。というのは、非自明36年においては曜日分布に偏りがあり、4年単位の起点3月1日として出現しない曜日がある。自明28年は「4年間×7組。組の起点は各曜日1回ずつ」なので、それを非自明36年から構成することは不可能。
「1年は3月1日に始まり、2月末日に終わる」と約束する。「平年・平年・平年・うるう年」という4年間が曜日「0」から始まるとき、最初の1年間における毎月1日の曜日分布
は、12回の「1日」の曜日を調べることにより、容易に得られる。ここで δ0, δ1, …, δ6 は、それぞれ曜日「0」~曜日「6」の回数。このとき、グレゴリオ暦400年ごとの曜日分布カウント c は、次のように表現される。
ここで t = g(q) は28年周期の自明統計、n = h(q′) はそれに当てはまらない36年間の非自明統計であり、それらの引数 q, q′ は y から容易に生成される:
f, g, h は、いずれもリングシフト σ の多項式である(σ−2 = σ5 なども多項式の成分とみなす):
ここでは h として、手計算・暗算に便利な形式が選択されている。数学的には、次のように書いた方が気持ちいい:
q′ を介在させずに、σ4 と h を一つにまとめる こともできる:
q と q′ を使い分けること(言い換えれば、h′ を σ4 と h に分解すること)は、無意味な回り道とも思える。しかし、このやり方には大きなメリットがある。というのは、h の操作は σ に関して左右対称で、入力側の
も、8 を中心に成分が左右対称。左右対称のベクトルに左右対称の操作を行えば、結果のベクトルも左右対称になる。つまり、h においては、左端の成分から中央成分までを計算すれば、全成分を計算したのと同じことになる!
h の入力は q をずらした q′ なので、その時点で対称性が破れてしまうようだが、ベクトルの左端の成分が何曜日を表していても、h の計算の仕方は変わらない。q′ を作るとき、q の成分の位置を物理的に動かさず、q と見掛けが同じ
を持ち出して、「このベクトルでは左端の成分が木曜の数、中央の成分が日曜の数を表している」と言い張っても計算に支障はなく、その場合、出力においても、左端成分が木曜の数となる。n = h(q′) を実際にその方法で計算してみよう。3倍・2倍・1倍される部分を最初に求めておくと:
従って:
(β0, β1, β2, β3, …) の形の各項の β3 が日曜日の数に当たる。省略されている右側の成分の値は計算途中では不明だが、対称性から、最終結果が (β0, β1, β2, β3, β2, β1, β0) となることが保証されている。普通に計算した場合と比べ、計算量が約半分で済んだ。
n = (61, 63, 60, 64, …) という表現から、次のことが分かる: 曜日不均等の原因となる非自明36年において、毎月1日の曜日は日曜が64回で最多、その1個前後の曜日(土曜・月曜)は60回で最少、2個前後(金曜・火曜)は63回、3個前後(木曜・水曜)は61回。…計算で楽ができた上、偏りのパターンの対称性も鮮明になった。
手計算や暗算をする場合、q′ = (6, 7, 7, 8, …) の成分の仮平均 7 を経由すると、さらに計算量を節約できる。I = (1, 1, 1, 1, 1, 1, 1) と置くと:
h(7I) = 9 × 7I = (63, 63, 63, 63, …) は簡単に確かめられるので、あとは それとの差分に当たる h(Δ) が分かればいい。これは 0, ±1 に対する和と1~3倍の計算に帰着される。もちろん最初の4成分だけ求めれば足りる:
もはや n の具体的な値も必要ない。
左端の成分が木曜日の数に当たる。結局、グレゴリオ暦の曜日の分布の偏りは、
というシンプルな式に帰着される(毎月1~28日について)。
理論的には、最初から「全てのベクトルでは、左端の成分が木曜日の数を表す」とすれば、すっきりする。q = q′ となり、回り道なしに対称性のメリットだけを享受できる。
曜日計算の基準点1900年3月1日が木曜であるという点においても、ジュピター分割の各期間の始点が全て木曜であるという点においても、「グレゴリオ暦は木曜日から始まる」という考え方は本質を突いている。面白い偶然として、Unixエポック(1970年1月1日世界時0時)も木曜日であり、Unixタイムスタンプ 0
は木曜日になる。
しかし、実際の計算上では q から q′ への変換 σ4 の手間は小さく、それを省略できても大して得にならないし、「曜日番号0が木曜日」という定義は直観に反し、むしろ心理的混乱の原因になる。のみならず、以下で見るように、「29日・30日」の計算では、左端の成分をそれぞれ金曜・土曜とすることが近道となる。「左端が木曜」が最善とは言い切れない。
歴史的には、グレゴリオ暦は1582年10月15日・金曜日に始まった(その前日は、ユリウス暦1582年10月4日・木曜日)。
「1~28日」の曜日分布は分かったので、「29~31日」について調べてみたい。「29日」は複雑なので「30日」から始める。
問題5 グレゴリオ暦の400年間における「月の30日」という日付の曜日分布はどうなるか。
仮に「30日」という日付が毎月あれば、「30日」の曜日分布の1年統計は、
で与えられる(左端が日曜日の数)。実際には、2月には「30日」が存在しない。仮に「2月30日」が存在していたとすれば、その曜日は2月2日と同じで、火曜(なぜなら、表5によると2月1日は月曜)。現実には それが存在しないのだから、正しい1年統計 y30 においては、火曜日の数が1少なくなる:
これを用いて4年統計・自明統計・非自明統計を計算すると:
ここで I = (1, 1, 1, 1, 1, 1, 1)。400年間における「30日」の曜日分布は:
手計算の場合、中央成分が火曜日(左端が土曜日)の数になるように q′30 を書き換えると、成分が左右対称になって次のショートカットが成り立つ。
「30日」の曜日については、火曜が深い谷で、その1個前後の曜日とは5回の頻度差が生じることが分かる。曜日分布が偏っているグレゴリオ暦の中でも、これは偏りの絶対値最大。
問題6 「31日」の曜日分布はどうなるか。
1年統計は、容易に確かめられる:
それに基づく各種統計は次の通り:
「31日」の曜日分布に対称性はないが、仮平均と差分を利用すれば、計算量を少し減らせる。
「31日」という日付は出現回数が7の倍数なので、計算上、曜日が均等に配分される可能性があるが、実際には そうなっていない。「1~31日」の曜日分布の偏りのうち「31日」のそれは相対差において最大。曜日格差が約1.0%に達する。「13日・金曜日」の多さも異常だが、「31日・水曜日」の少なさと「31日・木曜日」の多さは、偏りの度合いがさらに大きい。
問題7 「29日」の曜日分布はどうなるか。
「29日」についての4年統計 q29 は、4年単位の末尾の2月29日の有無によって異なる。まず「平年・平年・平年・平年」というドライな4年間について考えてみよう。
29 ≡ 1 (mod 7) なので、1年統計 y29 は y = (2, 2, 2, 2, 1, 2, 1) とほぼ等しいが、1年の末尾に「2月29日」は存在しない。仮に「2月29日」が存在していたとすれば、その曜日は2月1日と同じで、表5から月曜。現実には それが存在しないのだから:
4年単位の末尾の「2月29日」の存在の可能性を無視した場合(言い換えれば、2月以外の月だけを考えた場合)、4年統計は:
これは「ドライな4年統計」に当たる。実際には通常の4年はウェットで、4年単位の末尾に「2月29日」が存在する。ウェットな4年統計において、この2月29日は木曜(なぜなら「出発点3月1日・日曜」の4ユリウス年先は「3月1日・金曜」で、2月29日はその前日)。従って、2月29日だけをカウントした4年統計は:
「2月」と「2月以外」の両方を含むウェットな4年統計・自明統計は、次のようになる。
非自明統計は、大筋において:
ただし、上記において h に入力された q′29 は、ウェットな4年統計。現実において、非自明36年にはドライな4年間が3回含まれ、それらの末尾には「2月29日」が存在しない。3回の「幻の2月29日」は「2100年・2200年・2300年の2月28日の翌日」であり、現実のグレゴリオ暦では「2100年・2200年・2300年の3月1日」に当たる。この3個の日付の曜日が「2月29日の曜日」として不正にカウントされているので、それらを統計から除外する必要がある。
2000年3月1日は水曜。2100年・2200年・2300年の3月1日は、そこから曜日が順次2個ずつ後退して、それぞれ月・土・木曜(なぜなら 365 × 100 + 24 ≡ −2)。よって、正しい非自明統計は:
ゆえに、400年間における「29日」の曜日分布は:
「29日」についての統計は「1日」についての統計と似たパターン(日曜が最多、月曜・土曜が最少)を持つが、火曜も日曜と同数で、対称性はない。計算途中では q29 が対称性を持つ。月曜日の数が中央要素となるように q′29 を書き換えれば、h の計算において、いつものショートカットが成り立つ。
(別解) 読みやすさのために「2月29日」を a、「2月以外の29日」を b で表す。qa = q(2月)29 であり、qb = q(2月以外)29 である。 「2月以外の29日」についての統計 cb は、qb から機械的に計算される:
「2月29日」についての統計 ca を求め、それを cb に足せば c29 が得られる。「2月29日」についての自明統計は:
非自明統計については、ルナ・サターン分割を使って計算しよう。非自明期間は「4+16+16年」に分解される。このうち、最初の4年はドライ。2回ある16年それぞれの、末尾4年もドライ。それらは計算に関係しないので:
ゆえに:
2月29日は400年に97回しか存在せず、そのうち91回は自明。この別解では、非自明な6回を直接数えた。ジュピター分割の「非自明12年に2回ずつある2月29日」の曜日を数えることによっても na を求められるが、少し面倒くさい。
以上によって、「1~31日」の どの日付についても、統計が得られた。表4の範囲外だった部分は次の通り。
d = | 29 | 30 | 31 |
---|---|---|---|
644回 | 日・火 | ||
643回 | 金 | ||
642回 | 水・木 | ||
641回 | 月・土 | ||
631回 | 月・水 | ||
629回 | 金・土 | ||
627回 | 日・木 | ||
626回 | 火 | ||
402回 | 木 | ||
401回 | 火・土 | ||
400回 | 日 | ||
399回 | 月・金 | ||
398回 | 水 |
表4と表6では、400年分のカレンダーに含まれる14万6097個の日付について、d ごとに曜日の頻度を数えた。
§1~§4の解法はストレートで素朴だが、計算の見通しが悪かった。§5では、平年・うるう年の違いを吸収した処理 f, g, h を考えることにより、一度も2月29日の有無(平年と うるう年の違い)に煩わされることなく、400年分の曜日をカウントすることができた。「29日」についての統計(§6)に関しては手動補正が必要になったが、それは、f, g, h において「2月29日の有無」が捨象されている証しでもある。
グレゴリオ暦においては、400年を周期に曜日が循環する。ところが、この400年間においては、曜日が均等である自明28年の繰り返しの中に、3回の「非自明12年」が混入している。自明期間では28年を周期に曜日と日付の関係が一巡するが、非自明期間では、12年で短絡的に曜日がリセットされてしまう。ドライな4年間が、短絡リセットの引き金となる:
3回の「非自明12年」には、D-W-W vs. W-D-W vs. W-W-D というドライ位置の違いがあるものの、それらを重ね合わせても、曜日の不均等が打ち消し合ってなくなる わけではない。それどころか、波の干渉のように、偏りが強調されてしまう:
[ 0] [-1] [-2] [-3] [-4] [-5] [-6] * * * : (-3)(-2)(-2) * * * : (-2)(-3)(-2) * * * : (-2)(-2)(-3) 3 2 1 1 2
ここで [0]
は、非自明12年の初日の曜日であり、ジュピター分割なので、木曜に当たる。*
は、4年単位の初日の曜日を表している。つまり、非自明期間において、4年単位の初日は木曜になりやすい。この偏りは、そのままグレゴリオ暦全体の偏りとなる(自明期間には曜日の偏りは ないため)。
q = (6, 7, 7, 8, 7, 7, 6) というベクトルの成分の配置(§5)から、「4年単位の初日の曜日の、3個先の曜日」が4年統計のグラフの山となる。つまり、4年単位の初日が木曜になりやすいなら、毎月1日は日曜になりやすい。「1日」から見て −2 (mod 7) の位置にある「13日」は金曜になりやすい。
21世紀初めの現在は、自明な196年間の中央付近なので、未来を見ても過去を見ても曜日に偏りがないように感じられる。2100年前後の人たちは、日常的な問題として「何だか曜日が変だなあ」と感じるかもしれない。もちろん「人類が存続して、曜日を気にする余裕があるとすれば」の話だが…。
「非自明期間があると必ず曜日が偏る」という わけではない。「7種類の非自明期間があって、それらを合計すると不均等が相殺される」というパターンも考えられる。最終的な曜日の均等・不均等は、どこで決まるのだろうか?
1年=12カ月という前提において、年数の12倍が7で割り切れないような周期(グレゴリオ暦の場合、400年=4800カ月)で曜日が循環すれば、「毎月1日」を7種類の曜日に公平に分けることは原理的に不可能。7で割り切れない整数を12倍しても、7で割り切れるようには ならない(7は素数だから)。従って、曜日が均等であるためには、曜日循環周期の年数そのものが7の倍数であることが必要。言い換えると:
二つのケースが考えられる:
グレゴリオ暦は《ケース2》だが、そこにおける必要条件を満たしていない。
グレゴリオ暦への改暦の主目的は、「暦の上での1年」を「現実の1年」(*注2)に近づけることだった。曜日分布の偏りは、その副作用として生じた。置閏周期を選び直せば、この副作用は簡単に消滅する。手っ取り早い方法は「100で割り切れる年は平年、ただし400で割り切れる年は うるう年」という現行ルールを「100で割り切れる年は平年、ただし500で割り切れる年は うるう年」と改めること。その設定なら、Y の日数
が7で割り切れないので《ケース1》になり、曜日は均等になる。のみならず、この設定の方が暦と四季のずれが少なくなる(*注3)と見込まれる(表7)。
*注2 一般的な解釈では「現実の1年」=「回帰年(四季の循環の平均周期)」。改暦当時の認識としては、教会の行事(イースターの日付)との関連から「現実の1年」=「春分の間隔」だった可能性が高い。回帰年と春分年・春分間隔については、関連記事「「春夏秋冬」は「夏秋冬春」より長い」参照。
*注3 春分の間隔との同期に関しては、改暦時点・現時点において、グレゴリオ暦の方が優秀。
n を正の整数、置閏周期を 100n 年として、「年数が4の倍数の年は、うるう年。ただし、年数が100の倍数のときは、年数を 100n で割った余りに応じて、事前定義されたパターンに従って平年または うるう年」という暦を「グレゴリオ型」と呼ぶことにする(表7)。置閏周期を4年単位で区切ったときの「平年・平年・平年・うるう年」の回数を「ウェット」、「平年・平年・平年・平年」の回数を「ドライ」とすると「ウェット + ドライ = 周期÷4」で、「周期×365 + ウェット」が置閏周期の日数となる。
置閏周期(年) | ウェット | ドライ | 置閏周期(日) | 年の平均日数 | 誤差(分/年) |
---|---|---|---|---|---|
400 | 97 | 3 | 0 mod 7 | 365.242500 | +1.0 |
500 | 121 | 4 | 5 mod 7 | 365.242000 | +0.3 |
600 | 145 | 5 | 3 mod 7 | 365.241667 | −0.2 |
700 | 169 | 6 | 1 mod 7 | 365.241429 | −0.5 |
800 | 193 | 7 | 6 mod 7 | 365.241250 | −0.8 |
900 | 218 | 7 | 5 mod 7 | 365.242222 | +0.6 |
「置閏周期400年」が現行のグレゴリオ暦だが、その曜日的な問題点は表7から一目瞭然だろう。置閏周期の日数が7で割り切れてしまうのは、確率7分の1で発生する「不運な設定」だった。
「年」(四季の循環の平均周期)と「日」の比は、西暦2000年の時点で約 365.2422。大ざっぱに言えば、これは地球の公転周期と自転周期の比に当たる。この比は現在だんだん減少していて、仮に「1日」の長さが一定だとしても、西暦10000年には 365.2418 ~ 365.2419 になる。…実際には、地球の自転が減速しているため「1日」はだんだん長くなり、その結果「年÷日」はさらに小さくなって、西暦10000年には 365.2413 くらいになると見込まれる。地球の自転の減速は1次式のような単純なもの ではなく、まだよく分かっていない。表7の誤差の欄では、一応「年 = 365.2418日」と仮定した。暦の上で そのくらいの値になっていれば、今後1万年くらいは暦と季節が高精度で一致するだろう。その場合でも、2万年後・3万年後には暦と季節が ずれてしまう。長期にわたって季節と ずれないためにはグレゴリオ型では駄目で、「比の変化に合わせて、うるう年の頻度を調整する仕組み」が必要とされる。
実用上は表を書いて曜日を数えるのが手っ取り早いが、次のように1年統計 y を計算することもできる。3月~翌1月の各月の日数は、7を法として
というパターンを持つので、3月(または その5カ月後・10カ月後)の1日の曜日を入力とすると、翌月の(1カ月間の)1日の曜日は
で表される。同様に、3月(または その5カ月後)の1日の曜日を入力とすると、1~5カ月後の(5カ月間の)1日の曜日は
で表される。3 + 2 + 3 + 2 + 3 ≡ −1 なので、この5カ月間で曜日は1後退。ゆえに、3月1日・日曜を u = (1, 0, 0, 0, 0, 0, 0) として「1カ月 + 5カ月 + 5カ月 + 1カ月」の12カ月を考えると:
π + σ = 2σ1 + 2σ3 + σ5 + σ6 を u に適用すると (0, 2, 0, 2, 0, 1, 1)。これを v とすると:
v は、3月1日・日曜から始まる1年間における「4・5・6・7・8・2月の1日の曜日」を表している(月・水が2回ずつ、金・土が1回ずつ)。「それ以外の月の1日の曜日」は σ−1(v) に等しい。ところで、
と書くことができる。問題7によると q(2月)29 = σ4(u) なので、v は 問題7別解の na に等しい。
この記事は画像も含め、パブリックドメインです。カレンダー画像・飾りの画像は openclipart.org
より。
www.geocities.jp
のリンク切れを修正。