Gelöste Aufgaben/ODE1
Aufgabenstellung
Hier untersuchen wir systematisch ein System aus einem starren Pendel im Erdschwerefeld.
Gesucht sind Gleichgewichtslagen, Schwingungen um diese und die numerische Lösung der nichtlinearen Bewegungsgleichung.
Lösung mit Maxima
Header
Wir nehemn an: das Massenmoment des homogenen Stabes bzgl. A ist JA, der Schwerpunkt des Stabes liegt in seiner Mitte.
/*******************************************************/
/* MAXIMA script */
/* version: wxMaxima 15.08.2 */
/* author: Andreas Baumgart */
/* last updated: */
/* ref: TM-C */
/* description: solve the IVP, check for stability */
/*******************************************************/
Declarations
Aus dem Prinzip der virtuellen Verrückungen kommt die Gleichgewichtsbeziehung für den Stab:
- ,
wobei
- .
Mit der neuen, dimensionslosen Zeit
wird aus der Bewegungsgleichung
- .
/* parameter */
params: [t[Bez]^2=J/(m*g*l/2)];
/* dimensionless equations of motion */
ode: J*'diff(phi,tau,2)/t[Bez]^2+m*g*l/2*sin(phi)=0;
ode: expand(subst(params,ode*(t[Bez]^2/J)));
Equilibrium Conditions
Die Gleichung
ist erfüllt für
Die Funktion der Rückstell'kraft' sin(φ) schneidet die y-Achse dabei mit der Steigung +1 (z.B. bei φ1 = 0, φ3 = 2π) und mit der Steigung -1 (z.B. bei φ2 = π).
Das Vorzeichen der Steigung wird über die Stabilität der Lösung entscheiden!
/* static equilibrium conditions ....*/
plot2d(lhs(subst(['diff(phi,tau,2)=0],ode)),
[phi,-0.2,2*%pi+0.2], [title, "Rückstell'kraft'"],
[y,-1.1,1.1], [xlabel, "φ→"], [ylabel, "sin(φ)→"])$
Stability of Equilibrium Positions
Die Stabilität jeder Gleichgewichtsbedingung "im Kleinen" - also in unmittelbarer Umgebung der Gleichgewichtslage - untersuchen wir am linearisierten System.
Die Taylor-Reihenentwicklung um die Gleichgewichtslagen φi herum liefert
Dies ist Ausgangspunkt für unsere Stabilitätsanalyse:
Für φ1 = 0 (= 2π ):
- ,
also eine Schwingungslösung. Diese Lösung ist also stabil.
Für φ3 = π):
Analog ist
- ,
mit einer exponential abklingenden (λ2=-1) und einer exponential aufklingenden (λ2=+1) Lösung. Dieser zweite Anteil der Lösung macht sie instabil.
/* stability in proximity of equilib. conditions */
linode : taylor (ode, phi, Phi, 1);
Solving
Das nichtlineare Anfangswertproblem lösen wir durch numerische Integration.
Dafür müssen wir die Bewegungsgleichung als gewöhnliche Differentialgleichung (ODE) erster Ordnung schreiben, also mit
als
- .
Diese Bewegungsgleichung lösen wir mit den Anfangsbedingungen
- .
und das für verschiedene Anfangsgeschwindigkeiten y1.
In der Nähe der stabilen Lösung finden wir periodische Lösungen:
Mit mehr "Anschwung" dreht die Stange "durch", die Lösung ist nicht mehr periodisch:
/* solve initial value problem */
dudt : [omega,rhs(solve(dgl,'diff(phi,tau,2))[1])];
time : [ t, 0, 10, 0.01 ];
u0: [[0,0.6],[0,1.8],[0,2.2]];
u : [phi,omega];
samples : [];
for i:1 thru length(u0) do
(set : rk (dudt, u, u0[i], time ),
set : [makelist(set[j][1],j,1,length(set)),
makelist(set[j][2],j,1,length(set)),
makelist(set[j][3],j,1,length(set))],
samples : append(samples, set),
headline : [title, simplode(["u0 = ",u0[i]])],
plot2d([[discrete,set[1],set[2]],
[discrete,set[1],set[3]]],
headline, [legend, "φ","ω"],
[xlabel, "τ→"],[ylabel, "φ,ω→"]))$
Post-Processing
Diese Ergebnisse können wir im Phasendiagramm (Geschwindigkeit über der Auslenkung) auftragen.
/* phase diagram*/
toPlot : makelist([discrete,samples[3*(i-1)+2],
samples[3*(i-1)+3]],i,1,length(u0))$
plot2d(toPlot, [x,-%pi,+%pi], [legend, false],
[title, "phase-diagram"],
[xlabel, "φ→"],[ylabel, "ω→"])$
Links
- ...
Literature
- ...