Gelöste Aufgaben/LM01: Unterschied zwischen den Versionen
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: | [[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 == | ||
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- | |||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Header | {{MyCodeBlock|title=Header | ||
|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 | /*******************************************************/ | ||
/* 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> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Declarations | {{MyCodeBlock|title=Declarations | ||
|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> | ||
/* 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> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Equilibrium Conditions | {{MyCodeBlock|title=Equilibrium Conditions | ||
|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> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Solving | {{MyCodeBlock|title=Solving | ||
|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> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Post-Processing | {{MyCodeBlock|title=Post-Processing | ||
|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> | ||
/* 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> | ||
}} | }} | ||
<hr /> | |||
<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.
![](/images/thumb/e/e9/LM01-01.png/250px-LM01-01.png)
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
![](/images/thumb/4/4c/LM01-02.png/200px-LM01-02.png)
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
![](/images/thumb/4/49/LM01-11.png/300px-LM01-11.png)
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
- ...