マイコン宇宙講座-惑星の軌道要素計算
太陽系9惑星の軌道要素データをベースに指定した日付の軌道要素を求めます。今では8惑星ですが、当時は冥王星も含まれており、9惑星になっていました。2008年の国際天文学連合の総会で準惑星に格下げになり、太陽系惑星から外されてしまいました。ですが、今回は当時のままとし、9惑星の軌道要素を求めます。また、これ以降も位置計算や出没時刻計算においても冥王星を太陽系9惑星として扱って計算します。
惑星に限らず、すでに発見されている小惑星や彗星、衛星なども軌道要素を持ち、軌道要素から指定した日付の位置を計算することができます。惑星の軌道要素は離心率(e)、平均近点離角(m)、近日点引数(p)、昇交点黄経(n)、軌道傾斜角(i)、軌道長半径(a)からなります。サブルーチンで使用しているrdは惑星の半径を表しています。
サブルーチン mean_elements
※サブルーチンはlib.pyに記述してください。
# 9惑星の軌道要素
def mean_elements(pn, t1, t2):
# 水星
if pn == 1:
e = 0.20562441 + 2.042e-5 * t1 - 3e-8 * t2
m = -0.729180963 + 2608.731797 * t1 + 8.242e-8 * t2
p = 0.505094601 + 4.98049095e-3 * t1 + 1.33324e-6 * t2
n = 0.833197496 - 2.1919881e-3 * t1 - 1.57564e-6 * t2
i = 0.122238982 - 1.0510761e-4 * t1 + 1.454e-8 * t2
a = 0.3870986011
rd = 2439.0
# 金星
if pn == 2:
e = 6.79676e-3 - 4.773e-5 * t1 + 9e-8 * t2
m = -0.848503209 + 1021.306597 * t1 + 2.259232e-5 * t2
p = 0.95357925 + 4.99862298e-3 * t1 - 2.077911e-5 * t2
n = 1.330454065 - 4.85584535e-3 * t1 - 1.78896e-6 * t2
i = 0.059237299 - 1.798659e-5 * t1 - 5.6723e-7 * t2
a = 0.7233316286
rd = 6052.0
# 地球
if pn == 3:
e = 0.01673012 - 4.192e-5 * t1 - 1.3e-7 * t2
m = -0.036149841 + 628.288592 * t1 - 2.86525e-6 * t2
p = -1.262568078 + 9.7864e-3 * t1 + 2.55497e-6 * t2
n = 3.044140013 - 4.21225519e-3 * t1 + 2.0847e-7 * t2
i = 2.2713521e-4 * t1 - 2.618e-7 * t2
a = 1.00000023
rd = 695989.0
# 火星
if pn == 4:
e = 0.09335426 + 9.056e-5 * t1 - 7e-8 * t2
m = -3.326348457 + 334.0465218 * t1 + 3.08342e-6 * t2
p = 4.991059739 + 0.01288077229 * t1 + 7.98973e-6 * t2
n = 0.858200646 - 5.14920611e-3 * t1 - 1.107314e-5 * t2
i = 0.032288058 - 1.4539562e-4 * t1 - 3.9755e-7 * t2
a = 1.523688174
rd = 3397.0
# 木星
if pn == 5:
e = 0.04827062 + 4.7756e-5 * t1 + 2.2676e-5 * t2
m = 5.28677165 + 52.9684478 * t1 + 9.996858e-5 * t2
p = -1.50945736 - 1.7239975e-4 * t1 + 1.885925e-5 * t2
n = 1.741507757 + 3.204618e-5 * t1 + 9.40539e-6 * t2
i = 0.0228307 + 7.8055e-7 * t1 + 3.6991e-7 * t2
a = 5.202833481
rd = 71398.0
# 土星
if pn == 6:
e = 0.05604508 - 2.5595e-5 * t1 - 1.6172e-5 * t2
m = 1.165262433 + 21.328205912 * t1 - 5.4580324e-4 * t2
p = -0.38321152 + 4.2707237e-4 * t1 + 2.6548394e-4 * t2
n = 1.980742073 + 3.005845e-5 * t1 - 5.657776e-5 * t2
i = 0.043422822 + 8.69756e-6 * t1 + 3.56623e-6 * t2
a = 9.538762055
rd = 60000.0
# 天王星
if pn == 7:
e = 0.04613734 - 4.8118e-5 * t1 + 1.5396e-5 * t2
m = -1.273611261 + 7.479637598 * t1 + 8.2743151e-4 * t2
p = 1.716582467 - 2.37485982e-3 * t1 - 8.1424458e-4 * t2
n = 1.28641873 + 6.429559e-4 * t1 + 3.97547e-6 * t2
i = 0.013501673 - 1.72933e-5 * t1 - 8.7412e-7 * t2
a = 19.19139128
rd = 25400.0
# 海王星
if pn == 8:
e = 9.71449e-3 + 1.095407e-3 * t1 + 3.62034e-4 * t2
m = 2.724754505 + 3.994465294 * t1 + 0.048355704 * t2
p = -1.62194737 - 0.18123685121 * t1 - 0.048352097 * t2
n = 2.290559396 + 4.467073e-5 * t1 - 1.844231e-5 * t2
i = 0.03096505 - 3.001e-6 * t1 + 3.6216e-7 * t2
a = 30.06106906
rd = 24300.0
# 冥王星
if pn == 9:
e = 0.24824802 + 4.97082e-4 * t1 + 5.63208e-4 * t2
m = -0.999328454 + 2.553487672 * t1 + 6.86515565e-3 * t2
p = 1.977072713 - 0.01828324506 * t1 - 6.76126008e-3 * t2
n = 1.913508742 + 1.027805e-5 * t1 + 5.6820159e-5 * t2
i = 0.29929226 + 1.5198909e-04 * t1 + 5.269925e-5 * t2
a = 39.52940243
rd = 1500.0
return e, m, p, n, i, a, rd
メインルーチン m27.py
# m27.py
# マイコン宇宙講座
# 2-7 惑星の軌道要素計算プログラム
import math
import lib
print()
std = input('DATE AND TIME(JST) ? ')
dy, dt = std.split(',')
dy = float(dy)
dt = float(dt)
jd, yy, mm, dd, hh, ms, ss = lib.mjd(dy, dt)
t1 = jd - 33281.92334
t1 = t1 * (2.737909288e-5 + 1.260132857e-17 * t1)
t2 = t1 * t1
print()
print('DATE = %4d %2d %2d TIME = %2d h %2d m %2.1f s (JST)' % (yy, mm, dd, hh, ms, ss))
print(' MJD = %10.4f ET' % (lib.fnb(jd)))
print()
print('PLANET Mo Peri. Node Inc. e')
print(' 。 。 。 。')
for j in range(1, 10):
pn = j
e, m, p, n, i, a, rd = lib.mean_elements(pn, t1, t2)
m = 2.0 * math.pi * (m / (2.0 * math.pi) - int(m / (2.0 * math.pi)))
m *= lib.K[3]
p *= lib.K[3]
if p < 0:
p += 360.0
n *= lib.K[3]
i *= lib.K[3]
print('%-7s %10.5f %10.5f %10.5f %10.5f %10.7f' % (lib.PL[pn], m, p, n, i, e))
print()
例題 2000年1月1日9時00分00秒(JST)における各惑星の軌道要素を求めてみよう。
DATE AND TIME(JST) ? 20000101,090000 DATE = 2000 1 1 TIME = 9 h 0 m 0.0 s (JST) MJD = 51544.0000 ET PLANET Mo Peri. Node Inc. e 。 。 。 。 MERCURY 172.74700 29.08249 47.67588 7.00077 0.2056346 VENUS 49.61064 54.77897 76.09027 3.39352 0.0067729 EARTH 357.03855 287.94057 174.29571 0.00650 0.0167091 MARS 19.12497 286.33578 49.02360 1.84580 0.0933995 JUPITER 20.34265 273.50980 99.78210 1.30813 0.0483002 SATURN 317.76379 338.05963 113.48821 2.48824 0.0560282 URANUS 141.31475 98.27323 73.72484 0.77308 0.0461171 NEPTUNE 271.24237 261.18463 131.24040 1.77409 0.0103527 PLUTO 15.99293 112.65730 109.63708 17.15329 0.2486374