Gelöste Aufgaben/GYRQ: Unterschied zwischen den Versionen

Aus numpedia
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 67: Zeile 67:
::<math>\underline{\underline{D}}_{0\to K} = \underline{\underline{D}}_3(\varphi_3(t))\cdot\underline{\underline{D}}_{12}(\varphi_1(t)),\varphi_2(t))</math>.
::<math>\underline{\underline{D}}_{0\to K} = \underline{\underline{D}}_3(\varphi_3(t))\cdot\underline{\underline{D}}_{12}(\varphi_1(t)),\varphi_2(t))</math>.


Und wir führen noch Abkürzungen für die Systemparameter
Und wir führen wiederum die folgenden Abkürzungen für die Systemparameter


::<math>{I_y}=\frac{\displaystyle 3 \left( {{R}^{2}}+4 {{H}^{2}}\right)  m}{20}, {I_z}=\frac{\displaystyle 3 {{R}^{2}} m}{10}, m=\frac{\displaystyle {\pi} H {{R}^{2}} \rho }{3}</math>
::<math>{I_y}=\frac{\displaystyle 3 \left( {{R}^{2}}+4 {{H}^{2}}\right)  m}{20}, {I_z}=\frac{\displaystyle 3 {{R}^{2}} m}{10}, m=\frac{\displaystyle {\pi} H {{R}^{2}} \rho }{3}</math>
Zeile 75: Zeile 75:
ein.
ein.
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=21>
/*Declarations                                        */
/* Euler-Drehmatrizen */
/* Euler-Drehmatrizen */
D[1](φ) := matrix([1,0,0],[0,cos(φ),-sin(φ)],[0,sin(φ),cos(φ)]);
D[1](φ) := matrix([1,0,0],[0,cos(φ),sin(φ)],[0,-sin(φ),cos(φ)]);
D[2](φ) := matrix([cos(φ),0,sin(φ)],[0,1,0],[-sin(φ),0,cos(φ)]);
D[2](φ) := matrix([cos(φ),0,-sin(φ)],[0,1,0],[sin(φ),0,cos(φ)]);
D[3](φ) := matrix([cos(φ),-sin(φ),0],[sin(φ),cos(φ),0],[0,0,1]);
D[3](φ) := matrix([cos(φ),sin(φ),0],[-sin(φ),cos(φ),0],[0,0,1]);
 
/* Kugelkoordinanten */
D[12](θ,φ):= matrix([ cos(θ)*cos(φ), cos(θ)*sin(φ), -sin(θ)],
                    [      -sin(φ),        cos(φ),    0  ],
                    [ sin(θ)*cos(φ), sin(θ)*sin(φ),  cos(θ)]);


coord: [[ φ[1](t), φ[2](t), φ[3](t)],
coord: [[ φ[1](t), φ[2](t), φ[3](t)],
Zeile 129: Zeile 135:
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/* local vector to some material point with coordinates φ[i](t), i=1,2,3 */
/* trafo, order of rotations: y, x', z'' */
r[p]  : matrix([r,0,z]).D[3](α).D[3](φ[3](t)).D[12](φ[1](t),φ[2](t));
δr[p] : sum(subst([ε=0],diff(subst([coord[1][i]=coord[1][i]+ε*coord[2][i]],r[p]),ε)),i,1,3);
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/* virtual work of d'Alembert forces */  
/* virtual work of d'Alembert forces */  
Zeile 223: Zeile 235:
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/* simplify */
/* simplify */
MS: subst([cos(φ[1](t))=1, sin(φ[1](t))=0], M);
gyrs: trigsimp(subst(abbr,gyr));
gyrS: subst([ε^2=0, ε=1],expand(subst([cos(φ[1](t))=1, sin(φ[1](t))=φ[1](t), ω[1](t)=ε*ω[1](t), ω[2](t)=ε*ω[2](t)],subst(abbr,gyr))));
smalls: [ω[1](t)=ε*ω[1](t),ω[2](t)=ε*ω[2](t)];
PS: subst([cos(φ[1](t))=1, cos(φ[2](t))=1, sin(φ[1](t))=φ[1](t), sin(φ[2](t))=φ[2](t)], P);
gyrs: subst([ε^2=0,ε=1],expand(subst(smalls,gyrs)));
</syntaxhighlight>
 
G: makelist(makelist(coeff(expand(gyrs[row][1]/ω[3](t)),ω[col](t)),col,1,3),row,1,3);
G: trigsimp(funmake('matrix,G));
}}
}}
Dieses lineare System von gewöhnlichen Bewegungsgleichungen kann man dann hervorragend als Eigenwertproblem analysieren.
Dieses lineare System von gewöhnlichen Bewegungsgleichungen kann man dann hervorragend als Eigenwertproblem analysieren.

