我刚开始学python,我的老师让我模拟知道发动机推力的模型火箭弹道。我怎样才能使用scipy库来获得距离?
我已经使用odeint函数获得了火箭的速度和加速度。但是,我不知道如何使用速度和时间。
我已经得到了距离火箭旅行的距离,因为速度是由odeint函数解决的。
这里是我写的,以获得速度的代码:
def getforce(t):
if 0<=t<0.15:
F = 40*t
elif 0.15<=t<0.7:
F = -9.09*t+7.36
elif 0.7<=t<1.25:
F = 1
elif 1.25<=t<1.65:
F = 7.5*t-8.375
elif 1.65<=t<1.8:
F = -26.6*t+48
else:
F = 0
return F
def getspeed(x,t):
Ft = getforce(t)
y0,y1 = x
dy0 = y1
dy1 = (Ft-0.0001277422*y1**2*np.sign(y1)-0.174)/0.0177
return dy0,dy1
t = np.linspace(0,10,100)
sol = si.odeint(getspeed,(0,0),t)
plt.plot(t,sol[:,0])
plt.show()
您可以整合与速度的距离。 v(t)= dx/dt。为了在数值上整合第一个幼稚(对于这个相对平滑的问题来说足够好),方法是从零开始,然后在每一步添加v * deltat。 – roadrunner66
谢谢你的回复。我知道我应该整合与速度的距离,但我不知道我应该如何使用速度(这是一个numpy数组)来放入另一个函数。如果可能,你可以详细说明或写下代码吗? –
没有必要,我想我已经得到了它。谢谢! –