Ich versuche, die Rotationsbewegung eines starren Körpers (ein Satz von N Punktmassen) zu integrieren. , aber meine Ergebnisse scheinen völlig falsch zu sein. Welcher der folgenden Schritte könnte falsch sein?
1) Unter der Annahme nur eines Inertialsystems können wir schreiben:
2) Im Inertialsystem haben wir:
3) Da ich nur ein Inertialsystem angenommen habe, den Trägheitstensor ist eine Funktion der Zeit und wird bei jedem Zeitschritt aktualisiert .
Wo
Ich habe die Ableitung von berechnet sein:
Wo
4) Ich integriere die Differentialgleichung Verwenden Sie ein einfaches Runge-Kutta-4-Schema wie dieses:
Wo ist der Integrationszeitschritt und
Ich beginne die Simulation, indem ich das System mit einer Winkelgeschwindigkeit initialisiere . Danach drehe ich bei jedem Zeitschritt alles Punkte des starren Körpers um den aktuellen Vektor um einen Winkel unter Verwendung einer durch die Rodrigues-Formel berechneten Rotationsmatrix
Wo ist der Identitätsmatrix und
Nach der Rotation/Aktualisierung aller Punkte, berechne ich den Trägheitstensor neu (und somit Und ) und dann durch Gleichung Ich aktualisiere die Winkelgeschwindigkeit . Der Zyklus geht weiter von bis zu einigen mit Schritt . Das Problem ist, dass die Ergebnisse zunächst korrekt sind (Drehimpuls und Energie sind konstant), aber nach einigen Zeitwiederholungen werden die Zahlen schnell zu groß und ich werde voll von NaNs. Auch für den einfachsten Fall wäre das äußere Drehmoment geeignet , das gleiche passiert. Ich habe überprüft, ob es ein Problem mit der Determinante von gibt (und kann daher nicht invertiert werden), aber die Determinante bleibt ungleich Null. Stimmt irgendetwas mit einer der Gleichungen nicht? Muss ich während der Zeitschleife eine Art Normalisierung auf eine Größe durchführen? Es muss eine Möglichkeit geben, die Drehung des starren Körpers im Trägheitsrahmen zu simulieren. Danke schön.
Ich bin deiner Herleitung von nicht gefolgt . In den meisten Lehrbüchern wird sie wie folgt bewertet
mit der zusätzlichen Einschränkung, dass hängt von der Ausrichtung des Körpers ab. Die Orientierung kann unter Verwendung von Euler-Winkeln, Quaternionen oder nur der 3 × 3-Rotationsmatrix verfolgt werden . So oder so ist das Endergebnis, dass der Massenträgheitstensor zu jedem Zeitpunkt aus dem MMOI im Körperrahmen berechnet werden muss
Am Ende haben Sie die Bewegungsgleichungen
Es ist auch üblich, das Obige im folgenden Algorithmus in Bezug auf den Drehimpuls auszudrücken. Jedem Integrationsschritt wird die Rotationsmatrix gegeben und Impulsvektor
Hinweis : Beim Integrieren der Rotationsmatrix mit Runge-Kutta das Ergebnis von keine Rotationsmatrix mehr ist und die Genauigkeit der Lösung schnell abnimmt.
Stattdessen verwenden die Leute oft Quaternionen die die Rotation beschreiben als
Die Ableitung der Quaternion ist definiert als
Es gibt zwei Möglichkeiten, die Quaternion zu integrieren
verwenden was eine erneute Normalisierung nach jedem Teilschritt erfordert.
Gegeben Und Vektor
Wo ist der Schrittwinkel und ist die Schrittrotationsachse.
Die resultierende Quaternion stellt immer noch Rotationen dar und driftet nicht weg wie andere Formulierungen, sondern ist für niedrige Rotationswerte instabil, wie Sie an der sehen können im Nenner.
lurscher
Rishab Jain
Eli
Michael Gaitanas
Michael Gaitanas
Michael Gaitanas
Eli
lurscher
Michael Gaitanas
Eli
Rishab Jain
John Alexiou