Gelöste Aufgaben/LM01: Unterschied zwischen den Versionen

Aus numpedia
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 12: Zeile 12:
Wie [[Sources/Lexikon/Minimum Prinzipe|Minimum-Prinzipe]] "funktionieren" und wie die Mathematik dazu aussieht, untersuchen wir hier an einem klassischen Beispiel.
Wie [[Sources/Lexikon/Minimum Prinzipe|Minimum-Prinzipe]] "funktionieren" und wie die Mathematik dazu aussieht, untersuchen wir hier an einem klassischen Beispiel.
<onlyinclude>
<onlyinclude>
[[Datei:Screenshot 20210111-063733~2.png|100px|left|mini|Caption]]
[[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.
Gesucht ist die Lage der Knoten von vier starren Kettengliedern (Länge ℓ, Masse m) im Erdschwerefeld.
</onlyinclude>
</onlyinclude>


== Lösung mit Maxima ==
== Lösung mit Maxima ==
Lorem Ipsum ....


==tmp==
Die Aufgabe ist ein einfaches Beispiel für Lösungsansätze mit "[[:Kategorie:Lagrange-Multiplikator|Lagrange-Multiplikatoren]]".
 
Die Aufgabe ist ein einfaches Beispiel für Lösungsansätze mit "[[:Kategorie:Lagrange-Multiplikatoren|Lagrange-Multiplikatoren]]".
 
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.<!-------------------------------------------------------------------------------->


<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Header
{{MyCodeBlock|title=Header
|text=Text
|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=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+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>
</syntaxhighlight>
}}
}}
==tmp==


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Declarations
{{MyCodeBlock|title=Declarations
|text=Text
|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=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+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>
</syntaxhighlight>
}}
}}
==tmp==


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Equilibrium Conditions
{{MyCodeBlock|title=Equilibrium Conditions
|text=Text
|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=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+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>
</syntaxhighlight>
}}
}}
==tmp==


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Solving
{{MyCodeBlock|title=Solving
|text=Text
|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=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+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>
</syntaxhighlight>
}}
}}
==tmp==


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Post-Processing
{{MyCodeBlock|title=Post-Processing
 
|text=
|text=Text
[[Datei:LM01-11.png|mini|Lösungskonstellation]]Hier erhalten wir jedoch eine Lösung - und so sieht sie aus;
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+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>
</syntaxhighlight>
}}
}}


<table class="wikitable" style="background-color:white; float: left; margin-right:14px;
<hr />
">
<tr><th></th><th></th></tr>
<tr><td></td><td></td></tr>
</table>
[[Datei:LM01-02.png|mini|Koordinaten]]
[[Datei:LM01-11.png|mini|Lösungskonstellation]]
 
 
 
[[Datei:LM01-01.png|mini|Lageplan]]
 
<hr/>
'''Links'''
'''Links'''
* ...
*...


'''Literature'''
'''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.

Lageplan

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

Koordinaten

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

Lösungskonstellation

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

  • ...