こんかいは人工衛星にまつわる
プログラミングのお話です
解説動画はこちら
問題
解説
うまく2つの数式を定義して
計算してあげると答えが出ます。
重力定数などは
scipyで定数が有るので、それを使うと便利です。
1日あたりの時間のズレ(マイクロ秒): 38.413514669274768209561443654820
まとめ
人工衛星プログラミングでは
この辺りも加味してやらないといけないですね。
プログラミングのお話です
解説動画はこちら
問題
地球から約20,200 kmの高度の中軌道(MEO: Medium Earth Orbit)を
約3.9 km/秒(時速約14,000 km)で周回するGPS衛星は
1日あたりどれくらいの時間のズレが生じているでしょうか?
解説
GPS衛星では、次の2つの要因によって時間のずれが発生します
1.特殊相対性理論(速さによる時間の遅れ)
2.一般相対性理論(重力による時間の進み方の違い)
この2つのズレを計算する事で
時間のズレを求める事ができます。
相対性理論のざっくりな解説は省きます
(それでも知りたい方は動画の方を見てくださいね)
おおよそ、2つの理論から
導き出される時間のズレを求める計算方法は
以下のようになります。
あとはこれをコードで計算してあげれば良いですね。
時間のズレを計算するコードこの2つのズレを計算する事で
時間のズレを求める事ができます。
相対性理論のざっくりな解説は省きます
(それでも知りたい方は動画の方を見てくださいね)
おおよそ、2つの理論から
導き出される時間のズレを求める計算方法は
以下のようになります。
あとはこれをコードで計算してあげれば良いですね。
うまく2つの数式を定義して
計算してあげると答えが出ます。
重力定数などは
scipyで定数が有るので、それを使うと便利です。
import math from scipy import constants # 定数の定義 G = constants.G # 重力定数 6.67430e-11 c = constants.c # 光速 (m/s) 299792458 Earth = 5.9722 * (10**24) # 地球の質量 (kg) 5.9722e24 R_earth = 6.371e6 # 地球の半径 (m) # パラメータ altitude = 20200e3 # GPS衛星の軌道高度 (約20,200 km) satellite_speed = 3900 # 衛星の速度 (m/s) # 衛星の軌道半径 r_satellite = R_earth + altitude # 一般相対性理論による時間の進みの近似計算(重力ポテンシャル差) gravitational_time_dilation = G * Earth * (1 / R_earth - 1 / r_satellite) / c**2 # 特殊相対性理論による時間の遅れの近似計算(速度) velocity_time_dilation = satellite_speed ** 2 / (2 * c**2) # 合計の時間のズレ(地上から見た衛星の時計のズレ、秒単位) total_time_dilation = gravitational_time_dilation - velocity_time_dilation total_time_dilation_per_day = total_time_dilation * 86400 # 1日あたりのズレ print("1日あたりの時間のズレ(秒):", f'{total_time_dilation_per_day:.30f}') print("1日あたりの時間のズレ(マイクロ秒):", f'{total_time_dilation_per_day*1000000:.30f}')1日あたりの時間のズレ(秒): 0.000038413514669274767825320194
1日あたりの時間のズレ(マイクロ秒): 38.413514669274768209561443654820
まとめ
GPS衛星の時計は地上の時計に対して
1日あたり約38マイクロ秒進みます。
1日あたり約38マイクロ秒進みます。
衛星の時刻が1マイクロ秒(1秒の100万分の1)ずれると
約300mの誤差が発生するらしいです・・・
人工衛星プログラミングでは
この辺りも加味してやらないといけないですね。
将来的に宇宙案件とか出てきた場合に
こういた知識が役に立つかもしれませんね
今回は人工衛星に関わる
プログラミングのお話でした。
それでは。
こういた知識が役に立つかもしれませんね
今回は人工衛星に関わる
プログラミングのお話でした。
それでは。
コメントする