趣味 |
ユリウス日(Julian Day) ユリウス日(ユリウス通日)とは紀元前4713年1月1日からの連続した通し番号の日数で す。ちなみに、2000年1月1日は、起点の日から2,451,545日目に当た ります。 通常の暦には不連続な部分があるので、ユリウス日のように連続性を保った絶対的 な日付があると便利です。
正確にいうと、ユリウス日の起算開始日は紀元前4713年1月1日からですが、起算開始の時刻は
同日の0時からでなく12時からなのです。そこで起算開始の紀元前4713年1月1日正午が
ユリウス日の0.0日になります。同日の夜の12時(24時)はユリウス日の0.5日です。翌日の正午は
ユリウス日の1.0日です。 さらに正確にいうと、使用している時刻は世界時を使っています。 日本標準時は世界時よりも9時間進んでいるので日本を基準に考えると2000年1月1日21時が ユリウス日の2,451,545日になります。 なお、ユリウス日が提案された1638年頃の正午の定義は現在の正午(世界時)の定義と違 います。
最初に気がつく暦の不連続性は紀元前の年号と紀元後の年号です。紀元前4713年は-4713年
になりません。
紀元前(BC)4713年は、西暦(整数列)換算で-4712年になります。
西暦(AD)を考えたころヨーロッパにはゼロの概念が無かったからです。
BC AD .... 4713 ..... 3 2 1 1 2 3 ....... 2000 .... .... -4712 ..... -2 -1 0 1 2 3 ....... 2000 .... そこで、上記の数列の関係 AD = 1 - BC より AD = 1 - 4713 = -4712 となるわけです。
次の不連続性は、ユリウス暦(ユリウス日とは関係ない)からグレゴリオ暦に
変更したときの後遺症です。どのように変更したかというと
1582年10月4日の翌日を5日でなく15日にしたのです。
1582年10月の日付の順番を 1, 2, 3, 4, 15, 16, 17, .....のように不連続な
ものにしたのです。ただし、曜日は連続しています。
ローマ・カトリック系のイタリア、フランス、イスパニア(スペイン)、ポルトガル、
ポーランドの国々は1582年にグレゴリオ暦を採用しました。また、その他のローマ・カトリック
系の国々も数年遅れで採用しました。 そこで、cal 9 1752 を実行すると September 1752 S M Tu W Th F S 1 2 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 のように1752年9月のカレンダーが表示されます。
同様にこのような国の暦もユリウス日に対応づければ、この不連続性は解消します。 現在ではユリウス日(Julian Day; JD)の数値が大きすぎるので、 ユリウス日から2400000日と半日(12時間)を引いた準(修整)ユリウ ス日(Modified Julian Day; MJD)をつかうことがあります。
準ユリウス日(MJD)とユリウス日(JD)の関係は次のようになります。
準ユリウス日の0.0日は、1858年11月17日0時になります。
つまり、準ユリウス日の起算開始日は1858年11月17日で、起算開始時刻はその日の
0時(世界時)です。 y は年、m は月、d は日です。 1月と2月は前の年を基準に計算するため、 m = m + 12、y = y - 1 とします。 また、int[ ]は数値の整数化でなく、 整数部を求めることを意味しています。 たとえば、int[1.3] は 1 になります。 また、int[-1.3] も -1 になります。 MJD = int[365.25 * y] + int[y / 400] - int[y / 100] + int[30.59 * (m - 2)] + d - 678912
この変換式で2000年1月1日正午の準ユリウス日を計算してみます。 MJD = int[365.25 * 1999] + int[1999 / 400] - int[1999 / 100] + int[30.59 * (13 - 2)] + 1.5 - 678912 = int[730134.75] + [4.9975] - int[19.99] + int[336.49] - 678910.5 = 730134 + 4 - 19 + 336 - 678910.5 = 51544.5
上式より、2000年1月1日正午の準ユリウス日が 51544.5日として求まりました。
ユリウス日にする場合は、2400000.5 を足せばよいので、2451545日になります。 紀元前(BC; y < 0)のとき、 MJD = int[365.25 * y] + int[30.59 * (m - 2)] + d - 678915 紀元後(AD; y = 0 および y > 0)のとき MJD = int[365.25 * y] + int[30.59 * (m - 2)] + d - 678914
こんどは、ユリウス日の開始日の紀元前4713年(-4712年)1月1日正午の
準ユリウス日を計算してみます。 y = -4712 - 1, m = 1 + 12, d = 1 + 0.5 を整理して y = -4713, m = 13, d = 1.5 を式に代入すると MJD = int[365.25 * -4713] + int[30.59 * (13 - 2)] + 1.5 - 678915 = int[-1721423.25] + int[336.49] - 678913.5 = -1721423 + 336 - 678913.5 = -2400000.5 紀元前4713年1月1日正午の準ユリウス日は-2400000.5日として求まりました。 これをユリウス日にするには2400000.5を足せばよいので、0.0日となります。 準ユリウス日の-2400000.5日とは、1858年11月17日0時からの日付を逆にたどって 240万日と12時間前の日にちになります。
世界時 世界時(Universal Time; UT)は地球の自転周期(約23時間56分4秒)をもとに計算した時刻 です。世界時は東経0度を基準にするので東経135度を基準にする日本標準時(Japanese Standard Time; JST)は9時間進んでいます。 UT = JST - 9時間 なぜなら、 360度 / 24時間 = 15度 / 1時間; 135/15 = 9なお、天体暦では水晶時計や原子時計の使用によって地球の自転速度が一定でないことが 分かってからは、地球が太陽の周りを公転する周期から計算する時刻を使うようになりました。 これは地球の自転周期よりも、地球の太陽に対する公転周期の平均値のほうが安定しているから です。この時系は暦表時(Ephemeris Time; ET)とよばれ1960年頃から使うようになりました。 なお、1984年頃から世界の天体暦は暦表時なく力学時(Dynamical Time; TD)を使う ようになってきました。 ET = UT + 儺 儺は、天体観測で求めます。現在の日常の時報は協定世界時(Coordinated Universal Time; UTC)を使っています。 これは原子時計で計る時刻です。協定世界時の1秒は原子時の1秒ですが地球自転の恒星時 から計算で決まる世界時との差が0.9秒以内におさまるように「うるう秒」をもうけています。 そこで、現在の日本標準時と協定世界時も次のような関係を持っています。 JST = UTC + 9時間クリックした所へ戻る 暦の変更
ローマ皇帝ジュリアス・シーザー(Julius Caesar; ユリウス・カエサル)の制定した
ユリウス暦は太陽年(1回帰年)を365.25日として、これに基づいて平年を365日としました。
そして毎年0.25日すなわち1/4日分たまるので、4年目に1日分増やして「うるう年」
としました。 A. 4で割り切れない年はうるう年でない。 B. 4で割り切れる年はうるう年である。 C. 100で割り切れる年はうるう年でない。 D. 400で割り切れる年はうるう年である。このA, B, C, Dの条件は、その組み合わせを誤解することがあります。 西暦2000年はCの条件から100で割り切れるのでうるう年でないようですが、 Dの条件なら400で割り切れるのでうるう年のようです。 実はD, C, B, A の順に条件を適用していくのです。割り算をして割り切れると いうことは余りがゼロだということです。これを判断条件としたプログラムで布告(2) を表現すると次のようになります。なお、プログラム言語には余りを求める演算子 として、mod とか % があります。 Lisp で表現すると次のようになります。 (cond (((zerop (mod year 400)) 'うるう年である) ((zerop (mod year 100)) 'うるう年でない) ((zerop (mod year 4)) 'うるう年である) (t 'うるう年でない))) C, Perl, Java系統の言語で表現すると次のようになります。 if ($year % 400 == 0) { print("うるう年である"); } elseif ($year % 100 == 0) { print("うるう年でない"); } elseif ($year % 4 == 0) { print("うるう年である"); } else { print("うるう年でない"); }条件Aと条件Bはユリウス暦で採用されていました。しかしながらこれでは潜在的に 日にちを増やしているので条件Cで約100年毎に1日分減らすわけです。しかしこの条件 では少し日にちを減らしすぎる傾向があるので条件Dで400年毎に1日分増やすようにし ているのです。これらの条件でおよそ三千年は有効な暦になるようです。 クリックした所へ戻る int[-1.3] も -1 プログラミングにおけるint[ ]関数をそのまま使うと、 int[-1.3]は整数化を意味するので -2 になったしまいます。(床関数) 数直線 | | |<― 1.3 (床1に整数化) | 1 ―床 | | | | 0 ―床 | | | | -1 ―床 | |<― -1.3 (床-2に整数化) | | -2 ―床 | | |そこで、MJD の変換式をプログラムするときは、int[-1.3] などを -int[1.3]のようにしてから計算する必要があります。 Common Lispなどではtruncateを使えるので最初の返り値を採用すればよいことになります。 (truncate 1.3) ==> 1 (truncate -1.3) ==> -1 クリックした所へ戻る 占星術の目次へ戻る |