解系统微分方程(太阳和木星轨迹)

时间:2019-12-29 10:25:18

标签: python plot differential-equations

我正在尝试求解一个微分方程组,并找到太阳和木星的轨迹。但是我没有一个好的轨迹,只有几点。 你能帮忙吗? (“ Soleil”表示Sun)

enter image description here

这是我的代码

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint   
from mc_deriv import deriv

start = 0
end   = 14*365
nbpas = end/10
t = np.linspace(start,end,nbpas)
M = M_Soleil + M_Jupiter

x0    = x_Jupiter  - x_Soleil
y0    = y_Jupiter  - y_Soleil
vx0   = vx_Jupiter - vx_Soleil
vy0   = vy_Jupiter - vy_Soleil

syst_CI = [x0,y0,vx0,vy0]               
Sols=odeint(deriv,syst_CI,t,args=(M,))  

x  = Sols[:, 0]           
y  = Sols[:, 1]
vx = Sols[:, 2]
vy = Sols[:, 3]

初始化

x_Soleil    = -7.139143380212696e-03       # (UA)
y_Soleil    = -2.792019770161695e-03       # (UA)
x_Jupiter   = +3.996321311604079e+00       # (UA)
y_Jupiter   = +2.932561211517850e+00       # (UA)

vx_Soleil   = -7.139143380212696e-03       # (UA*j^-1)
vy_Soleil   = -2.792019770161695e-03       # (UA*j^-1)
vx_Jupiter  = +3.996321311604079e+00       # (UA*j^-1)
vy_Jupiter  = +2.932561211517850e+00       # (UA*j^-1)

M_Soleil    = 2e30                         # masse Soleil  (kg)
M_Jupiter   = 1.9e27                       # masse Jupiter (kg)
r_Soleil    = 696e6                        # rayon Soleil  (m)  

还有外部功能

def deriv(syst,t,M):
    G     = 6.67e-11 
    x     = syst[0]
    y     = syst[1]
    vx    = syst[2]
    vy    = syst[3]
    dxdt  = vx
    dydt  = vy
    dvxdt = -(G*M*x)/((x**2+y**2)**(3/2))
    dvydt = -(G*M*y)/((x**2+y**2)**(3/2))
    return dxdt,dydt,dvxdt,dvydt

剧情

plt.figure(figsize=(7, 5))
plt.title("Trajectoires Soleil-Jupiter")
#plt.xlabel("UA)")
#plt.ylabel("UA)")
plt.plot(x,  y,  '-', color="red")
plt.show() 

Variables

enter image description here

情节的结果:enter image description here

尤里卡(Eureka)有效!!!!

enter image description here

0 个答案:

没有答案