Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

inv

Inversa de la matriz

Sintaxis

Descripción

ejemplo

Y = inv(X) calcula la inversa de la matriz cuadrada X.

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

  • x = A\b se calcula de manera diferente que x = inv(A)*b y se recomienda para resolver sistemas de ecuaciones lineales.

Ejemplos

contraer todo

Calcule la inversa de una matriz de 3 por 3.

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

Compruebe los resultados. Idealmente, Y*X produce la matriz de identidad. Dado que inv realiza la inversión de matriz mediante cálculos de punto flotante, en la práctica Y*X está cerca de la matriz de identidad eye(size(X)), pero no es exactamente igual.

Y*X
ans = 3×3

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

Examine por qué la solución de un sistema lineal al invertir la matriz mediante inv(A)*b es inferior a la solución usando directamente el operador de barra invertida, x = A\b.

Cree una matriz aleatoria A de orden 500 construida para que su número de condiciones, cond(A), sea 1e10 y su norma, norm(A), sea 1. La solución exacta x es un vector aleatorio de longitud 500, y el lado derecho es b = A*x. Así, el sistema de ecuaciones lineares se condiciona mal, pero es coherente.

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

Solucione el sistema lineal A*x = b invirtiendo la matriz de coeficientes A. Utilice tic y toc para obtener información de temporización.

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

Halle el error absoluto y residual del cálculo.

err_inv = norm(y-x)
err_inv = 6.1145e-06
res_inv = norm(A*y-b)
res_inv = 4.9098e-07

Ahora, solucione el mismo sistema lineal utilizando el operador de barra invertida \.

tic
z = A\b;
t1 = toc
t1 = 0.0731
err_bs = norm(z-x)
err_bs = 5.0241e-06
res_bs = norm(A*z-b)
res_bs = 3.4124e-15

El cálculo de barra invertida es más rápido y tiene un error residual inferior en varios órdenes de magnitud. El hecho de que err_inv y err_bs estén ambos en el orden de 1e-6 simplemente refleja el número de condiciones de la matriz.

El comportamiento de este ejemplo es típico. El uso de A\b en lugar de inv(A)*b es de dos a tres veces más rápido y produce residuales en el orden de la precisión de la máquina en relación con la magnitud de los datos.

Argumentos de entrada

contraer todo

Matriz de entrada, especificada como una matriz cuadrada. Si X se escala mal o es casi singular, el cálculo de inv pierde precisión numérica. Utilice rcond o cond para comprobar el número de condiciones de la matriz.

Tipos de datos: single | double
Soporte de números complejos:

Más acerca de

contraer todo

Inversa de la matriz

Una matriz X es invertible si existe una matriz Y del mismo tamaño tal que XY=YX=In, donde In es la matriz de identidad de n por n. La matriz Y se denomina la inversa de X.

Una matriz que no tiene inversa es singular. Una matriz cuadrada es singular solo cuando su determinante es exactamente cero.

Sugerencias

  • Rara vez es necesario formar la inversa explícita de una matriz. Se presenta un uso indebido frecuente de inv al resolver el sistema de ecuaciones lineales Ax = b. Una forma de resolver la ecuación es con x = inv(A)*b. Una manera mejor, desde el punto de vista del tiempo de ejecución y la precisión numérica, es utilizar el operador de barra invertida de matriz x = A\b. Esto produce la solución usando la eliminación gaussiana, sin formar explícitamente la inversa. Para obtener más información, consulte mldivide.

Algoritmos

inv realiza una descomposición LU de la matriz de entrada (o una descomposición LDL si la matriz de entrada es hermítica). A continuación, utiliza los resultados para formar un sistema lineal cuya solución es la inversa de la matriz inv(X). Para las entradas dispersas, inv(X) crea una matriz de identidad dispersa y utiliza la barra invertida, X\speye(size(X)).

Capacidades ampliadas

Consulte también

| | |

Introducido antes de R2006a