近点移動は、衝突により、天体の質量が変化したために発生します。
多分、この理論は、まだ誰も考えていないはずです。
(静的エネルギー、動的エネルギー)で近点移動を考えていないからです。
とりあえず、
土星と月の2度の衝突について、プログラミングしてみた。
コメントがまだ全部に入れてないけれど、
だいたいの雰囲気は伝わるはずです。
プログラム(python)
import numpy as nm
#=============================================#
# CLASS : uniVerse
# 宇宙クラス
#=============================================#
class uNiverse:
c = 1.0792528488E+9 #光速(km/h)
U = 7.4242576375E-31 #質量・光速時基準軌道 変換定数 (km/kg)
CsS=1296000 #円周の秒数(秒)
CyT=8760 #年間時間(時間)
def Sa(self,M,m,a):
EA = self.EA(M,m)
Sa = EA/a
return Sa
def EA(self,M,m):
EA = self.Em(m) * self.ac(M,m)
return EA
def Em(self,m):
Em = m * self.c**2
return Em
def ac(self,M,m):
ac = self.U * (M + m)
return ac
def va(self,Sa,m):
va = nm.sqrt(Sa/m)
return va
#=============================================#
# CLASS : pLanet
# 惑星クラス
#=============================================#
class pLanet:
def A(self,m,v):
self.A = m * v**2
return self.A
def prt(self):
print(f”NAME ={self.name:10S}”)
print(f”mass ={self.m:.5e}”)
print(f”VELOCITY={self.v:.5e}”)
print(f”D.ENERGY={self.A:.5e}”)
#=============================================#
# CLASS : pLmove
# 惑星移動クラス
#=============================================#
class pLmove(uNiverse,pLanet):
def ax(self,Sa,EA,Ax):
self.a = EA/(Sa – Ax)
return self.a
def SRP(self,a,v):
self.SRP = 2 * nm.pi * a / v
return self.SRP
#=============================================#
# CLASS : iMpact
# 衝突クラス
#=============================================#
class iMpact(pLmove):
#
# pMove:衝突後の変化した分の質量
# <PRM> m:衝突前の天体の質量(kg)
# a:基準軌道半径(km)
# v:速度(km/h)
# margin:年間近点移動角度(秒)
# <RTN>
# SRP:公転周期(Sidereal Rotation Period)#self
# Ny:1年の公転回数 #self
# deG:1公転での近点移動角度 #self
# ΔT:1公転での近点移動時間(h) #self
# Tf:1公転での近点移動を含めた時間(h) #self
# mf:衝突後の天体質量(kg) #self
# Δm:衝突によって変化した分の質量(kg) #self+RTN
def iMpact(self,m,a,v,margin):
SRP = self.SRP(a,v)
Ny = self.Ny(SRP)
deg = self.deG(margin,Ny)
ΔT = self.ΔT(deg,SRP)
Tf = self.Tf(SRP,ΔT)
mf = self.mf(m,Tf,SRP)
Δm = self.Δm(mf,m)
return Δm,Tf
#
# Ny:1年の公転回数
# <PRM> SRP:公転周期 時間(h)
# <RTN> Ny:1年の公転回数
def Ny(self,SRP):
Ny=self.CyT / SRP
return Ny
#
# deG:1公転での近点移動角度
# <PRM> margin:近点移動年間移動角度(秒)
# <RTN> deG:1公転での近点移動角度(秒)
def deG(self,margin,Ny):
deG=margin/Ny
return deG
#
# ΔT:1公転での近点移動時間(h)
# <PRM> deG:1公転での近点移動角度(秒)
# <RTN> ΔT:1公転での近点移動時間(h)
def ΔT(self,deg,SRP):
ΔT = deg / self.CsS * SRP
return ΔT
#
# Tf:1公転での近点移動を含めた時間(h)
# <PRM> SRP:公転周期 時間(h)
# <RTN> Tf:1公転での近点移動を含めた時間(h)
def Tf(self,SRP,ΔT):
Tf = SRP+ΔT
return Tf
#
# mf:衝突後の天体質量(kg)
# <PRM> m :衝突前の天体の質量(kg)
# Tf:1公転での近点移動を含めた時間(h)
# SRP:公転周期 時間(h)
# <RTN> mf:衝突後の天体質量(kg)
def mf(self,m,Tf,SRP):
mf=m*(Tf/SRP)**2
return mf
#
# Δm:衝突によって変化した分の質量(kg)
# <PRM> m :衝突前の天体の質量(kg)
# mf:衝突後の天体質量(kg)
# <RTN> Δm:衝突によって変化した分の質量(kg)
def Δm(self,mf,m):
Δm = mf – m
return Δm
#
# iE:衝突エネルギー(je=kg*(km/h)2)
# <PRM> Sai:衝突前基準軌道の静的エネルギー(je)
# Sa :衝突後基準軌道の静的エネルギー(je)
# <RTN> iE:衝突エネルギー(je)
def iE(self,Sai,Sa):
return Sai-Sa
#
# iA:衝突位置の動的エネルギー(je=kg*(km/h)2)
# <PRM> Sai:衝突前基準軌道の静的エネルギー(je)
# iE :衝突後基準軌道の静的エネルギー(je)
# <RTN> iA:衝突エネルギー(je)
def iA(self,Sai,iE):
return Sai+iE
class SUN(pLmove):
def __init__(self):
self.name=”SUN”
self.m=1.9891e30
class EARTH(pLmove):
def __init__(self):
self.name=”EARTH”
self.m = 5.97219e24
self.a = 147077401
self.ρ = 5.51e12 #密度
self.margin = 11.45 #秒
class MOON(pLmove):
def __init__(self):
self.name=”EARTH-MOON”
self.m = 7.347673e22
self.a = 356400
self.ρ = 3.344 #密度
self.margin = 360*3600/8.85 #秒
# self.margin = 0
class SATURN(pLmove):
def __init__(self):
self.name=”SATURN”
self.m = 5.68319e26
self.a = 1349823615
self.ρ = 0.687e12 #密度
self.margin = 162.9 #秒
#
# FUNCTION
#
def prBase():
print(f”<===== {pln.name:10s} IMFORMATION =====>”)
print(” “)
print(f”Mass ={pln.m:.5e}kg”)
print(f”a ={pln.a:.5e}km”)
print(f”ρ ={pln.ρ:.5e}kg/km3″)
print(f”margin ={pln.margin:.5e}秒”)
print(” “)
return
def prImpact():
return
def clImpact():
m = pln.m
a = pln.a
margin = pln.margin
Sa = pln.Sa(M,m,a)
va = pln.va(Sa,m)
v = va
ai = pln.ax(Sa,pln.EA(M,m),Ai)
Sai = pln.Sa(M,m,ai)
vi = pln.va(Sai,m)
SRP = pln.SRP(ai,vi)
(Δm,Tf) = imp.iMpact(m,ai,vi,margin)
iE = imp.iE(Sa,Sai)
print(“< IMPACT IMFORMATION >”)
print(” “)
print(f”Sa = {Sa:.5e}je”)
print(f”Ai = {Ai:.5e}je”)
print(f”ai = {ai:.5e}km”)
print(f”vi = {vi:.5e}km/h”)
print(f”SRP= {SRP/(365*24):.5e}year ({SRP:.5e}hour)”)
print(f”Tf = {Tf:.5e}hour”)
print(f”Δm = {Δm:.5e}kg”)
print(f”mx = {m+Δm:.5e}kg”)
print(f”iE = {iE:.5e}je”)
print(” “)
return
#
# MAIN ROUTINE
#
#
#—– SUN —–
#
sun = SUN()
M = sun.m
#
#—– SATURN —–
#
imp = iMpact()
pln = SATURN()
prBase()
Ai = 3.9018993407E+34
clImpact()
#
#—– EARTH – MOON 1 —–
#
ert = EARTH()
M = ert.m
imp = iMpact()
pln = MOON()
pln.a = 356400
prBase()
Ai = 1.2553914256E+28
clImpact()
#
#—– EARTH – MOON 2 —–
#
ert = EARTH()
M = ert.m
imp = iMpact()
pln = MOON()
pln.a = 363400
pln.margin = 0
prBase()
Ai = 5.7748974729E+28
clImpact()
【実行結果】
<===== SATURN IMFORMATION =====>
Mass =5.68319e+26kg
a =1.34982e+09km
ρ =6.87000e+11kg/km3
margin =1.62900e+02秒
< IMPACT IMFORMATION >
Sa = 7.24428e+35je
Ai = 3.90190e+34je
ai = 1.42667e+09km
vi = 3.47279e+04km/h
SRP= 2.94659e+01year (2.58121e+05hour)
Tf = 2.59077e+05hour
Δm = 4.21756e+24kg
mx = 5.72537e+26kg
iE = 3.90190e+34je
<===== EARTH-MOON IMFORMATION =====>
Mass =7.34767e+22kg
a =3.56400e+05km
ρ =3.34400e+00kg/km3
margin =1.46441e+05秒
< IMPACT IMFORMATION >
Sa = 1.07784e+30je
Ai = 1.25539e+28je
ai = 3.60600e+05km
vi = 3.80767e+03km/h
SRP= 6.79270e-02year (5.95041e+02hour)
Tf = 5.99608e+02hour
Δm = 1.13225e+21kg
mx = 7.46090e+22kg
iE = 1.25539e+28je
土星の場合
Δm = 4.21756e+24kg 質量が増えて
近点移動 1.62900e+02秒 がおこります。
月の1回目の衝突の場合
Δm = 1.13225e+21kg 質量が増えて
近点移動 1.46441e+05秒 がおこります。
が計算結果からわかります。
月の2回目の衝突の場合は、みなさんで計算してみてください。
No responses yet