Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

inv

Inverso delle matrici

Sintassi

Descrizione

Y = inv(X) l'inverso della matrice quadrata X.

  • X^(-1) equivale a inv(X).

  • x = A\b è calcolato in modo diverso rispetto a x = inv(A)*b ed è consigliato per la risoluzione di sistemi di equazioni lineari.

esempio

Esempi

comprimi tutto

Calcolare l'inverso di una matrice 3x3.

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

Controllare i risultati. Nel caso ideale, Y*X produce la matrice di identità. Poiché inv esegue l'inversione della matrice utilizzando calcoli in virgola mobile, in pratica Y*X si trova vicino alla matrice di identità eye(size(X)), ma non è esattamente uguale.

Y*X
ans = 3×3

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

Esaminare il motivo per cui la risoluzione di un sistema lineare invertendo la matrice con inv(A)*b è meno appropriato del risolverla direttamente utilizzando l'operatore barra rovesciata x = A\b.

Creare una matrice casuale A di ordine 500 costruita in modo che il suo numero di condizione cond(A) sia 1e10 e la sua norma norm(A) sia 1. La soluzione esatta x è un vettore casuale di lunghezza 500 e il lato destro è b = A*x. Il sistema di equazioni lineari è quindi mal condizionato, ma coerente.

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

Risolvere il sistema lineare A*x = b invertendo la matrice del coefficiente A. Utilizzare tic e toc per ottenere informazioni sulla temporizzazione.

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

Trovare l'errore assoluto e l’errore residuo del calcolo.

err_inv = norm(y-x)
err_inv = 3.5877e-06
res_inv = norm(A*y-b)
res_inv = 4.0719e-07

Ora, risolvere lo stesso sistema lineare utilizzando l'operatore barra rovesciata \.

tic
z = A\b;
t1 = toc
t1 = 0.0279
err_bs = norm(z-x)
err_bs = 2.3426e-06
res_bs = norm(A*z-b)
res_bs = 2.6245e-15

Il calcolo con la barra rovesciata è più rapido e presenta un errore residuo inferiore di diversi ordini di magnitudine. Il fatto che err_inv e err_bs siano entrambi dell'ordine di 1e-6 riflette semplicemente il numero di condizione della matrice.

Il comportamento di questo esempio è un comportamento tipico. L'utilizzo di A\b al posto di inv(A)*b è da due a tre volte più rapido e produce residui di una precisione pari a quella della macchina rispetto alla magnitudine dei dati.

Argomenti di input

comprimi tutto

Matrice di input, specificata come matrice quadrata. Se X è scalato in maniera non appropriata o è quasi singolare, il calcolo inv perde la precisione numerica. Utilizzare rcond o cond per controllare il numero di condizioni della matrice.

Tipi di dati: single | double
Supporto numeri complessi:

Ulteriori informazioni

comprimi tutto

Inverso delle matrici

Una matrice X è invertibile se esiste una matrice Y della stessa dimensione, tale che XY=YX=In, dove In è la matrice di identità n x n. La matrice Y è detta inversa di X.

Una matrice priva di inversa è singolare. Una matrice quadrata è singolare solo quando il suo determinante è esattamente zero.

Suggerimenti

  • Raramente è necessario formare l'inverso esplicito di una matrice. Un utilizzo improprio frequente di inv si verifica quando si risolve il sistema di equazioni lineari Ax = b. Un modo per risolvere l'equazione è con x = inv(A)*b. Un modo migliore, sia dal punto di vista del tempo di esecuzione che della precisione numerica, è quello di utilizzare l'operatore barra rovesciata della matrice x = A\b. In questo modo si ottiene la soluzione utilizzando l'eliminazione gaussiana, senza formare esplicitamente l'inversa. Per maggiori informazioni vedere mldivide.

Algoritmi

inv esegue una decomposizione LU della matrice di input (o una decomposizione LDL se la matrice di input è hermitiana). Utilizza quindi i risultati per formare un sistema lineare la cui soluzione è data dall'inverso della matrice inv(X). Per gli input sparsi, inv(X) crea una matrice sparsa di identità e utilizza la barra rovesciata, X\speye(size(X)).

Funzionalità estese

Cronologia versioni

Introduzione prima di R2006a

espandi tutto

Vedi anche

| | |