Gelöste Aufgaben/TkPb: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 100: | Zeile 100: | ||
[[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. | [[Datei:TkPb-15.png|mini|Haben wir genug Gleichungen für alle Unbekannten?|alternativtext=|400x400px|left]]Ja - so sieht es aus. | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
Zeile 133: | Zeile 133: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Post-Processing | {{MyCodeBlock|title=Post-Processing | ||
|text= | |text= |
Version vom 9. April 2021, 09:29 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.
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
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:
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
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:
/* ---------------------------------------------------- */
/* 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
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:
Und die Lösung ist
/* ---------------------------------------------------- */
/* 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]);
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
- ...