Numerische Stabilität: LR Zerlegung

HeinzM

Ensign
Registriert
Apr. 2004
Beiträge
186
Hallo,

ich versuche gerade die numerische Stabilität der LR-Zerlegung zu bewerten.
Ich habe bereits ein Programm in Java verfasst, welches die LR-Zerlegung übernimmt. Aus dem Ergebnis möchte ich dann die inverse Matrix bestimmen. Das funktioniert auch schon.
Zum Vergleich berechne ich
a) mit Mantissenlänge 4
b) mit Mantissenlänge 6
c) mit Maschinengenauigkeit
LR und auch die inverse Matrix.
Die Werte von a) und b) sind sich ähnlich an einigen Stellen. Der Unterschied liegt zwischen 10 und 2000.Diese beiden Resultate haben allerdings nichts mit c) gemein. c) ist wiederum sehr nah an dem Ergebnis von mathematica. Also denke ich das die Implementierung korrekt ist.
Wenn ich mit der Mantissenlänge von 16 abwärts gehe, verändert sich das Ergebnis mit manchem Schritt sehr deutlich.
Wie ist die LR-Zerlegung und Berechnung der inversen Matrix jetzt bewerten? Für mich sieht der Vorgang numerisch sehr instabil aus.
Aber was sind die Gründe hierfür?

Kann die Schwierigkeit der Berechenbarkeit der inversen Matrix in Verbindung mit der Determinanten der Ausgangsmatrix gebracht werden?
Oder ist es nicht relevant.
Die Determinante meine Ausgangsmatrix ist -5.551183675940863*10^-5 .

Mit freundlichen Grüßen,

Heinz
 
Vielleicht etwas spät, aber hast du dich mal mit der relativen Konditionszahl befasst? Ich weiß nicht wie deine Matrix aussieht, aber wenn du mit einer solchen Determinante weiterrechnest, könnten durchaus Rundungsfehler auftreten, zB wenn du durch die Determinante teilst. Rechnest du mit oder ohne Spaltenpivotsuche? Mit Spaltenpivotsuche werden solche Probleme gerne stabiler.

HeinzM schrieb:
Für mich sieht der Vorgang numerisch sehr instabil aus. Aber was sind die Gründe hierfür?

Naja, die relative Maschinengenauigkeit bei Mantissenlänge 4 und 6 ist halt nicht so toll. In welchem Bereich befindet sich dein Exponent?
 
Zuletzt bearbeitet von einem Moderator:
Aber was sind die Gründe hierfür?
Tut mir leid wenn folgende Antwort für dich eventuell zu trivial ist - ich bin kein Fachmann für Gleichungslöser- aber eventuell hilft dir der Gedankengang ja dennoch: LR-Zerlegung hat ja das Problem, dass der Fehler, den man beim Eliminieren einer gegebenen Spalte macht, sich beim Eliminieren aller darauf folgenden Spalten fortpflanzt und zusätzlich vergrößert. Denn in jedem Schritt der Spalteneliminierung tritt ja nicht nur ein Fehler dadurch auf, dass die Maschinengenauigkeit nicht ausreicht, sondern auch dadruch, dass die Teilmatrix als Zwischenergebnis schon durch alle zuvorkommenden Schritte verfälscht wurde. Dieses vergrößern der Fehler führt gerade bei größeren Gleichungssystemen dazu, dass die Lösungen schnell ungenau werden.

Interessanterweise gibt es ja noch als Alternative für die Gleichungslösung neben den direkten Verfahren die Splittingverfahren, wo sich Rechenfehler die in einer Iteration auftreten in den darauf folgenden Iterationen kompensieren lassen.
 
Zurück
Oben