Gelöste Aufgaben/TkPb: Unterschied zwischen den Versionen

Aus numpedia
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 22: Zeile 22:
Beide Lösungsansätz verfolgen wir parallel - bis wir zur Lösung des Gleichungssystems kommen.
Beide Lösungsansätz verfolgen wir parallel - bis wir zur Lösung des Gleichungssystems kommen.


==tmp==
<!-------------------------------------------------------------------------------->
 
Hier steht nur die Maxima-Headerdatei. Sie soll später helfen, die richtige Versionsnummer der Software zu finden und Ansprechpartner für Nachfragen zu identifizieren.<!-------------------------------------------------------------------------------->
 
{{MyCodeBlock|title=Header
{{MyCodeBlock|title=Header
|text=Text
|text=
Hier steht nur die Maxima-Headerdatei. Sie soll später helfen, die richtige Versionsnummer der Software zu finden und Ansprechpartner für Nachfragen zu identifizieren.
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/*******************************************************/
/* MAXIMA script                                      */
/* version: wxMaxima 15.08.2                          */
/* author: Andreas Baumgart                            */
/* last updated: 2016-09-18                            */
/* ref: Ma-2, Unterricht zu Linearer Algebra          */
/* description: solves the linear system of equs      */
/*              for the od forces                      */
/*******************************************************/
</syntaxhighlight>
</syntaxhighlight>
}}
}}


==tmp==
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Declarations
|text=
[[Datei:Schema-1-2-.png|rahmenlos]]


[[Datei:Schema-1-2-.png|rahmenlos]][[Datei:TkPb-11.png|mini|Knoten und Stäbe nummerieren.]]Wir nummerieren zunächst die Knoten und Stäbe, damit wir sie im weiteren Lösungsverlauf eindeutig ansprechen können.
[[Datei:TkPb-11.png|mini|Knoten und Stäbe nummerieren.]]Wir nummerieren zunächst die Knoten und Stäbe, damit wir sie im weiteren Lösungsverlauf eindeutig ansprechen können.


Und ein bischen Geometrie Geometrie müssen wir auch ansetzen, um die sin- und cos-Beziehungen von ''α'' zu bekommen:
Und ein bischen Geometrie Geometrie müssen wir auch ansetzen, um die sin- und cos-Beziehungen von ''α'' zu bekommen:
[[Datei:TkPb-12.png|mini|Geometrie-Zusammenhänge.|alternativtext=|links|287x287px]][[Datei:Schema-2-2-.png|rahmenlos]]
[[Datei:TkPb-12.png|mini|Geometrie-Zusammenhänge.|alternativtext=|links|287x287px]]


Wir setzen also
Wir setzen also


<math>\displaystyle \cos(\alpha) = \frac{1}{2}, \; \sin(\alpha) = \frac{1}{2}\sqrt{3}.</math><!-------------------------------------------------------------------------------->
::<math>\displaystyle \cos(\alpha) = \frac{1}{2}, \; \sin(\alpha) = \frac{1}{2}\sqrt{3}</math>.


 
[[Datei:Schema-2-2-.png|rahmenlos]]
{{MyCodeBlock|title=Declarations
<table class="wikitable" style="background-color:white;">
|text=Text
<tr><td>Knoten I<br/>[[Datei:TkPb-Knoten-01.png|rahmenlos|alternativtext=|100x100px]]</td>
    <td>Knoten II<br/>[[Datei:TkPb-Knoten-02.png|rahmenlos|alternativtext=|130x130px]]</td></tr>
<tr><td>Knoten III<br/>[[Datei:TkPb-Knoten-03.png|rahmenlos|alternativtext=|130x130px]]</td>
    <td>Knoten IV<br/>[[Datei:TkPb-Knoten-04.png|rahmenlos|alternativtext=|130x130px]]</td>
</tr></table>
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/* ---------------------------------------------------- */
/* geometry */
geom : [cos(alpha) = 1/2, sin(alpha) = 1/2*sqrt(3)];
</syntaxhighlight>
</syntaxhighlight>
}}
}}


==tmp==
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Equilibrium Conditions
|text=
[[Datei:Schema-3-2-.png|rahmenlos]]


[[Datei:Schema-3-2-.png|rahmenlos]]
[[Datei:TkPb-13.png|mini|Die Gleichgewichtsbedingungen ...|alternativtext=|500x500px]]Wir schreiben je Knoten die zwei Gleichgewichtsbedingungen an, die Koeffizienten schreiben wir dabei schon mal so an, wie sie hinterher in der System-Matrix auftauchen sollen:
[[Datei:TkPb-13.png|mini|Die Gleichgewichtsbedingungen ...|alternativtext=|500x500px]]Wir schreiben je Knoten die zwei Gleichgewichtsbedingungen an, die Koeffizienten schreiben wir dabei schon mal so an, wie sie hinterher in der System-Matrix auftauchen sollen:


