Das auf der Basis der Finite-Elemente-Methode erzeugte Gleichungssystem für den nebenstehend skizzierten Träger wird auf der Seite "Matlab: Probleme mit singulären Matrizen (1)" benutzt, um zu testen, ob die direkten Verfahren zur Lösung von Gleichungssystemen die Singularität der Koeffizientenmatrix erkennen (der Träger ist nicht ausreichend gelagert, deshalb ist die Koeffizientenmatrix natürlich singulär).
Hier soll dieser Test mit iterativen Verfahren durchgeführt werden, wobei nur das kleinste mögliche Gleichungssystem betrachtet werden soll: Ein einziges finites Element erzeugt ein Gleichungssystem mit vier Unbekannten. Auch hier werden (willkürlich) die (sinnvollen) Zahlenwerte
l = 1000 mm , EI = 2 · 1010 Nmm2 , q0 = 2 N/mm
für den Aufbau des Gleichungssystems angenommen. Im nachfolgend zu sehenden Matlab-Script wird das Gleichungssystem mit einer Matlab-Femset-Function in Zeile 4 aufgebaut. Die Koeffizientenmatrix wird in Zeile 8 ausgegeben::
In den Zeilen 10 bis 14 wird versucht, das Gleichungssystem mit 5 verschiedenen Iterationsverfahren zu lösen:
- Die Verfahren, die in den Zeilen 10 bis 13 benutzt werden, sind 4 von den insgesamt 9 Verfahren, die Matlab für die iterative Lösung linearer Gleichungssysteme anbietet (die komplette Palette dieser Verfahren wird z. B. auf der Seite "Testrechnungen mit iterativen Verfahren (1)" genutzt).
- Das Matlab-Script KonjugGrad.m (Zeile 14) ist im Anhang des Buchs "A. Meister: Numerik linearer Gleichungssysteme" gelistet und über den Link http://www.mathematik.uni-kassel.de/~meister/buch_online zum Download verfügbar.
Im Command Window findet man folgende Ausschriften:
- Die Verfahren bicg, bicgstab und pcg melden den zu erwartenden Misserfolg, allerdings jeweils mit einer anderen Begründung (die rot umrandeten Ausschriften). Die eigentliche Ursache (singuläre Matrix) wird nicht erkannt.
- Das lsqr-Verfahren behauptet dreist, Konvergenz erzielt zu haben (die blau umrandete Ausschrift), um dann ein (natürlich völlig unsinniges) Ergebnis abzuliefern.
- Die einzige befriedigende Reaktion zeigt die KonjugGrad-Function. Sie stellt fest, dass die Koeffizientenmatrix nicht positiv definit ist. Das ist richtig (singuläre Matrizen sind nicht positiv definit) und muss zum Abbruch führen, weil die Methode der konjugierten Gradienten nur mit positiv definiten Matrizen arbeiten kann.
|