Gelöste Aufgaben/LM01: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „0“) |
Keine Bearbeitungszusammenfassung |
||
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
0 | [[Category:Gelöste Aufgaben]] | ||
[[Category:Analytische Lösung]] | |||
[[Category:Randwertproblem]] | |||
[[Category:Potential]] | |||
[[Category:Prinzip vom Minimum der Potentiellen Energie]] | |||
[[Category:Stab]] | |||
[[Category:Lagrange-Multiplikator]] | |||
[[Category:Maxima]] | |||
[[Category:Starrer Körper]] | |||
==Aufgabenstellung== | |||
Wie [[Sources/Lexikon/Minimum Prinzipe|Minimum-Prinzipe]] "funktionieren" und wie die Mathematik dazu aussieht, untersuchen wir hier an einem klassischen Beispiel. | |||
<onlyinclude> | |||
[[Datei:LM01-01.png|alternativtext=|links|mini|250x250px|Lageplan]] | |||
Gesucht ist die Lage der Knoten von vier starren Kettengliedern (Länge ℓ, Masse m) im Erdschwerefeld. | |||
</onlyinclude> | |||
== Lösung mit Maxima == | |||
Die Aufgabe ist ein einfaches Beispiel für Lösungsansätze mit "[[:Kategorie:Lagrange-Multiplikator|Lagrange-Multiplikatoren]]". | |||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Header | |||
|text= | |||
Wir arbeiten mit dem [[Werkzeuge/Gleichgewichtsbedingungen/Arbeitsprinzipe der Analytischen Mechanik/Prinzip vom Minimum der Potentiellen Energie|Prinzip vom Minimum der Potentiellen Energie]] - also dem Potential der Gewichtskraft der Kettenglieder. Besonders charmant - im Vergleich zu Ansätzen mit dem Kräfte-Gleichgewicht ist hier das "Wegfallen" der Schnittkräfte - die brauchen wir hier nicht explizit angeben. | |||
|code= | |||
<syntaxhighlight lang="lisp" line start=1> | |||
/*******************************************************/ | |||
/* MAXIMA script */ | |||
/* version: wxMaxima 18.10.1 */ | |||
/* author: Andreas Baumgart */ | |||
/* last updated: 2019-01-31 */ | |||
/* ref: form of hanging chain */ | |||
/* description: finds the form of a hanging chain */ | |||
/* employing Lagrange Multiplyers */ | |||
/*https://de.wikipedia.org/wiki/Lagrange-Multiplikator */ | |||
/*******************************************************/ | |||
</syntaxhighlight> | |||
}} | |||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Declarations | |||
|text= | |||
[[Datei:LM01-02.png|mini|Koordinaten|alternativtext=|200x200px]]Jeder Verbindungspunkt eines Kettengliedes hat zwei Koordinaten ''U<sub>j</sub>, V<sub>j</sub>''. | |||
Die Arbeitsfunktion der Gewichtskraft ist | |||
::<math>\displaystyle A = \sum_{n=0}^N m\,g\, \frac{U_{i-1}-U_i}{2}</math>. | |||
Im Gleichgewicht hat diese Arbeitsfunktion ein Minimum, allerdings müssen dabei für die starren Kettenglieder die Bedingungen | |||
::<math>\left(U_{i} - U_{i-1}\right)^2 + \left(V_{i} - V_{i-1}\right)^2 = \ell^2</math> | |||
erfüllt sein! | |||
|code= | |||
<syntaxhighlight lang="lisp" line start=1> | |||
/* declare variational variables - see 6.3 Identifiers */ | |||
declare("Λ", alphabetic); | |||
declare("λ", alphabetic); | |||
declare("γ", alphabetic); | |||
declare("ℓ", alphabetic); | |||
/* declarations */ | |||
params: [γ = m*g*ℓ]; | |||
/* number of chain elements */ | |||
N : 4; | |||
</syntaxhighlight> | |||
}} | |||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Equilibrium Conditions | |||
|text=Die Lagrange-Funktion für die Kette lautet also | |||
::<math>\begin{array}{lll}\Lambda = &&\displaystyle \sum_{n=0}^N m\,g\, \frac{U_{i-1}-U_i}{2}\\& +&\displaystyle \sum_{n=0}^N \lambda_i\cdot \left(\left(U_{i} - U_{i-1}\right)^2 + \left(V_{i} - V_{i-1}\right)^2 - \ell^2 \right)\end{array}</math> | |||
mit den Lagrangeschen Multiplikatoren λ<sub>i</sub>. | |||
Hier ist ''N'' =4, die Randbedingungen für die Verschiebungen lauten also | |||
::<math>U_0 = 0, U_4 = 0, V_0=0 \text{ und } V_N = L</math> | |||
und wir wählen hier | |||
::<math>L = 3\,\ell</math>. | |||
Mit der Abkürzung | |||
::<math>\gamma = m\, g\, \ell</math> und <math>U_i = \ell \; \tilde{U}_i, \;\;V_i = \ell \; \tilde{V}_i, </math> | |||
ist dann | |||
::<math>\begin{array}{lll} \Lambda =&&\displaystyle \frac{\left( {\tilde{U}_3}+{\tilde{U}_2}\right) \gamma }{2}+\frac{{\tilde{U}_3} \gamma }{2}+\frac{\left( {\tilde{U}_2}+{\tilde{U}_1}\right) \gamma }{2}+\frac{{\tilde{U}_1} \gamma }{2}\\&+&\left( {{\left( 3-{\tilde{V}_3}\right) }^{2}}+{{\tilde{U}}_{3}^{2}}-1\right) \, {{\lambda }_4}\\&+&\left( {{\left( {\tilde{V}_3}-{\tilde{V}_2}\right) }^{2}}+{{\left( {\tilde{U}_3}-{\tilde{U}_2}\right) }^{2}}-1\right) \, {{\lambda }_3}\\&+&\left( {{\left( {\tilde{V}_2}-{\tilde{V}_1}\right) }^{2}}+{{\left( {\tilde{U}_2}-{\tilde{U}_1}\right) }^{2}}-1\right) \, {{\lambda }_2}\\&+&\left( {{\tilde{V}}_{1}^{2}}+{{\tilde{U}}_{1}^{2}}-1\right) \, {{\lambda }_1} \end{array}</math>. | |||
Die Gleichgewichtsbedingungen unter Nebenbedingungen lauten dann | |||
::<math>\begin{array}{ll}\displaystyle \frac{\partial \Lambda}{\partial U_i}&=0\\\displaystyle \frac{\partial \Lambda}{\partial V_i}&=0\\\displaystyle \frac{\partial \Lambda}{\partial \lambda_i}&=0\end{array}</math>. | |||
|code= | |||
<syntaxhighlight lang="lisp" line start=1> | |||
/* equilibrium condition */ | |||
LagrangeFkt : Λ = sum(γ*(U[n-1]+U[n])/2,n,1,N) | |||
+sum(λ[n]*((U[n]-U[n-1])^2+(V[n]-V[n-1])^2 - 1^2),n,1,N); | |||
/* boundary conditions */ | |||
BCs : [U[0]=0, V[0]=0, U[N]=0, V[N]=N-1]$ | |||
/* unknowns (nodal coordiantes and Lagrange-multiplyers )*/ | |||
Q : flatten(append(makelist([U[n],V[n],λ[n]],n,1,N-1),[λ[N]]))$ | |||
LagrangeFkt : expand(subst(BCs,LagrangeFkt))$ | |||
equ : makelist(diff(subst(LagrangeFkt,Λ),Q[i]),i,1,3*(N+1)-4-1)$ | |||
equ : subst([γ = 1],equ); | |||
</syntaxhighlight> | |||
}} | |||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Solving | |||
|text= | |||
Die Gleichungen, die wir nun lösen müssen sind: | |||
::<math>\begin{array}{ll} 0=&-2 {\tilde{U}_2}\, {{\lambda }_2}+2 {\tilde{U}_1}\, {{\lambda }_2}+2 {\tilde{U}_1}\, {{\lambda }_1}+1\\ 0=&-2 {\tilde{V}_2}\, {{\lambda }_2}+2 {\tilde{V}_1}\, {{\lambda }_2}+2 {\tilde{V}_1}\, {{\lambda }_1}\\ 0=&{{\tilde{V}}_{1}^{2}}+{{\tilde{U}}_{1}^{2}}-1\\ 0=&-2 {\tilde{U}_3}\, {{\lambda }_3}+2 {\tilde{U}_2}\, {{\lambda }_3}+2 {\tilde{U}_2}\, {{\lambda }_2}-2 {\tilde{U}_1}\, {{\lambda }_2}+1\\ 0=&-2 {\tilde{V}_3}\, {{\lambda }_3}+2 {\tilde{V}_2}\, {{\lambda }_3}+2 {\tilde{V}_2}\, {{\lambda }_2}-2 {\tilde{V}_1}\, {{\lambda }_2}\\ 0=&{{\tilde{V}}_{2}^{2}}-2 {\tilde{V}_1}\, {\tilde{V}_2}+{{\tilde{U}}_{2}^{2}}-2 {\tilde{U}_1}\, {\tilde{U}_2}+{{\tilde{V}}_{1}^{2}}+{{\tilde{U}}_{1}^{2}}-1\\ 0=&2 {\tilde{U}_3}\, {{\lambda }_4}+2 {\tilde{U}_3}\, {{\lambda }_3}-2 {\tilde{U}_2}\, {{\lambda }_3}+1\\ 0=&2 {\tilde{V}_3}\, {{\lambda }_4}-6 {{\lambda }_4}+2 {\tilde{V}_3}\, {{\lambda }_3}-2 {\tilde{V}_2}\, {{\lambda }_3}\\ 0=&{{\tilde{V}}_{3}^{2}}-2 {\tilde{V}_2}\, {\tilde{V}_3}+{{\tilde{U}}_{3}^{2}}-2 {\tilde{U}_2}\, {\tilde{U}_3}+{{\tilde{V}}_{2}^{2}}+{{\tilde{U}}_{2}^{2}}-1\\ 0=&{{\tilde{V}}_{3}^{2}}-6 {\tilde{V}_3}+{{\tilde{U}}_{3}^{2}}+8\end{array}</math>. | |||
Und die sind nichtlinear! Dafür brauchen wir eine Lösungsroutine - wir verwenden das Newton–Verfahren. | |||
Wir finden: | |||
::<math>\begin{array}{lll} {\tilde{U}_1}=&&0.807\\ {\tilde{V}_1}=&&0.59\\ {{\lambda }_1}=&-&0.929\\ {\tilde{U}_2}=&&1.22\\ {\tilde{V}_2}=&&1.5\\ {{\lambda }_2}=&-&0.603\\ {\tilde{U}_3}=&&0.807\\ {\tilde{V}_3}=&&2.41\\ {{\lambda }_3}=&-&0.603\\ {{\lambda }_4}=&-&0.929\end{array}</math>. | |||
{{MyTip|title=Lösungen nichtlinearer Gleichungen|text=... sind eine Wissenschaft für sich. Selbst für scheinbar triviale Probleme wie dieses laufen wir für N>4 schon in große numerische Probleme hinein. Der Trick ist häufig, als Startpunkt der Iteration Werte vorzugeben, die einigermaßen in der Nähe der erwarteten Lösung liegen. Sonst verabschiedet sich der Newton-Algorithmus oft mit einem "convergance error". | |||
Oder wir finden Lösungen, die zwar Gleichgewichtsbedingungen sind aber offensichtlich instabil sind.}} | |||
|code= | |||
<syntaxhighlight lang="lisp" line start=1> | |||
/* solve nonlinear equations */ | |||
/* make shure, the Jabian ist not zero for the choice of "start" */ | |||
/* iteration starts with ..... */ | |||
start : makelist(1+i/length(Q),i,1,length(Q))$ | |||
load ("mnewton")$ | |||
/* iteration controls */ | |||
newtonmaxiter: 300; | |||
newtonepsilon: 0.0001; | |||
/* solve */ | |||
sol: mnewton(equ,Q,start)[1]; | |||
</syntaxhighlight> | |||
}} | |||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Post-Processing | |||
|text= | |||
[[Datei:LM01-11.png|mini|Lösungskonstellation]]Hier erhalten wir jedoch eine Lösung - und so sieht sie aus; | |||
|code= | |||
<syntaxhighlight lang="lisp" line start=1> | |||
/* post-processing */ | |||
/* plot solutions */ | |||
preamble: "set yrange [] reverse"; | |||
plot2d (subst(sol,subst(BCs,[discrete, makelist(V[i],i,0,N),makelist(U[i],i,0,N)])), | |||
[gnuplot_preamble, preamble], same_xy, | |||
[style, [lines,3]], | |||
[xlabel, "y/ℓ →"], | |||
[ylabel, "x/ℓ ←"] )$ | |||
</syntaxhighlight> | |||
}} | |||
<hr /> | |||
'''Links''' | |||
*... | |||
'''Literature''' | |||
*... |
Aktuelle Version vom 1. April 2021, 07:26 Uhr
Aufgabenstellung
Wie Minimum-Prinzipe "funktionieren" und wie die Mathematik dazu aussieht, untersuchen wir hier an einem klassischen Beispiel.
Gesucht ist die Lage der Knoten von vier starren Kettengliedern (Länge ℓ, Masse m) im Erdschwerefeld.
Lösung mit Maxima
Die Aufgabe ist ein einfaches Beispiel für Lösungsansätze mit "Lagrange-Multiplikatoren".
Header
Wir arbeiten mit dem Prinzip vom Minimum der Potentiellen Energie - also dem Potential der Gewichtskraft der Kettenglieder. Besonders charmant - im Vergleich zu Ansätzen mit dem Kräfte-Gleichgewicht ist hier das "Wegfallen" der Schnittkräfte - die brauchen wir hier nicht explizit angeben.
/*******************************************************/
/* MAXIMA script */
/* version: wxMaxima 18.10.1 */
/* author: Andreas Baumgart */
/* last updated: 2019-01-31 */
/* ref: form of hanging chain */
/* description: finds the form of a hanging chain */
/* employing Lagrange Multiplyers */
/*https://de.wikipedia.org/wiki/Lagrange-Multiplikator */
/*******************************************************/
Declarations
Jeder Verbindungspunkt eines Kettengliedes hat zwei Koordinaten Uj, Vj.
Die Arbeitsfunktion der Gewichtskraft ist
- .
Im Gleichgewicht hat diese Arbeitsfunktion ein Minimum, allerdings müssen dabei für die starren Kettenglieder die Bedingungen
erfüllt sein!
/* declare variational variables - see 6.3 Identifiers */
declare("Λ", alphabetic);
declare("λ", alphabetic);
declare("γ", alphabetic);
declare("ℓ", alphabetic);
/* declarations */
params: [γ = m*g*ℓ];
/* number of chain elements */
N : 4;
Equilibrium Conditions
Die Lagrange-Funktion für die Kette lautet also
mit den Lagrangeschen Multiplikatoren λi.
Hier ist N =4, die Randbedingungen für die Verschiebungen lauten also
und wir wählen hier
- .
Mit der Abkürzung
- und
ist dann
- .
Die Gleichgewichtsbedingungen unter Nebenbedingungen lauten dann
- .
/* equilibrium condition */
LagrangeFkt : Λ = sum(γ*(U[n-1]+U[n])/2,n,1,N)
+sum(λ[n]*((U[n]-U[n-1])^2+(V[n]-V[n-1])^2 - 1^2),n,1,N);
/* boundary conditions */
BCs : [U[0]=0, V[0]=0, U[N]=0, V[N]=N-1]$
/* unknowns (nodal coordiantes and Lagrange-multiplyers )*/
Q : flatten(append(makelist([U[n],V[n],λ[n]],n,1,N-1),[λ[N]]))$
LagrangeFkt : expand(subst(BCs,LagrangeFkt))$
equ : makelist(diff(subst(LagrangeFkt,Λ),Q[i]),i,1,3*(N+1)-4-1)$
equ : subst([γ = 1],equ);
Solving
Die Gleichungen, die wir nun lösen müssen sind:
- .
Und die sind nichtlinear! Dafür brauchen wir eine Lösungsroutine - wir verwenden das Newton–Verfahren.
Wir finden:
- .
✔ Lösungen nichtlinearer Gleichungen: |
... sind eine Wissenschaft für sich. Selbst für scheinbar triviale Probleme wie dieses laufen wir für N>4 schon in große numerische Probleme hinein. Der Trick ist häufig, als Startpunkt der Iteration Werte vorzugeben, die einigermaßen in der Nähe der erwarteten Lösung liegen. Sonst verabschiedet sich der Newton-Algorithmus oft mit einem "convergance error". Oder wir finden Lösungen, die zwar Gleichgewichtsbedingungen sind aber offensichtlich instabil sind. |
/* solve nonlinear equations */
/* make shure, the Jabian ist not zero for the choice of "start" */
/* iteration starts with ..... */
start : makelist(1+i/length(Q),i,1,length(Q))$
load ("mnewton")$
/* iteration controls */
newtonmaxiter: 300;
newtonepsilon: 0.0001;
/* solve */
sol: mnewton(equ,Q,start)[1];
Post-Processing
Hier erhalten wir jedoch eine Lösung - und so sieht sie aus;
/* post-processing */
/* plot solutions */
preamble: "set yrange [] reverse";
plot2d (subst(sol,subst(BCs,[discrete, makelist(V[i],i,0,N),makelist(U[i],i,0,N)])),
[gnuplot_preamble, preamble], same_xy,
[style, [lines,3]],
[xlabel, "y/ℓ →"],
[ylabel, "x/ℓ ←"] )$
Links
- ...
Literature
- ...