Schnellster Algorithmus zur Berechnung der Bedingungsnummer einer großen Matrix in Matlab / Octave

9

Aus der Definition der Bedingungsnummer geht hervor, dass eine Matrixinversion erforderlich ist, um sie zu berechnen. Ich frage mich, ob für eine generische quadratische Matrix (oder besser, wenn eine symmetrische positive Bestimmtheit möglich ist) eine Matrixzerlegung ausgenutzt werden kann, um die Bedingungsnummer in a zu berechnen schneller Weg.

Linello
quelle

Antworten:

7

Die Berechnung der Bedingungszahl (auch wenn sie innerhalb eines Faktors von 2 angenähert wird) scheint dieselbe Komplexität zu haben wie die Berechnung einer Faktorisierung, obwohl es in dieser Richtung keine Theoreme gibt.

Aus einem spärlichen Cholesky-Faktor einer symmetrischen positiven bestimmten Matrix oder aus einer spärlichen Q R -Faktorisierung (mit implizitem Q ) einer allgemeinen quadratischen Matrix kann man die Bedingungsnummer in der Frobenius-Norm erhalten, indem man die spärliche inverse Teilmenge von ( R) berechnet T R ) - 1 , was viel schneller ist als die Berechnung der vollständigen Inversen. (Im Zusammenhang damit steht meine Arbeit: Hybride Normen und Grenzen für überbestimmte lineare Systeme, Linear Algebra Appl. 216 (1995), 257-266. Http://www.mat.univie.ac.at/~neum/scan/74 .pdf )R.Q.R.Q.(R.T.R.)- -1

Bearbeiten: Wenn dann ist in Bezug auf ein einheitlich invariantes Norn c o n d ( A ) = c o n d ( R ) = EIN=Q.R.Zur Berechnung spärlicher QR-Faktorisierungen siehe z.B.http://dl.acm.org/citation.cfm?id=174408. Zur Berechnung der spärlichen Inversen siehe z. B. meine Arbeit: Eingeschränkte Maximum-Likelihood-Schätzung von Kovarianzen in spärlichen linearen Modellen, Genetics Selection Evolution 30 (1998), 1-24. https://www.mat.univie.ac.at/~neum/ms/reml.pdf Die Kosten betragen etwa das Dreifache der Kosten für die Faktorisierung.

cÖnd(EIN)=cÖnd(R.)=cÖnd(R.T.R.).



Arnold Neumaier
quelle
Sie schlagen also Folgendes vor: Wenn eine Matrix berechnen Sie ihren QR in der Form A = Q R, wobei R eine obere Dreiecksmatrix und Q eine orthogonale Matrix ist und die Bedingungsnummer durch cond ( A ) = | gegeben ist | A | | | | A - 1 | | ( R T R ) - 1 Hier geht es darum, eine schnelle Methode zur Berechnung einer QR-Faktorisierung zu finden. Habe ich recht? EINEIN=Q.R.R.Q.cond(EIN)=||EIN||||EIN- -1||(R.T.R.)- -1
Linello
@linello: nicht ganz; siehe meine Bearbeitung.
Arnold Neumaier
Vielen Dank! Ich werde es überprüfen, übrigens, was kostet dieser Schritt?
Linello
Ö(n3)
4

Es ist sicherlich einfach, die Eigenwert / Eigenvektor-Zerlegung einer symmetrischen Matrix oder die SVD einer allgemeinen Matrix zur Berechnung der Bedingungsnummer zu verwenden, aber dies sind keine besonders schnellen Methoden, um fortzufahren.

EIN- -1condest

Brian Borchers
quelle
Aber die Schätzung ist manchmal deutlich zu klein. Die Berechnung der Bedingungszahl (auch wenn sie innerhalb eines Faktors von 2 angenähert wird) scheint dieselbe Komplexität zu haben wie die Berechnung einer Faktorisierung, obwohl es in dieser Richtung keine Theoreme gibt.
Arnold Neumaier
1

H.H.H.T.H.

Da die größten und kleinsten Eigenwerte / Singularwerte sehr schnell gefunden werden können (lange bevor die Tridiagonalisierung abgeschlossen ist), ist die Lanczos-Methode besonders nützlich, um die Bedingungsnummer zu berechnen.

Chaohuang
quelle
Ich habe mich immer gefragt, wo ich einen lesbaren Matlab-Code für die Lanczos-Iteration finden kann, der verdeutlicht, wie man den kleinsten oder größten Eigenwert erhält. Kannst du mir einen vorschlagen?
Linello
Ich habe keine MATLAB-Codes für den Lanczos-Algorithmus.
Chaohuang