Was ist der schnellste Algorithmus zur Berechnung der inversen Matrix und ihrer Determinante für positiv definierte symmetrische Matrizen?

10

Was ist bei einer positiv definierten symmetrischen Matrix der schnellste Algorithmus zur Berechnung der inversen Matrix und ihrer Determinante? Bei Problemen, an denen ich interessiert bin, beträgt die Matrixdimension 30 oder weniger.

  1. Hohe Genauigkeit und Geschwindigkeit sind wirklich notwendig. (Millionen Matrizen werden durchgeführt)
  2. Die Determinante ist notwendig. Bei jeder Berechnung wird nur ein Element der iversen Matrix benötigt. Vielen Dank!
Aufträge
quelle
Müssen Sie Millionen solcher Matrizen invertieren? Ansonsten sollte Geschwindigkeit kein Problem sein.
Wolfgang Bangerth
Ich habe Ihren Titel und Ihre Frage aus Gründen der Klarheit bearbeitet. Wenn ich Fehler gemacht habe, lassen Sie es mich bitte wissen.
Geoff Oxberry
@ Wolfgang Bangerth Ja, Geschwindigkeit sollte berücksichtigt werden.
Bestellungen
1
Wissen Sie, welches Element der inversen Matrix benötigt wird? Oder kann es ein zufälliger Eintrag sein?
Memming
2
@Orders Ihr Kommentar und Ihre Bearbeitung scheinen widersprüchlich: Benötigen Sie ein Element der Umkehrung oder alle ?
Federico Poloni

Antworten:

12

Bei Problemen, an denen ich interessiert bin, beträgt die Matrixdimension 30 oder weniger.

Wie WolfgangBangerth feststellt, ist die Leistung der Matrixinversion normalerweise kein Problem, es sei denn, Sie haben eine große Anzahl dieser Matrizen (Millionen, Milliarden).

Was ist bei einer positiv definierten symmetrischen Matrix der schnellste Algorithmus zur Berechnung der inversen Matrix und ihrer Determinante?

Wenn Geschwindigkeit ein Problem ist, sollten Sie die folgenden Fragen beantworten:

  • Brauchen Sie wirklich die ganze Umkehrung? (Viele Anwendungen müssen keine explizite Umkehrung bilden.)
  • Benötigen Sie wirklich die Determinante? (Determinanten sind ungewöhnlich, aber in der Computerwissenschaft sicherlich nicht ungewöhnlich.)
  • Benötigen Sie entweder eine hohe Genauigkeit? (Algorithmen mit geringer Genauigkeit sind in der Regel schneller.)
  • Würde eine probabilistische Annäherung ausreichen? (Probabilistische Algorithmen sind in der Regel schneller.)

A=LLTdet(A)=i=1nlii2det(A1)=i=1nlii2

Unter der Annahme ist von kann die Cholesky - Zerlegung in der Umgebung berechnet werden - Flop, die die Hälfte über die Kosten eine LU - Zerlegung ist. Ein solcher Algorithmus würde jedoch nicht als "schnell" angesehen. Eine randomisierte LU-ZerlegungAnnn3/3Dies könnte ein schnellerer Algorithmus sein, der in Betracht gezogen werden sollte, wenn (1) Sie wirklich eine große Anzahl von Matrizen faktorisieren müssen, (2) die Faktorisierung wirklich der begrenzende Schritt in Ihrer Anwendung ist und (3) jeder Fehler bei der Verwendung eines randomisierten Algorithmus auftritt akzeptabel. Ihre Matrizen sind wahrscheinlich zu klein, als dass sich spärliche Algorithmen lohnen könnten. Die einzigen anderen Möglichkeiten für schnellere Algorithmen würden eine zusätzliche Matrixstruktur (z. B. gebändert) oder die Ausnutzung der Problemstruktur erfordern (z. B. können Sie Ihren Algorithmus geschickt umstrukturieren, sodass Sie keine müssen länger eine inverse Matrix oder ihre Determinante berechnen). Effiziente Determinantenalgorithmen sind ungefähr die Kosten für die Lösung eines linearen Systems innerhalb eines konstanten Faktors. Daher gelten dieselben Argumente für lineare Systeme auch für die Berechnung von Determinanten.

Geoff Oxberry
quelle
Nur eine kurze Anmerkung: Wenn , sollte man zur Berechnung eines einzelnen Elements nur die te Spalte von berechnen . Sobald die Cholesky-Faktorisierung berechnet ist, erfolgt dies durch Vorwärts- und Rückwärtssubstitution in Bezug auf einen rhs-Vektor aller Nullen und mit nur einer einzigen Eins in Zeile . Da die Berechnung unterbrochen werden kann, sobald berechnet wurde, ist der beste Fall für schlechteste Fall für wo man vollständig zurück und berechnen muss Vorwärtssubstitutionen. B=A1bijjBjbijbnn=lnn2b11
Stefano M
@StefanoM Noch besser, Sie können Ihre Matrix vor Beginn der Berechnung permutieren, damit Sie immer im besten Fall sind.
Federico Poloni