※このページは、JavaScript を使っています。(IE4, NN4 以上を推奨)
「力学時(Dynamical Time、TD)」というのは、天文学で使用される「天体の運動を記述するための、一様に流れる時刻系」の概念です。
天体の運動理論は、以前は絶対時空間的な「歴表時(Ephemeris
Time、ET)」というもので記述していたのですが、現在では「一般相対論」を取り入れた「力学時」というものが標準になっています。(アマチュアの天文計算では、両者は同等と見なしても差し支えないです。)
ちなみに、天文計算で使われる「力学時」には、「太陽系力学時(Barycentric
Dynamical Time、TDB)」と「地球力学時(Terrestrial
Dynamical Time、TDT)」という2つの時刻系が存在(一般相対論では、場所により時刻系が異なるため)するのですが、さほど厳密さを必要としない計算では、両者を区別する必要はありません。
ところで、なぜ天文学ではわざわざ「力学時」というものを使うのかと言いますと、要はそれ以外にも「時刻系」というものが存在するからです。
一つは、「世界時(Universal Time、UT)」。これは、地球の自転、つまり「一日の長さ」から決められるもので、我々が日常使っている時刻系に相当(本当は、もっと複雑な時刻系なんですが、専門的になりすぎるので、詳細は割愛)します。なお、現在我々が日常的に使っている時刻系は、「協定世界時(Coordinated
Universal Time、UTC)」と呼ばれているものです。
そして、もう一つは「原子時(Atomic Time、AT)」。これは、量子力学で規定される「一様な時刻系」で、現代における「時間標準」とも言えるものです。実際、「力学時」も「世界時」も、一秒の長さについては、この「原子時」をベースにして規定されており、「国際原子時(International
Atomic Time、TAI)」というのが、その標準となっています。
なお、日本の時刻系は、計量法という法律で決められているそうですので、興味のある方は、ご参照下さい。
これらの3者は、それぞれベースとなるものが違います。物理学的に言うと、「力学時」はマクロ現象である「一般相対性理論」と「天体観測」をベースとしていますし、「世界時」は「地球の自転」という観測値をベースに、そして「原子時」はミクロ現象である「量子力学」と「セシウム原子のスペクトル線」をベースにしています。「一般相対性理論」と「量子力学」との間には、まだまだ大きな理論上の隔たりがありますので、時刻系を含めて両者を統一的に記述することができない以上、理屈の上では、これらを分けて考える必要があるということですね。ただ、実際のところ、「力学時」も「原子時」も「一様に流れる時刻系」なので、アマチュアの天文計算レベルでは、両者の違いを意識する必要性は無いです。
さて、ここで問題となるのは、我々が通常使っている「世界時」が、実は「一様に流れる時間系」ではないということです。
え、そんなこと知らないって?
じゃあ、ここで問題です。
「1分は何秒でしょうか?」
「60秒」と答えた人は、不正解。
なぜなら、世界時系には、「うるう秒」というものがあり、世界時での1分の長さは、「59秒」と「60秒」と「61秒」があるんですよね。(ただし、「59秒」というのは、現在ではほとんど可能性なし。)
じゃあ、何で「うるう秒」を入れなければならないのかと言うと、これは「地球の自転が一定でない」ということに起因するものです。地球の自転速度って、摩擦の影響で、徐々に遅くなっているんですよね。(地球という独楽(コマ)の回転速度が、だんだん遅くなっているということです。)
物理現象を記述するには、「一様に流れる時刻系」というものが必要不可欠です。つまり、我々の使っている「世界時」は、物理現象を正確に記述するには、かなり不向きな時刻系と言えますね。
このため、天体計算では、基本的に「力学時」というものを使います。これは「うるう秒」などの変動要素の無い、一様に流れる時刻系ですので、世界時に「うるう秒」がある毎に、両者の間にズレが発生します。
つまり、このズレの値(ΔTと呼びます)を知っておくことで、「世界時」と「力学時」の換算が出来るということですね。(現在では、1分以上もズレてしまっています。)
ちなみに、このズレの値(ΔT)については、理科年表(発行:丸善)や天文年鑑(発行:誠文堂新光社)などに掲載されていますので、正確さを求める人は、その表を使うのがいいです。
とはいえ、「世界時」というのは、理論上の時間ではなく、「地球の自転」を観測することにより決定されるものなので、過去のズレは分かりますが、将来のズレを正確に理論計算することは困難ですし、もちろん、本にも掲載されておりません。
じゃあ、どうするかと言うと、実用上問題のない誤差で「推定」するしかないわけです。
まあ、時間が数分ぐらいズレても実用上差し支えないような計算であれば、このズレそのものを無視しても構わないわけですし、アマチュアの天体観測で必要とされる天体位置精度では、これを無視したところで大して問題にもならない場合が、ほとんどです。(時間の1分の誤差は、太陽黄経で角度の2.5秒、月黄経で角度の30秒に相当します。)
JavaScriptプログラムの主要部分は、以下の関数です。
なお、計算式は適当なものがないので、過去のΔT表を参考にして簡単に作ってみました。
通用期間は、西暦1900〜2000年で、10秒以内の精度、1990〜2000年で、2秒以内の精度です。
将来的には、要求精度にもよりますが、あと数十年ぐらいは問題ないと思われます。
この関数により、以下のように「世界時系ユリウス日、JDUT」と「力学時系ユリウス日JDTD」の換算ができます。
JDTD=JDUT+GetDeltaT(JDUT)
JDUT=JDTD-GetDeltaT(JDUT)
なお、必要な精度は、せいぜい秒の単位ぐらいなので、計算結果の表示単位は日単位だと小数点5桁ぐらい(1秒=0.000012日)で充分ですね。
ちなみに、JavaScript での実数計算は、倍精度演算が基本なので、16桁以上の精度はあります。ここで行っている計算ぐらいでは、精度上は何の問題もありません。
※参考:
1900年以前のΔTが必要な場合は、以下の本に掲載されている式が、割と正確です。
(通用期間は、西暦1800〜1975年を厳守のこと。誤差3秒以内。)
書名:こよみ便利帳
著者:暦計算研究会編
発行:恒星社厚生閣(昭和58年)
関数の機能:
ユリウス日から力学時と世界時のズレ(ΔT=TD-UT)を計算する。
関数の引数:
jd - ユリウス日 [単位:日]
関数の戻り値:
力学時と世界時のズレ(ΔT) [単位:日]
入力グローバル変数:
なし
出力グローバル変数:
なし function GetDeltaT(jd) { var t; t=(jd-2451545)/36525; t=0.0007523*(1+t); return t; }