Matlab: Probleme mit singulären Matrizen (2)
Lineare
Gleichungs-
systeme
Zur Startseite "Einführung, Lösbarkeit, Determinanten" Gauß, LR-Zerlegung, Cholesky, Matrix-Inversion, homogene Systeme, dünn besetzte Matrix, überbestimmte Systeme, Standard-Software, Kondition, Singularität Zur Startseite "Iterationsverfahren für lineare Gleichungssysteme" Symbolische Rechnung, numerische Berechnung, Beispiele mit verschiedenen Softwareprodukten, der Backslash-Operator in Matlab Zur Startseite "Rundungsfehler, Kondition, Singularität, Skalierung" Zum Vergleich"Direkte Verfahren vs. Iterationsverfahren" Zur Startseite "Überbestimmte Gleichungssysteme"

KragtraegerStatUnbestDas 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::

SingulTest202

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:

SingulTest2CW2

  • 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.
     

Fazit: Das Erkennen der Singularität bei numerischer Rechnung ist schwierig (siehe: "Schwieriges Problem: Singularität erkennen"). Die iterativen Verfahren reagieren in der Regel so, wie es sich oben am "Mini-Beispiel" (mit Ausnahme der KonjugGrad-Function) zeigte: Sie konvergieren nicht. Für den Anwender ist es schwierig bis unmöglich zu entscheiden, ob nur schlechte Konvergenz vorliegt, der gegebenenfalls mit Präkonditionierung und/oder einer größeren Anzahl zulässiger Iterationsschritte begegnet werden könnte, oder ob die Matrix tatsächlich singulär ist.

Zum Download verfügbar sind das abgebildete Matlab-Script und die daraus aufgerufenen Function bzw. DLL:
 
SingulTest2.m, syswbc_m.dll und SymBand2Quad.m. Die Function KonjugGrad.m steht über den Link
http://www.mathematik.uni-kassel.de/~meister/buch_online zur Verfügung.

Home02

Homepage “Dankert/Dankert: Technische Mechanik”

Home02

Homepage “WWW - Ergänzung - Vertiefung - WWW”

Mail02

D

Mail202

nkert.de