Hauptinhalt

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

inv

Beschreibung

Y = inv(X) berechnet die Inverse einer quadratischen Matrix X.

  • X^(-1) ist äquivalent zu inv(X).

  • x = A\b wird anders berechnet als x = inv(A)*b und wird zur Lösung linearer Gleichungssysteme empfohlen.

Beispiel

Beispiele

alle reduzieren

Berechnen Sie die Inverse einer 3x3-Matrix.

X = [1 0 2; -1 5 0; 0 3 -9]
X = 3×3

     1     0     2
    -1     5     0
     0     3    -9

Y = inv(X)
Y = 3×3

    0.8824   -0.1176    0.1961
    0.1765    0.1765    0.0392
    0.0588    0.0588   -0.0980

Prüfen Sie das Ergebnis. Idealerweise generiert Y*X die Identitätsmatrix. Da inv die Matrixinversion mithilfe einer Gleitkommaberechnung ausführt, ist in der Praxis Y*X ungefähr, jedoch nicht exakt gleich der Identitätsmatrix eye(size(X)).

Y*X
ans = 3×3

    1.0000    0.0000   -0.0000
         0    1.0000   -0.0000
         0   -0.0000    1.0000

Untersuchen Sie, warum die Lösung eines linearen Systems durch Invertieren der Matrix mithilfe von inv(A)*b weniger gut ist als die direkte Verwendung des Backslash als Operator, x = A\b.

Erstellen Sie eine Zufallsmatrix A der Ordnung 500, die so aufgebaut ist, dass ihre Konditionszahl, cond(A), 1e10 und ihre Norm, norm(A), 1 ist. Die exakte Lösung x ist ein Zufallsvektor der Länge 500 und auf der rechten Seite steht b = A*x. Daher ist das System linearer Gleichungen zwar schlecht konditioniert, aber konsistent.

n = 500; 
Q = orth(randn(n,n));
d = logspace(0,-10,n);
A = Q*diag(d)*Q';
x = randn(n,1);
b = A*x;

Lösen Sie das lineare System A*x = b, indem Sie die Koeffizientenmatrix A invertieren. Verwenden Sie tic und toc, um Timing-Informationen abzurufen.

tic
y = inv(A)*b; 
t = toc
t = 
0.0160

Ermitteln Sie den absoluten Fehler und den Restfehler der Berechnung.

err_inv = norm(y-x)
err_inv = 
4.8457e-06
res_inv = norm(A*y-b)
res_inv = 
4.8952e-07

Jetzt lösen Sie dasselbe lineare System mithilfe des Backslash (\) als Operator.

tic
z = A\b;
t1 = toc
t1 = 
0.0172
err_bs = norm(z-x)
err_bs = 
3.7705e-06
res_bs = norm(A*z-b)
res_bs = 
3.7080e-15

Die Berechnung mit Backslash ist schneller und weist einen um mehrere Größenordnungen geringeren Restfehler auf. Die Tatsache, dass err_inv und err_bs beide die Größenordnung 1e-6 aufweisen, spiegelt einfach die Konditionszahl der Matrix wider.

Das Verhalten dieses Beispiels ist typisch. Die Verwendung von A\b anstelle von inv(A)*b ist zwei- bis dreimal schneller und generiert Residuen in der Größenordnung der Maschinengenauigkeit relativ zur Größenordnung der Daten.

Eingabeargumente

alle reduzieren

Eingabematrix, angegeben als quadratische Matrix. Wenn X falsch skaliert oder nahezu singulär ist, verliert die Berechnung von inv an numerischer Genauigkeit. Verwenden Sie rcond oder cond, um die Konditionszahl der Matrix zu überprüfen.

Datentypen: single | double
Unterstützung komplexer Zahlen: Ja

Mehr über

alle reduzieren

Tipps

  • Es ist nur selten erforderlich, die explizite Inverse einer Matrix zu bilden. Häufig wird inv falsch verwendet, wenn das System linearer Gleichungen gelöst wird Ax = b. x = inv(A)*b ist eine Möglichkeit, die Gleichung zu lösen. Eine bessere Möglichkeit, sowohl im Hinblick auf die Ausführungszeit als auch auf die numerische Genauigkeit, ist die Verwendung des Backslash-Operators für die Matrix (x = A\b). Auf diese Weise wird die Lösung mithilfe des Gaußschen Eliminationsverfahrens generiert, ohne die Inverse explizit zu bilden. Weitere Informationen dazu finden Sie unter mldivide.

Algorithmen

inv führt eine LU-Zerlegung der Eingabematrix aus (oder eine LDL-Zerlegung, wenn es sich um eine hermitesche Eingabematrix handelt). Anschließend verwendet die Funktion die Ergebnisse, um ein lineares System zu bilden, dessen Lösung die Matrixinverse inv(X) ist. Für dünn besetzte Eingaben erstellt inv(X) eine dünn besetzte Identitätsmatrix und verwendet den Backslash, X\speye(size(X)).

Erweiterte Fähigkeiten

alle erweitern

Versionsverlauf

Eingeführt vor R2006a

alle erweitern

Siehe auch

| | |