[[Datei:TkPb-14.png|mini|... formuliert in Maxima.|alternativtext=|links|400x400px]]<!-------------------------------------------------------------------------------->
[[Datei:TkPb-14.png|mini|... formuliert in Maxima.|alternativtext=|links|400x400px]]
{{MyCodeBlock|title=Equilibrium Conditions
|text=Text
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/* ---------------------------------------------------- */
/* equilibrium conditions at nodes */
equs : [+ A[y] + S[1]*sin(alpha) = 0,
        + S[1]*cos(alpha) + S[2] = 0,
        - S[1]*sin(alpha) - S[3]*sin(alpha) - F = 0,
        - S[1]*cos(alpha) + S[3]*cos(alpha) + S[4] = 0,
        + S[3]*sin(alpha) + S[5]*sin(alpha) = 0,
        - S[2] - S[3]*cos(alpha) + S[5]*cos(alpha) = 0,
        - S[5]*sin(alpha) + B[y] = 0,
        - S[4] - S[5]*cos(alpha) + B[x] = 0];
 
/* unknowns */
x : [ A[y], S[1], S[2], S[3], S[4], S[5], B[y], B[x]];
</syntaxhighlight>
</syntaxhighlight>
}}
}}


==tmp==
<!-------------------------------------------------------------------------------->
 
{{MyCodeBlock|title=Check for Solvability
|text=
[[Datei:Schema-4-2-.png|rahmenlos]]
[[Datei:Schema-4-2-.png|rahmenlos]]
[[Datei:TkPb-15.png|mini|Haben wir genug Gleichungen für alle Unbekannten?|alternativtext=|400x400px]]Ja - so sieht es aus.<!-------------------------------------------------------------------------------->


{{MyCodeBlock|title=Check for Solvability
[[Datei:TkPb-15.png|mini|Haben wir genug Gleichungen für alle Unbekannten?|alternativtext=|400x400px]]Ja - so sieht es aus.
|text=Text
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/* assertain: number of unknowns = number of equations */
length(x)=length(equs), pred;
</syntaxhighlight>
</syntaxhighlight>
}}
}}


==tmp==
<!-------------------------------------------------------------------------------->
 
{{MyCodeBlock|title=Solving
|text=
[[Datei:Schema-5-2-.png|rahmenlos]]
[[Datei:Schema-5-2-.png|rahmenlos]]


Effiziente Löser für Systeme linearer Gleichungen implementieren gewöhnlich eine LU-Faktorisierung. Für dieses Mini-Beispiel können wir uns das anschauen:
Effiziente Löser für Systeme linearer Gleichungen implementieren gewöhnlich eine LU-Faktorisierung. Für dieses Mini-Beispiel können wir uns das anschauen:
[[Datei:TkPb-16.png|mini|LU-Faktorisierung von A|alternativtext=|808x808px]]
[[Datei:TkPb-16.png|mini|LU-Faktorisierung von A|alternativtext=|808x808px]]
Und die Lösung ist
[[Datei:TkPb-17.png|mini|Lösung aus Maxima.|alternativtext=|links|226x226px]]
|code=
<syntaxhighlight lang="lisp" line start=1>
/* ---------------------------------------------------- */
/* solve */
C : augcoefmatrix(equs,x);
A : submatrix(C,9);
b : -col(C,9);


s : linsolve_by_lu(A,b);


[ P, L, U] : get_lu_factors(lu_factor(A));


 
/* print results */
Und die Lösung ist
subst(geom,s[1]);
[[Datei:TkPb-17.png|mini|Lösung aus Maxima.|alternativtext=|links|226x226px]]<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Solving
|text=Text
|code=
<syntaxhighlight lang="lisp" line start=1>
1+1
</syntaxhighlight>
</syntaxhighlight>
}}
}}
Zeile 103: Zeile 136:
==tmp==
==tmp==


<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Post-Processing
|text=
[[Datei:Schema-6-2-.png|rahmenlos]]
[[Datei:Schema-6-2-.png|rahmenlos]]


Existieren Winkel von α, so dass keine Lösung möglich ist?
Existieren Winkel von α, so dass keine Lösung möglich ist?


<math>\text{det}(\underline{\underline{A}}) = -3\cdot \text{cos}\left( \alpha\right) \cdot {{\text{sin}\left( \alpha\right) }^{2}}</math>
::<math>\text{det}(\underline{\underline{A}}) = -3\cdot \text{cos}\left( \alpha\right) \cdot {{\text{sin}\left( \alpha\right) }^{2}}</math>


Nur für die WInkel α=0, 90° - und die sind physikalisch nicht sinnvoll.
Nur für die WInkel α=0, 90° - und die sind physikalisch nicht sinnvoll.


Also:Nein!<!-------------------------------------------------------------------------------->
Also:Nein!
 
