Voraussetzungen
Matrizen-Grundlagen
dynamische Kräfte-Gleichgewichte
Lerninhalte
Lösung bekannter Modellgleichungen mithilfe von räumlicher Diskretisierung als Modellannahme
Vergleich und Bewertung iterativer Gleichungssystemlöser
Modellierung einer Highline#
Mittels einer Reihenschaltung von Federdämpfer-Systemen lässt sich ein einfaches zweidimensionales Modell einer Highline erstellen.
Modellbeschreibung#
Kräftebilanzierung#
Gehen Sie von einem “Urzustand” aus, in dem alle Massepunkte auf einer Linie liegen. Durch die Schwerkraft und das Einwirken äußerer Kräfte entstehen Verschiebungen \(\mathbf{z}_i = \begin{bmatrix} x_i(t) \\ y_i(t) \end{bmatrix}\) der Massepunkte weg von diesem Urzustand. Die Verschiebungen der Ankerpunkte seien konstant Null, \(\mathbf{z}_{0}=\mathbf{z}_{N+1}=\begin{bmatrix} 0 \\ 0 \end{bmatrix}\).
Angenommen jeder Massepunkt hat die Masse \(m\) und die Federdämpferelemente haben die Steifigkeiten \(k\) und Dämpfungskoeffizienten \(d\). Durch Freischneiden und Kraftbilanzierung lassen sich für alle Massepunkte die Bewegungsgleichungen aufstellen. Sei \(\mathbf{F}_{i,\text{ext}} \in \mathbb{R}^2\) die externe Kraft, die auf den Massepunkt mit Index \(i\) wirkt. Dann gilt
Diese Gleichungen lassen sich in eine kompaktere Matrixschreibweise bringen. Dazu fĂĽhren wir folgende Bezeichungen ein:
\(M\) ist die Massematrix, \(K = k \cdot S\) die Steifigkeitsmatrix und \(D=d \cdot S\) die Dämpfungsmatrix des gekoppelten Systems. Die oben bereits hergeleiteten Bewegungsgleichungen nehmen die bekannte Form eines gedämpften, angetriebenen harmonischen Oszillators
an, nur dass die Koeffizienten \(M, D\) und \(K\) nun matrixwertig sind und die unbekannte Verschiebungsfunktion \(\mathbf{z}(t)\) vektorwertig mit \(2N\) Einträgen ist: Ein Eintrag pro Raumrichtung und beweglichem Massepunkt der Highline.
Ein stationärer Lastfall#
Es soll zunächst der stationäre Lastfall untersucht werden, bei dem nur die Schwerkraft auf die Highline wirkt, d.h. Sie gehen von einer konstanten Kraft \(\mathbf{F}_{i,\text{ext}}=\begin{bmatrix} 0 \\ -m g \end{bmatrix}\) mit \(g=9.81\;\textrm{m}/\textrm{s}^2\) sowie \(\ddot{\mathbf{z}}=\dot{\mathbf{z}}=0\) aus. Dies entspricht dem Zustand, der sich nach langer Zeit aufgrund der Dämpfung einstellt. Die Differentialgleichung vereinfacht sich in diesem Fall zu einem linearen Gleichungssystem
Bei einer Highlinelänge von \(L=50\;\textrm{m}\), einem Gesamtgewicht von \(m_{\text{ges}}=3.15\;\textrm{kg}\), sowie einer Gesamtsteifigkeit von \(k_{\text{ges}}=145.5\;\textrm{N}/\textrm{m}\) ergeben sich für die Einzelmassen und Einzelsteifigkeiten
Mit \(\mathbf{b} = \left[ \begin{array}{ccccccc} 0 & 1 & 0 & 1 & \cdots & 0 & 1 \end{array} \right]^T \in \mathbb{R}^{2N}\) lässt sich das lineare Gleichungssystem schreiben als
Demnach lassen sich die Verschiebungen der Massepunkte im stationären Lastfall berechnen, indem das lineare Gleichungssytem
gelöst wird. Die Verschiebungen \(\mathbf{z}\) erhält man aus der entdimensionalisierten Lösung \(\tilde{\mathbf{z}}\) des Gleichunssystemes mittels
Aufgabe 1 - Durchhang der Highline ohne Zusatzgewicht#
Lösen Sie das Gleichungssystem \(S \tilde{\mathbf{z}} = \mathbf{b}\) mit \(S \in \mathbb{R}^{2N \times 2N}\) und \(\mathbf{b} \in \mathbb{R}^{2N}\) für verschiedene Werte für \(N\) mit Hilfe des Backslash-Operators S\b
und berechnen Sie anschlieĂźend die Verschiebung der Massepunkte \(\mathbf{z}\). Erzeugen Sie \(S\) dazu im Sparse-Matrix-Format, wie in der vorherigen Ăśbung beschrieben.
Hinweis
Klappen Sie die Codebox aus, um auf den Code fĂĽr plot_highline
zuzugreifen. Wenn Sie Ihren Code online ausfĂĽhren, brauchen Sie die Funktion nicht initialisieren, da sie dem Kernel als Datei hinterlegt ist.
Show code cell source
function handle = plot_highline(z, L)
% plots the highline according to the (x,y)-coordinates stored in the flat
% vector z = [x1,y1, x2, y2, x3, y3, ...] and the length L of the highline.
N = length(z)/2;
if N - floor(N) > 1e-15
error("The length of the input vector z must be divisble by 2!");
end
positions_x = z(1:2:end)' + L*linspace(1/(N+1), 1 - 1/(N+1), N);
positions_y = z(2:2:end)';
positions_x = [0 positions_x L];
positions_y = [0 positions_y 0];
handle = plot(positions_x, positions_y);
xlabel('x [m]')
ylabel('y [m]')
title('highline displacement')
end
% space for the solution
% S = ...
% b = ...
% z = ...
% plot the displacement of the slackline based on the solution vector z as well as the length of the slackline L
% (the function plot_highline is provided for you, you do not need to implement this)
plot_highline(z, L)
% uncomment the following line to have equal spacing along the x- and y-axis
%axis equal
Wie stark hängt die Highline an der tiefsten Stelle durch?
Wie hoch muss die Auflösung \(N\) Ihrer Ansicht nach mindestens sein, um dem Ergebnis vertrauen zu können? Begründen Sie Ihre Antwort mit konkreten Zahlen!
Aufgabe 2 - Vergleich iterativer Gleichungssystemlöser#
Ab einer bestimmten Größe des Gleichungssystems sind iterative Verfahren zum Lösen von linearen Gleichungssystem besser geeignet als direkte Lösungsverfahren wie das LU-Verfahren.
Prominente Vertreter iterativer Verfahren fĂĽr lineare Gleichungssysteme sind das konjugierte Gradientenverfahren (Matlab: cgs
), das Minres-Verfahren (Matlab: minres
) sowie das BiCGstab-Verfahren (Matlab: bicgstab
).
Die Konvergenzgeschwindigkeit der iterativen Verfahren lässt sich durch Vorkonditionierung, z.B. mittels unvollständiger LU-Zerlegung, verbessern. Für das BiCGstab-Verfahren sieht der Befehl so aus:
% construct preconditioner
option.thresh = 0.01;
[L,U,P] = ilu(S,option);
% calculate solution using preconditioned bicgstab
zt = bicgstab(S,P*b,[],maxit,L,U);
Vergleichen Sie die zur Lösung des linearen Gleichungssystems \( S\tilde{\mathbf{z}} =\mathbf{b}\) benötigte Rechenzeit des klassischen LU-Verfahrens
[L, U, P] = lu(S);
y = L\P*b;
zt = U\y;
mit denen der drei iterativen Verfahren, jeweils mit und ohne Vorkonditionierung und für unterschiedliche \(N\). Verwenden Sie das Speicherformat für dünnbesetzte Matrizen. Erstellen Sie zwei Tabellen, in denen Sie jeweils die benötigte Rechenzeit bzw. das Residuum res = max(abs(b-S*zt))
eintragen:
Verfahren/N |
5 |
50 |
500 |
… |
---|---|---|---|---|
LU |
… |
… |
… |
… |
cgs |
… |
… |
… |
… |
minres |
… |
… |
… |
… |
bicgstab |
… |
… |
… |
… |
prec. cgs |
… |
… |
… |
… |
prec. minres |
… |
… |
… |
… |
prec. bicgstab |
… |
… |
… |
… |
Ab welcher Auflösung \(N\) ist das Schnellste der sechs iterativen Verfahren schneller als das klassische LU-Verfahren?
Tipp
Verwenden Sie die Matlabbefehle
tic
undtoc
für die Zeitmessung.Unter Umständen müssen Sie die maximal erlaubte Anzahl an Iterationen für die iterativen Verfahren anpassen.
Denken Sie daran, die Konstruktion des Vorkonditionierers in der Rechenzeit zu berĂĽcksichtigen!
% space for the solution
Aufgabe 3 - Simulation der Slacklinerin#
In einer sogenannten quasistatischen Simulation wird ein zeitabhängiger Prozess so simuliert, dass in jedem Zeitschritt ein stationärer Zustand berechnet wird. So wird die Dynamik (z.B. Oszillation der Slackline) vernachlässigt, was die Berechnung deutlich vereinfacht. Schließlich muss keine Differentialgleichung gelöst werden, es reicht eine Abfolge von linearen Gleichungssystemen zu lösen.
Simulieren Sie, wie eine Slacklinerin die Highline von links nach rechts traversiert. Berechnen Sie dazu die statische Verschiebung der Slackline fĂĽr unterschiedliche Positionen der Slacklinerin entlang der Highline. Gehen Sie von einem Gewicht von 70 kg aus.
Treffen Sie eine angemessene Wahl fĂĽr
die räumliche Diskretisierung \(N\) der Slackline, sowie der Schrittweite der Slacklinerin;
das Lösungsverfahren für das lineare Gleichungssystem;
das Speicherformat der Matrix
und begrĂĽnden Sie Ihre Antwort.
Plotten Sie die Kurve, die von den Füßen der Slacklinerin durchlaufen wird (Rote Linie in der Animation in Abbildung 2). Wie stark hängt die Slackline am tiefsten Punkt durch?
% space for the solution
Es geht weiter mit der Highline
Um die Highline dynamisch zu simulieren, sehen Sie sich die Übung Modellierung einer Highline - Zeitliche Auflösung an.