Beispiel 1 (widerspruchsfreies System)
Das Gleichungssystem
hat eine singuläre Koeffizientenmatrix. Es wird auf der Seite "Lösbarkeit linearer Gleichungssysteme" ausführlich behandelt. Dort wird auch gezeigt, dass es keinen Widerspruch enthält (Rang der Koeffizientenmatrix ist gleich dem Rang der erweiterten Matrix, für beide gilt: r = 2).
Das nachfolgend zu sehende kleine Matlab-Script versucht, dieses Gleichungssystem mit dem Matlab-Standard-Solver zu lösen.
Der nebenstehende Schnappschuss des Command Windows zeigt das Ergebnis (mit Matlab R14). Die Formulierung der Warnung bestätigt, dass aus den oben genannten Gründen die Singularität nur vermutet werden kann. Es wird trotzdem ein (korrektes) Ergebnis ausgewiesen (die durch "Einsetzen" des Ergebnisses in das Ausgangssystem durchgeführte "Probe" bestätigt die Richtigkeit).
Aber: Es ist natürlich nicht die Lösung des Gleichungssystems, sondern nur eine von unendlich vielen. Bei einer Rechnung unter Verwendung von Matlab R13 ergibt sich eine ganz andere (aber auch richtige) Lösung. Ein Vergleich mit der allgemeinen Lösung (und die jeweils erfolgreiche "Probe durch Einsetzen") zeigt in beiden Fällen die Richtigkeit der ausgegebenen speziellen Lösungen.
Die Konditionszahl der Matrix hat einen sehr großen Wert (theoretisch müsste sie für die singuläre Matrix unendlich sein).
Nur bei ganz kleinen Matrizen ist die Aussage zur Singularität deutlicher:
Hier wurde (direkt im Command Window) versucht, das Gleichungssystem
zu lösen. Man sollte nach den gerade gemachten Erfahrungen eigentlich erwarten, dass eine Lösung abgeliefert wird, denn dieses System hat (wie das System oben) zwar eine singuläre Koeffizientenmatrix, enthält aber auch keinen Widerspruch (z. B. ist x1 = x2 = 1 eine Lösung). Bei dieser schärferen Formulierung zur Singularität wird aber keine Lösung abgeliefert (NaN steht in Matlab für "Not a Number").
Man kann sicher darüber streiten, ob die Ausgabe eines richtigen, wenn auch zufällig entstehenden Ergebnisses (wie im Beispiel mit 3 Gleichungen) eine gute Reaktion des Programms ist. Es ist - wie das Beispiel mit 2 Gleichungen zeigt - offensichtlich aber nicht die Absicht, in möglichst jedem Fall ein mögliches Ergebnis abzuliefern (vgl. hierzu auch: "Matlab: Probleme mit singulären Matrizen"). Im nachfolgenden Beispiel 2 kann die Ausgabe eines Ergebnisses jedoch nicht akzeptiert werden.
|
|
|
|