グリニッジ視恒星時(GAST; Greenwich Apparent Sidereal Time)、グリニッジ平均恒星時(GMST; Greenwich Mean Sidereal Time)、分点均差(EE; Equation of Equinoxes )の計算を Ruby で実装してみました。(使用するのは IAU2006 理論 etc.)
【2016-09-06 追記】
以下で紹介の Ruby スクリプトを gem ライブラリにしました。
mk_greenwich - RubyGems.org もご参照ください。
【追記ここまで】
0. 前提条件、事前知識
- グリニッジ時刻の計算には、 IAU SOFA(International Astronomical Union, Standards of Fundamental Astronomy) の提供する C ソースコードに実装されている数々のアルゴリズムを使用する。
- IAU SOFA のソースコードには、 MHB2000(Mathews-Herring-Buffett, 2000) の理論や IERS2003(International Earth Rotation & Reference Systems service, 2003) の理論の使用が混在していることに留意。
- ここでは「グリニッジ時刻」そのものが何かについては詳細には説明しない。
- また、算出アルゴリズムについてもここでは詳細には説明しない。(と言うより、煩雑で自分には説明できない)
参考サイトやソーススクリプトを参照のこと。 - グリニッジ時刻の計算に使用する章動の計算は、過去記事「Ruby - 章動の計算(IAU2000A 理論)!」もご参照ください。(但し、IAU2000A 理論を若干補正した IAU2006 理論としている)
1. Ruby スクリプトの作成
- 以下はメインのスクリプト。
- ライブラリも多数作成しているが、紙面の都合上割愛する。 GitHub リポジトリとして公開しているので、「komasaru/greenwich_time: Greenwich Time calculator.」をご参照ください。
- あらゆるメソッドは IAU SOFA の提供する C ソースコードに実装されているアルゴリズムに則って作成している。
- 当スクリプトでは計算の途中経過も出力するようにしている。
- 元々、スニペット的に作り始めたスクリプトなので、 RSpec 等のテストは実装しておりません。
(今後別途 RubyGems ライブラリ化する予定(あらゆる準備が整ったら))
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
|
※上記のスクリプトのファイル名を calc_greenwich_time_old.rb
としているのは、後に作成した RubyGem ライブラリを使用したスクリプトを calc_greenwich_time.rb
としたため。
2. Ruby スクリプトの実行
YYYYMMDD
or YYYYMMDDHHMMSS
で地球時(TT) を指定して実行する。(引数なしでシステム時刻を地球時とみなす)
以下は、地球時 TT 2016-06-23 00:01:08 のグリニッジ恒星時を計算する例。(= 世界時 UT1 2016-06-22 23:59:59.816)
(検証に使用する国立天文台のツールでは「世界時」で計算するようになっているため、当スクリプトでは地球時で指定する場合は +ΔT 秒する必要がある。(但し、1秒未満には対応していない))
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 |
|
3. 計算結果の検証
国立天文台・暦象年表のツールで計算した値と比較してみた。
グリニッジ視恒星時・平均恒星時は時角で約1秒(1/100°未満)の誤差に、分点均差は時角で1/1000秒未満の誤差に収まることが確認できた。
4. 参考サイト
今回のグリニッジ視恒星時の計算も、天体位置やこよみを正確に計算する際に必要になってきます。
当方、今後挑戦してみようと考えております。(可能ならば)
以上。