Ich habe Formeln mit 1-dimensionaler Bahnbewegung (freier Fall) einschließlich quadratischem Widerstand berechnet und die folgenden Gleichungen erstellt.
Diese Bewegungsgleichungen sind für sich genommen nicht von großem Nutzen, daher möchte ich entweder eine analytische Methode / eine numerische Methode, um die zweidimensionale Projektilbewegung in einem Diagramm y gegen x darzustellen. Mir ist jedoch bewusst, dass die Bewegungsgleichungen für zweidimensionale Projektile die folgenden sind:
Daher kenne ich hier die Herangehensweise an das Problem nicht, ich bin mit numerischen Methoden zum Lösen von Gleichungen nicht sehr vertraut. Gibt es eine Möglichkeit, dies in einer Tabellenkalkulation oder in MATLAB zu tun und dabei ein hohes Maß an Genauigkeit beizubehalten (wenn möglich, mit RK4).
Hinweis: Die x-Geschwindigkeit ist auf der rechten Seite orientiert und die y-Geschwindigkeit direkt nach oben.
Bitte korrigieren Sie mich, wenn ich Fehler gemacht habe.
Sie haben im Grunde zwei ODEs zu lösen:
Eine der stabileren Routinen ist eigentlich nicht RK4, sondern eine Variation der Leapfrog-Integration namens Velocity verlet . Dies macht (1) & (2) zu einem mehrstufigen Prozess:
x,y,vx,vy
).
Wo sich Ihr Problem unterscheidet, ist das , was die Berechnung der zweiten Beschleunigung etwas schwierig macht kommt drauf an und umgekehrt. Diese Antwort bei GameDev (auf jeden Fall lesenswert für einige numerische Aspekte des Problems) legt nahe, dass Sie den folgenden Algorithmus verwenden können
Es ist nicht ganz so genau wie Runge-Kutta vierter Ordnung (wie man es von einer Methode zweiter Ordnung erwarten würde), aber es ist viel besser als Euler oder naive Geschwindigkeit Verlet ohne die Zwischengeschwindigkeitsschätzung und behält immer noch die symplektische Eigenschaft von normal Geschwindigkeits-Verlet für konservative, nicht geschwindigkeitsabhängige Kräfte.
Da dies eine Projektilbewegung ist, ist wahrscheinlich eine natürliche Wahl für Anfangsbedingungen, mit Und wie es normal ist.
QMechaniker
Bill N
velocity verlet
undverlet velocity
auf dieser Seite zu suchen. Es gibt viele Antworten, die darüber sprechen, und es ist viel einfacher zu implementieren als RK4. Wikipedia hat auch Infos dazu.