我剛開始學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數組)來放入另一個函數。如果可能,你可以詳細說明或寫下代碼嗎? –
沒有必要,我想我已經得到了它。謝謝! –