我如何在Python中设置三体问题?如何定义函数来解决ODEs?
三个方程式为: x'' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * x, y'' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * y,和 z'' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * z。
写成6个一阶方程式如下:
x' = x2, y' = y2, z' = z2, x2' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * x, y2' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * y,和 z2' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * z。
我还想添加地球轨道和火星轨道的路径图,我们可以假设它们是圆形的。 地球距太阳149.6 * 10 ** 6公里,火星距离太阳227.9 * 10 ** 6公里。
三个方程式为: x'' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * x, y'' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * y,和 z'' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * z。
写成6个一阶方程式如下:
x' = x2, y' = y2, z' = z2, x2' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * x, y2' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * y,和 z2' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * z。
我还想添加地球轨道和火星轨道的路径图,我们可以假设它们是圆形的。 地球距太阳149.6 * 10 ** 6公里,火星距离太阳227.9 * 10 ** 6公里。
#!/usr/bin/env python
# This program solves the 3 Body Problem numerically and plots the trajectories
import pylab
import numpy as np
import scipy.integrate as integrate
import matplotlib.pyplot as plt
from numpy import linspace
mu = 132712000000 #gravitational parameter
r0 = [-149.6 * 10 ** 6, 0.0, 0.0]
v0 = [29.0, -5.0, 0.0]
dt = np.linspace(0.0, 86400 * 700, 5000) # time is seconds
integrate.odeint
只能接受一阶方程。 - dustinintegrate.ode
来解决高阶方程。 - askewchan-149.6 * 10 ** 6
,直接写成-149.6e6
即可 :) - astrojuanlu