编辑:我制作了一个有 2 个身体的测试模型。太阳和地球或 w/e。但是我现在每次坐标之一为零时都会遇到零除法的问题。
import numpy as np
from numpy import exp, sqrt, pi, linspace
from time import clock,time
import pylab as pylab
S1 = 1E3 #Mass Star
M1 = 1 #Mass Planet
Rs = np.array([0, 0]) #position
R1 = np.array([0,200])
Vs = np.array([0,0]) #velocity
V1 = np.array([10,0])
As = np.array([0,0]) #acceleration
A1 = np.array([0,0])
dt = 0.1 #timestep
N = 1000 #steps
G = 1 #G const
for i in range(1,N):
deltaR = Rs - R1
Rsq = deltaR**2
F12 = -G*M1*S1/(Rsq)
F21 = -F12
As = F21/S1
A1 = F12/M1
Vs += As*dt
V1 += A1*dt
Rs += Vs*dt + 0.5*As*dt**2
R1 += V1*dt + 0.5*A1*dt**2
x = [ Rs[0], R1[0]]
y = [ Rs[0], R1[0]]
pylab.ion()
pylab.scatter( x, y )
pylab.axis([-200, 200, -200, 200])
pylab.plot
pylab.clf()
有小费吗?
所以我想模拟太阳系,但想从一个轨道物体开始。但是,我以前从未做过这样的事情,并且想知道这里是否有人可以给我一些提示。
显然,我们需要使用的第一件事是万有引力定律和开普勒定律。然后我想把所有东西都放入一个数组中,然后计算时间步长。但是,我不确定如何将行星/月球的位置作为时间的函数。(我可以通过万有引力定律整合加速度吗?)