Was sind die Symptome einer schlechten Konditionierung bei direkten Methoden?


14

Angenommen, wir haben ein lineares System und wissen nichts über dessen Konditionierung und haben keine vorläufigen Informationen über die Lösung. Wir wenden blind die Gaußsche Elimination an und erhalten eine Lösung x . Ist es möglich zu bestimmen, ob diese Lösung vertrauenswürdig ist (dh ob das System gut konditioniert ist), ohne die Matrix gründlich vorab zu analysieren ? Gibt die Größe der Pivots zuverlässige Informationen?

Und generell, was sind die wichtigsten Richtlinien für die Erkennung von Erkrankungen "on the fly"?

Antworten:


13

Wann ist eine Matrix krank konditioniert ? Es kommt auf die Genauigkeit der gesuchten Lösung an, ebenso wie "Schönheit im Auge des Betrachters" ...

Vielleicht sollte Ihre Frage besser umformuliert werden, da es günstige und robuste Schätzer für Zustandszahlen gibt, die auf der L U -Faktorisierung basieren .LU

Angenommen, Sie interessieren sich für das reale allgemeine (dichte, nicht symmetrische) Problem der Doppelgenauigkeitsarithmetik, dann würde ich Ihnen die Verwendung des LAPACK-Expertenlösers DGESVX vorschlagen, der eine Bedingungsschätzung in Form seines Reziprokwerts liefert . Als Bonus haben Sie auch andere Extras wie Gleichungsausgleich / -ausgleich, iterative Verfeinerung, Vorwärts- und Rückwärtsfehlergrenzen. Eine krankhafte Konditionierung ( κ ( A ) > 1 / ϵ ) wird übrigens durch als Fehler signalisiert .RCOND1/κ(A)κ(A)>1/ϵINFO>0

Gehen mehr ins Detail, schätzt LAPACK die Konditionszahl in der 1-Norm (oder -Norm , wenn Sie die Lösung A T x = b ) über DGECON . Der zugrunde liegende Algorithmus wird in Abschnitt 36 beschrieben: "Robuste dreieckige Lösungen zur Verwendung bei der Zustandsschätzung" .ATx=b

Ich muss gestehen, dass ich kein Experte auf diesem Gebiet bin, aber meine Philosophie lautet: "Wenn es für LAPACK gut genug ist, ist es für mich".


8

Die Lösung eines schlecht konditionierten Gleichungssystems mit einer Matrix aus Norm 1 und einer zufälligen rechten Seite von Norm 1 wird mit hoher Wahrscheinlichkeit eine Norm in der Größenordnung der Bedingungsnummer haben. Wenn Sie also ein paar solcher Lösungen berechnen, erfahren Sie, was gerade passiert.


Dies ist in der Tat das, was DGECON tut, mit der zusätzlichen Finesse, die Suchrichtung iterativ zu verfeinern, um das Ergebnis zu maximieren, und einen benutzerdefinierten Dreieckslöser (nicht die BLAS-Löser) zu verwenden, damit die Dinge nicht durch Approximationsfehler verzerrt werden. Der Rechenaufwand von DGECON ist daher vergleichbar mit Ihrem einfachen Test. +1 für die Erinnerung an die einfache Bedeutung der Matrixnormen und der Bedingungsnummer. Es dürfte interessant sein, herauszufinden, ob DGECON einer einfachen Stichprobenprüfung gegenüber wirklich robuster ist.
Stefano M

Unter Berücksichtigung, dass die Bedingungszahl der Lösung von mit der Bedingungszahl der Berechnung von A x übereinstimmt, reicht es aus, die skalierte Matrix mit diesen Zufallsvektoren zu multiplizieren, anstatt tatsächlich A x = b zu lösen ? Ax=bAxAx=b
Faleichik

2
@faleichik Sicher nicht: Der Trick hier ist maßstab , so dass A = 1 und κ ( A ) = A A - 1= A - 1 . Da es sich um diese lineare Algebra handelt, müssen Sie natürlich nicht A skalieren, sondern nur A x ... Sie müssen jedoch zuerst A berechnen . Ihr umgekehrtes Argument würde es erfordern, zuerst A - 1 zu berechnen.AA=1κ(A)=AA1=A1AAxAA1was wir zu bewerten suchen.
Stefano M

5

Es ist fast unmöglich zu sagen, ob Ihr System von nur einem Ergebnis schlecht konditioniert ist. Solange Sie keine genauen Einblicke in das Verhalten Ihres Systems haben (dh wissen, welche Lösung es sein SOLLTE), können Sie nicht viel zu einer einzelnen Lösung sagen.

Allerdings können Sie mehr Informationen erhalten, wenn Sie mehr als ein System mit demselben lösen . Angenommen, Sie haben ein System der Form A x = b . Für ein bestimmtes A, dessen Konditionierung Sie noch nicht kennen, können Sie den folgenden Test durchführen: AAx=b

  1. Löse für einen bestimmten Vektor auf der rechten Seite b . Ax=bb
  2. Beeinflussen Sie Ihren rechten Vektor mit wobei | | ϵ | | ist im Vergleich zu | sehr klein | b | | .bnew=b+ε||ϵ||||b||
  3. Löse .Axnew=bnew
  4. Wenn Ihr System gut konditioniert, Ihre neue Lösung sollte ziemlich nah an Ihre alte Lösung (dh sollte klein sein). Wenn Sie eine dramatische Änderung Ihrer neuen Lösung beobachten (dh | | x - x n e w | | groß ist ), dann wird Ihr System ist wahrscheinlich schlecht konditioniert. ||xxnew||||xxnew||

Θ(n3)Θ(n2)||A||||A1||in einer bequemen Norm.


2
Your Θ(kn3) claim is extremely far from the truth. Even if A is dense, A can be factored once with O(n3) work and then each solve requires only O(n2) work.
Jack Poulson

@JackPoulson: You're absolutely right... I guess I completely spaced out about it. No worries:) I'll update my answer
Paul

Could one also evaluate the residual of the resulting solve? Since
||Axb||
scales as
||A||||x||
a nearly singular A might give a meaningful residual even if its solution is very bad.
Reid.Atcheson

@Reid.Atcheson: Not really. The approximate solution to an ill conditioned system can still produce a small residual. This does not really doesn't give you any indication as to how far away it is from the true solution.
Paul

1
May be it is more wise to explicitly state ε very small with respect to b. Everything is relative in this area... Most readers will know, but someone could be mislead in dangerous waters.
Stefano M
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.