{{MyCodeBlock|title=Post-Processing
|text=Text
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/* ---------------------------------------------------- */
D : determinant(A);
</syntaxhighlight>
</syntaxhighlight>
}}
}}
<table class="wikitable" style="background-color:white;">
<tr><td>Knoten I
[[Datei:TkPb-Knoten-01.png|rahmenlos|alternativtext=|100x100px]]
</td><td>Knoten II
[[Datei:TkPb-Knoten-02.png|rahmenlos|alternativtext=|130x130px]]
</td></tr><tr><td>Knoten III
[[Datei:TkPb-Knoten-03.png|rahmenlos|alternativtext=|130x130px]]
</td><td>Knoten IV
[[Datei:TkPb-Knoten-04.png|rahmenlos|alternativtext=|130x130px]]
</td></tr></table>


<hr/>
<hr/>

Version vom 9. April 2021, 09:24 Uhr


Aufgabenstellung

Ein Stabwerk aus 5 Stäben wird durch eine Kraft F belastet. Alle Stäbe haben die Länge a.

Hier soll eine einfache Stabwerksaufgabe gelöste werden - aber im Hintergrund geht es eigentlich darum, wie dieser Lösungsprozess in einer Software - hier Maxima - umgesetzt wird.


Lageplan

Gesucht sind die Stab- und Lagerreaktionskräfte des Systems nach dem Knotenpunktverfahren.


Lösung "per Hand" und mit Maxima

Beide Lösungsansätz verfolgen wir parallel - bis wir zur Lösung des Gleichungssystems kommen.

Header

Hier steht nur die Maxima-Headerdatei. Sie soll später helfen, die richtige Versionsnummer der Software zu finden und Ansprechpartner für Nachfragen zu identifizieren.


/*******************************************************/
/* MAXIMA script                                       */
/* version: wxMaxima 15.08.2                           */
/* author: Andreas Baumgart                            */
/* last updated: 2016-09-18                            */
/* ref: Ma-2, Unterricht zu Linearer Algebra           */
/* description: solves the linear system of equs       */
/*              for the od forces                      */
/*******************************************************/




Declarations

Knoten und Stäbe nummerieren.

Wir nummerieren zunächst die Knoten und Stäbe, damit wir sie im weiteren Lösungsverlauf eindeutig ansprechen können.

Und ein bischen Geometrie Geometrie müssen wir auch ansetzen, um die sin- und cos-Beziehungen von α zu bekommen:

Geometrie-Zusammenhänge.

Wir setzen also

.

Knoten I
Knoten II
Knoten III
Knoten IV

/* ---------------------------------------------------- */
/* geometry */
geom : [cos(alpha) = 1/2, sin(alpha) = 1/2*sqrt(3)];




Equilibrium Conditions

Die Gleichgewichtsbedingungen ...

Wir schreiben je Knoten die zwei Gleichgewichtsbedingungen an, die Koeffizienten schreiben wir dabei schon mal so an, wie sie hinterher in der System-Matrix auftauchen sollen:

... formuliert in Maxima.

/* ---------------------------------------------------- */
/* equilibrium conditions at nodes */
equs : [+ A[y] + S[1]*sin(alpha) = 0,
        + S[1]*cos(alpha) + S[2] = 0,
        - S[1]*sin(alpha) - S[3]*sin(alpha) - F = 0,
        - S[1]*cos(alpha) + S[3]*cos(alpha) + S[4] = 0, 
        + S[3]*sin(alpha) + S[5]*sin(alpha) = 0,
        - S[2] - S[3]*cos(alpha) + S[5]*cos(alpha) = 0,
        - S[5]*sin(alpha) + B[y] = 0,
        - S[4] - S[5]*cos(alpha) + B[x] = 0];

/* unknowns */
x : [ A[y], S[1], S[2], S[3], S[4], S[5], B[y], B[x]];




Check for Solvability

Haben wir genug Gleichungen für alle Unbekannten?

Ja - so sieht es aus.


/* assertain: number of unknowns = number of equations */
length(x)=length(equs), pred;




Solving

Effiziente Löser für Systeme linearer Gleichungen implementieren gewöhnlich eine LU-Faktorisierung. Für dieses Mini-Beispiel können wir uns das anschauen:

LU-Faktorisierung von A

Und die Lösung ist

Lösung aus Maxima.

/* ---------------------------------------------------- */
/* solve */
C : augcoefmatrix(equs,x);
A : submatrix(C,9);
b : -col(C,9);

s : linsolve_by_lu(A,b);

[ P, L, U] : get_lu_factors(lu_factor(A));

/* print results */
subst(geom,s[1]);




tmp

Post-Processing

Existieren Winkel von α, so dass keine Lösung möglich ist?

Nur für die WInkel α=0, 90° - und die sind physikalisch nicht sinnvoll.

Also:Nein!


/* ---------------------------------------------------- */
D : determinant(A);





Links

  • ...

Literature

  • ...