Gelöste Aufgaben/TkPb: Unterschied zwischen den Versionen

Aus numpedia
Zur Navigation springen Zur Suche springen
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>
}}
}}
==tmp==


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
{{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.


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]);




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

  • ...