问题是必须在重力不恒定的情况下进行抛射运动。所以位置 s(t) = -0.5 g t2 + v0 t 和 g(s) = G∙ME / (RE + s)2。其中 G、ME 和 RE 都是常数。因此,新方程为 s(t) = -0.5 g(s) t2 + v0 t。
我假设每 0.005 秒的速度是恒定的,因此方程必须每 0.005 秒更新一次。所以 s(t) = s(t-Δt) + v(t)∙Δt 其中 v(t) = v(t-Δt) - g(s(t-Δt)) ∙ Δt。
我现在的代码是
# Assigning Variables
G = 6.6742*10**(-11) # Gravitational Constant
M_e = 5.9736*10**(24) # Mass of Earth
R_e = 6371000 # Radius of Earth
t = float(input('Time (in seconds)')) # Asking user to input total time, t
v_0 = float(input('initial velocity')) # Asking user to input initial velocity
t_0 = .005 # Time before first recalculation
g = 9.81 # initial gravity
# Derivative of s(t) = s't = v(t)
# v(t) = -g(s)*t+v_o
while t != t_0:
s = v_0*t_0
g = (g*M_e)/(R_e+s)**2
v = -g*s*t_0+v_0
t_0=t_0+.005
if int(t_0) == t_0:
print'Gravity is {%f}, position is {%f}, and velocity is {%f} at time {%.0f}' %(g, s, v, t_0)
print'Projectile has reached your time {%f}, with gravity {%f}, position {%f}, and velocity {%f}'%(t,g,s,v)
我真的不知道我应该如何改变它,所以它会起作用。
所以我将它更新为我得到的建议。现在,当我运行它时,我的程序会询问时间、初始速度和时间(以秒为单位)。但是,它甚至不产生输出。
时间(秒)5
初速度5
这就是我为两者输入 5 时的结果。