Version vom 3. April 2022, 16:17 Uhr


Aufgabenstellung

Die Bewegung eines Kreisels kann man auch anderes als in Aufgabe GYRO mit Euler-Drehwinkeln abbilden, die nicht immer leicht zu interpretieren sind. Natürlich könnten wir dafür in der Ergebnisdarstellung die Euler-Winkel z.B. in Quaternionen umrechnen. Aber hier wollen wir ausprobieren, wie die Bewegungsgleichungen selbst in anderen Koordinaten (vgl. Drehgruppe) aussehen. Und ob wir dadurch numerische Vorteile erwarten können.

Alles andere ist so wie in GYRO.


Kreisel mit gelenkiger Fußpunktlagerung.

Gesucht ist die Präzessions-Bahn eines Kreisels mit Quaternionen / Kugelkoordinanten. Unser Kreisel ist ein Kegel der Höhe H und Radius R. Die Bewegungsgleichungen sollen mit dem Prinzip der virtuellen Verrückungen aufgestellt werden. Wir suchen nach der Trajektorie des Mittelpunktes des Kreisels für große Kippwinkel.


Lösung mit Maxima und Matlab®

Wir arbeiten mit Maxima und Matlab.

Maxima brauchen wir zum Aufstellen der Bewegungsgleichungen, die zunächst mal recht komplex aussehen. Dabei nehmen wir die Bewegungsgleichungen wie sie aus den Gleichgewichtsbedingungen kommen und lösen sie als Anfangswertproblem.

Geomertrie des Kreisels
Geomertrie des Kreisels

Header

Für die Beschreibung von Drehungen werden oft Quaternionen genutzt. Dabei wird eine Drehung durch die neue Lage der x3-Achse sowie eine Drehung um diese Achse beschreiben. Für die Ermittlung von Bewegungsgleichungen - z.B. eines Kreisels - eignen sich Quaternionen aber nicht gut: für die Abbildung muss man dafür sorgen, dass die Euler-Achse ein Einheits-Vektor ist.

Euler-Kippwinkel φ1, φ2
Euler-Kippwinkel φ1, φ2

Mit einer kleinen Änderungen können wir diese Idee trotzdem weiter verfolgen. Wir nutzen Kugelkoordinaten, um ein Kippen um die Winkel φ1, φ2 zu erfassen, genau wie bei der Beschreibung von Länge- und Breitengraden auf der Erde.

Die Transformationsmatrix zu diesem Ansatz ist

D__12(φ1(t),φ2(t))=(cos(φ1(t))cos(φ2(t))cos(φ1(t))sin(φ2(t))sin(φ1(t))sin(φ2(t))cos(φ2(t))0sin(φ1(t))cos(φ2(t))sin(φ1(t))sin(φ2(t))cos(φ1(t)))

Mit einer weiteren Drehung φ3 um die Rotationsachse lösen also auch hier das Anfangswertproblem mit den nichtlinearen Bewegungsgleichungen zu den Koordinaten

φ_=(φ1(t)φ2(t)φ3(t)),

Dabei sind die Kippwinkel φ1, φ2 nicht mehr die Winkel aus den Euler'schen Drehmatrizen für sukzessive Drehungen bezüglich der x1- und x2-Achsen sind, sondern die Winkel von Kugelkoordinaten.

Wie zuvor kommen nun die Gleichgewichtsbedingungen aus dem Prinzip der virtuellen Verrückungen.




Declarations

Wir brauchen zunächst die Transformationsmatrizen aus D__12(φ1,φ2) sowie die bekannten Transformationsmatrizen der Euler-Rotation, also die Drehmatrizen, die unser inertiales Koordinatensystem in das Kreiselfeste Koordinatensystem überführt. Wir kippen also zunächst um die x1 und x'3-Achse und schließlich um die resultierende Rotationsachse x'3. Die Koordinatentransformation ist dann

