Ich habe gerade angefangen, Python zu lernen, und mein Lehrer bittet mich, die Flugbahn der Modellrakete zu simulieren, die den Schub des Motors kennt.Wie könnte ich scipy Bibliothek verwenden, um die Entfernung zu erhalten?
Ich habe bereits die Geschwindigkeit und die Beschleunigung der Rakete mit Odeint-Funktion. Allerdings weiß ich nicht, wie man die Geschwindigkeit und die Zeit benutzt.
Ich muss schon die Entfernung berechnen, die die Rakete zurückgelegt hat, da die Geschwindigkeit durch die Odeint-Funktion gelöst wird.
hier ist der Code, den ich schrieb, die Geschwindigkeit zu bekommen:
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()
Sie könnten einfach die Entfernung von der Geschwindigkeit integrieren. v (t) = dx/dt. Um numerisch den ersten naiven (und gut genug für dieses relativ glatte Problem) Ansatz zu integrieren, ist es, bei Null zu beginnen und dann bei jedem Schritt v * deltat hinzuzufügen. – roadrunner66
Vielen Dank für Ihre Antwort. Ich wusste, dass ich die Entfernung von der Geschwindigkeit integrieren sollte, aber ich weiß nicht, wie ich die Geschwindigkeit (die ein numpliges Array ist) verwenden sollte, um eine andere Funktion einzunehmen. Könnten Sie den Code nach Möglichkeit ausarbeiten oder aufschreiben? –
Es gibt keine Notwendigkeit, ich denke, ich habe es schon. Vielen Dank! –