Gelöste Aufgaben/Kerb: Unterschied zwischen den Versionen

Aus numpedia
Zur Navigation springen Zur Suche springen
Zeile 110: Zeile 110:
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
XX
/******************************************/
/* define ODE in dim'less coordinates    */
/******************************************/
/* principle of virtual work              */
PvV:  δW = - m*'diff(u[x],t,2)*δu[x] - m*'diff(u[y],t,2)*δu[y]  - m*g*(R/r(t))^2*δr;
PvV: subst(kinem, PvV);
PvV: trigsimp(expand(ev(PvV,nouns)));
/* equations of motion */
eom: makelist(ev(coeff(expand(subst(PvV,δW)), [δr, δφ][i]),nouns),i,1,2);
/* transformation to dimensionless coordinates */
trafo: [diff(  r(t),t,2) = R*'diff(Rho,tau)/T^2, diff(  r(t),t) = R*Rho/T,
        diff(phi(t),t,2) =  'diff(Phi,tau)/T^2, diff(phi(t),t) =  Phi/T,
              r(t)      = rho*R,                        phi(t) = phi    ];
eom : ratsimp(solve(subst(trafo,eom), ['diff(Rho,tau),'diff(Phi,tau)]))[1];
eom : ratsimp(subst(dimles,eom));
</syntaxhighlight>
</syntaxhighlight>
}}
}}

Version vom 25. März 2021, 09:00 Uhr


Aufgabenstellung

Ein Satellit soll eine stabile Umlaufbahn um die Erde beschrieben.

Berechnen Sie mögliche Lösungen.


Lösung mit Maxima

Bei unserer Suche geht es um kartesische- und polare-Koordinatensysteme, Gleichgewichtsbedingungen formuliert mit dem Prinzip der virtuellen Verrückungen und er Stabilität von Lösungen.


tmp

Header

Ein Satellit im Orbit ist einer Erdbeschleunigung g ausgesetzt, die nichtlinear von seinem Abstand zum Erdmittelpunkt abhängt. Dieses nichtlineare Anfangswertproblem lösen wir hier als Anfangswertproblem numerisch.


/*********************************************************/
/* MAXIMA script                                         */
/* version: wxMaxima 15.08.2                             */
/* author: Andreas Baumgart                              */
/* last updated: 2018-03-21                              */
/* ref: Kerb (TM-C, Labor 6)                             */
/* description: finds persiod solution for               */
/*              the tracectory of a satellite            */
/*********************************************************/



tmp

Declarations

Wir brauchen die Systemparameter 

SymbolBedeutung
R = 6378,137 kmErdradius am Äquator
g0 = 9.81 m/s2Erdbeschleunigung an der Erdoberfläche
T = 1 dPeriodendauer einer Erdumdrehung (d .. day)
Or = 35786 kmHöhe eines Satelliten über der Erdoberfläche in einem geostationären Orbit.

/*********************************************************/
/* declarations */
/* declare variational variables - see 6.3 Identifiers   */
declare("δW", alphabetic);
declare("δr", alphabetic);
declare("δu", alphabetic);
declare("δφ", alphabetic);

assume(R>0, g>0, rho>0, mu>0, T>0);

/* parameter */
params: [R = 6378137*m,    /* earth radius at equator */
         g = 9.81*m/s^2,   /* gravitational constant  */
         T = 24*60*60*s];  /* 24 hours                */
verify: [O=R+35786000*m];  /* geostat. orbit          */
dimles: [g=mu*R/T^2];      /* dimensionless parameter */




Kinematics

Wir führen ein kartesisches x, y, z - Koordinaten-System im Erdmittelpunkt (earth-centered inertial) ein, das nicht mit der Erde mitrotiert - wir setzen dieses als Intertialsystem an (obwohl wir wissen, dass die Erde um die Sonne rotiert und die Sonne selbst auch kein Intertialsystem in unserem Sinne ist).

Satellite in Orbit

Wir brauchen die Einheitsvektoren

entlang der x,y-Achsen, um den Ortsvektor zum Satelliten

zu erfassen.

Dafür verwenden wir

.

Die Bewegung des Satelliten können wir also auch in kartesischen Koordinarten

,

anschreiben, was hier allerdings wenig anschaulich ist! Für die Variation von ux, uy erhalten wir


/******************************************/
/*  kinematics                            */
/******************************************/
kinem : [u[x] = r(t) * cos(phi(t)), u[y] = r(t) * sin(phi(t))];
varia : [r(t) = r(t) + epsilon*δr, phi(t) = phi(t) + epsilon*δφ];
varia :  [δu[x],δu[y]] = subst([epsilon=0],diff(subst(varia,subst(kinem,[u[x],u[y]])),epsilon));
kinem : append(makelist(lhs(varia)[i] = rhs(varia)[i],i,1,2), kinem);




tmp

Equilibrium Conditions

..


/******************************************/
/* define ODE in dim'less coordinates     */
/******************************************/
/* principle of virtual work              */
PvV:  δW = - m*'diff(u[x],t,2)*δu[x] - m*'diff(u[y],t,2)*δu[y]  - m*g*(R/r(t))^2*δr;
PvV: subst(kinem, PvV);
PvV: trigsimp(expand(ev(PvV,nouns)));
/* equations of motion */
eom: makelist(ev(coeff(expand(subst(PvV,δW)), [δr, δφ][i]),nouns),i,1,2);
/* transformation to dimensionless coordinates */
trafo: [diff(  r(t),t,2) = R*'diff(Rho,tau)/T^2, diff(  r(t),t) = R*Rho/T,
        diff(phi(t),t,2) =   'diff(Phi,tau)/T^2, diff(phi(t),t) =   Phi/T,
               r(t)      = rho*R,                        phi(t) = phi    ]; 
eom : ratsimp(solve(subst(trafo,eom), ['diff(Rho,tau),'diff(Phi,tau)]))[1];
eom : ratsimp(subst(dimles,eom));




tmp

Die Bewegungsgleichungen schreiben wir mit dem Prinzip der virtuellen Verrückungen an, hier mit den Anteilen der D'Alembert'sche Trägheitskräfte und der Gewichtskraft

,

dabei ist m die Masse des Satelliten - die sich aber sofort herauskürzt.

In die Gleichgewichtsbedingung

setzen wir alle Größen ein und finden

.

Das Trennen nach den virtuellen Verrückungen liefert dann die beiden Bewegungsgleichungen

.

Für die dimensionslose Schreibweise setzen wir

an und verwenden die Abkürzungen

,

wobei das P für das große griechische ρ steht. Damit - und mit dem dimensionslosen Parameter μ statt

lesen sich die beiden Bewegungsgleichungen so:

.===Stationary Solution=== ..


XX




tmp

Solving

..


XX




tmp

Post-Processing

..


XX





Links

  • ...

Literature

  • ...


Trajectory animation
Phasen-Diagramme
Phasengeschwindigkeit
Weg-Zeit-Diagramm