D__0K=D__3(φ3(t))D__12(φ1(t)),φ2(t)).

Und wir führen wiederum die folgenden Abkürzungen für die Systemparameter

Iy=3(R2+4H2)m20,Iz=3R2m10,m=πHR2ρ3

und die Zustandsgrößen

ddtφi(t)=ωi(t)

ein.




Equations of Motion

Die Gleichgewichtsbedingungen für den starren Kreisel (die virtuelle Formänderungenergie δΠ ist Null) kommen aus

δW=i(Fiδri)ρVr¨PδrP=!0,

wobei wir nur eine Kraft F - die Gewichtskraft mg(e3) - haben und V das Kreisel-Volumen ist.

Mit dem Ortsvektor zu einem Punkt des Kreisels

rP=(r0z)D__3(α)D__0K(φ1,φ2,φ3)(e1e2e3)

können wir nun die virtuelle Gesamtarbeit des Systems ausrechnen. Die Parameter mit R und H ersetzen wir durch die oben definierten Abkürzungen und erhalten die gekoppelten Bewegungsgleichungen

(Iy000(1cos(φ1)2)Iz+cos(φ1)2Iysin(φ1)Iz0sin(φ1)IzIz)φ_¨+((ω22cos(φ1)sin(φ1)ω2ω3cos(φ1))Izω22cos(φ1)sin(φ1)Iy(ω1ω3cos(φ1)2ω1ω2cos(φ1)sin(φ1))Iz+2ω1ω2cos(φ1)sin(φ1)Iyω1ω2cos(φ1)Iz)=23Hmg(sin(φ1)cos(φ2)cos(φ1)sin(φ2)0)

Dieses System von gewöhnlichen Differentialgleichung müssen wir nach den Winkelbeschleunigungen lösen - und das geht nur, wenn die Massenmatrix regulär ist. Wir prüfen das anhand der Systemdeterminante

detM__=cos(ϕ1)2Iy2Iz

Für den Kippwinkel muss also cos(φ1)≠0 oder 0 < φ1 < 90° gelten. Das können wir für unsere Problemstellung gut einhalten.




Solving

Mit der Spaltenmatrix der Zustandsgrößen

q_(t)=(φ1(t)φ2(t)φ3(t)ω1(t)ω2(t)ω3(t))

lösen wir die gewöhnlichen Differentialgleichungen

q˙_(t)=f_(q_(t))

Dazu formulieren wir die Bewegungsgleichungen zunächst in Maxima und übertragen sie dann in ein Matlab©-Script. Die Bewegungsgleichungen machen wir mit der Zeit

T=2Hmg3Iy

dimensionslos (die Winkel selbst sind ja bereits dimensionslos). Die dimensionslose Zeit τ=t/T.




Matlab©-files

Folder Structure

Die Datei-Struktur zeit das Skript GYRQ.m. Classes und Functions sind in den jeweiligen Ordnern. Die Excel-Datei hält alle System-Parameter.

Den komplette Quellcode zu diesem Programm können Sie über dieses ZIP-File rechts herunterladen.

archive
download compressed archive →


Postprocessing

Die Ergebnisse der numerischen Integration tragen wir für die Winkel φ1(t), φ2(t) sowie für die Winkelgeschwindigkeiten ω1(t), ω2(t) auf. Es folgen noch die Trajektorie des Mittellinien-Endpunkts des Kreisels und die Phasendiagramme.

Winkel
Winkel
Winkelgeschwindigkeit
Winkelgeschwindigkeit
Trajektorie
Trajektorie
Phasendiagramme
Phasendiagramme




Nachtrag

Meist linearisiert man die Bewegungsgleichungen, indem man von kleinen Kippwinkeln ausgeht (φ1<<1, φ2<<1). Für den Kreisel gilt außerdem ω1<<ω3, ω2<<ω3 so dass man außerdem ω3 = constant setzten darf. Damit erhalten wir die "übliche" vereinfachte Bewegungsgleichung

(Iy000Iy000Iz)φ_¨+ω3(0Iz0Iz00000)φ_˙=23Hmg(100010000)φ_



Dieses lineare System von gewöhnlichen Bewegungsgleichungen kann man dann hervorragend als Eigenwertproblem analysieren.


Links

  • ...

Literature

  • ...