(%i1) A : matrix([ 3, 0, - 1, 1],[ - 2, 3, 2, 2],[ 4, 2, - 1, 1],[ - 1, 2, - 3, 0]) $

Para calcular la inversa utilizaremos el procedimiento de realizar operaciones elementales que transformen [A|I] en [I|B], donde I es la identidad. La matriz resultante B será la inversa buscada.

Consideremos la matriz ampliada [A|I]

(%i2) X : addcol( A, ident( 4)) ;
(X) ( 3 0 - 1 1 1 0 0 0 - 2 3 2 2 0 1 0 0 4 2 - 1 1 0 0 1 0 - 1 2 - 3 0 0 0 0 1 )

Primero consigamos el 1 elemento de X[1,1] sea 1, para ello tendremos que restarle a la primera fila la misma multiplicada por (1-1/X[1,1]):

(%i3) X : rowop( X, 1, 1, 1 - 1 / X[ 1, 1]) ;
0 errores, 0 advertencias (X) ( 1 0 - 1 3 1 3 1 3 0 0 0 - 2 3 2 2 0 1 0 0 4 2 - 1 1 0 0 1 0 - 1 2 - 3 0 0 0 0 1 )

Ahora consigamos hace ceros todos los elementos de la columna 1 por debajo de X[1,1]:

(%i6) X : rowop( X, 2, 1, X[ 2, 1]) $
X : rowop( X, 3, 1, X[ 3, 1]) $
X : rowop( X, 4, 1, X[ 4, 1]) ;
(X) ( 1 0 - 1 3 1 3 1 3 0 0 0 0 3 4 3 8 3 2 3 1 0 0 0 2 1 3 - 1 3 - 4 3 0 1 0 0 2 - 10 3 1 3 1 3 0 0 1 )

El siguiente paso es hacer X[2,2] que sea 1, para ello:

(%i7) X : rowop( X, 2, 2, 1 - 1 / X[ 2, 2]) ;
(X) ( 1 0 - 1 3 1 3 1 3 0 0 0 0 1 4 9 8 9 2 9 1 3 0 0 0 2 1 3 - 1 3 - 4 3 0 1 0 0 2 - 10 3 1 3 1 3 0 0 1 )

Consigamos que sean cero todos los elementos

(%i9) X : rowop( X, 3, 2, X[ 3, 2]) $
X : rowop( X, 4, 2, X[ 4, 2]) ;
(X) ( 1 0 - 1 3 1 3 1 3 0 0 0 0 1 4 9 8 9 2 9 1 3 0 0 0 0 - 5 9 - 19 9 - 16 9 - 2 3 1 0 0 0 - 38 9 - 13 9 - 1 9 - 2 3 0 1 )

Repitamos el proceso para hacer X[3,3] que valga 1 y ceros los elementos posteriores:

(%i11) X : rowop( X, 3, 3, 1 - 1 / X[ 3, 3]) $
X : rowop( X, 4, 3, X[ 4, 3]) ;
(X) ( 1 0 - 1 3 1 3 1 3 0 0 0 0 1 4 9 8 9 2 9 1 3 0 0 0 0 1 19 5 16 5 6 5 - 9 5 0 0 0 0 73 5 67 5 22 5 - 38 5 1 )

Ahora solo nos queda hace 1 el elemento X[4,4]:

(%i12) X : rowop( X, 4, 4, 1 - 1 / X[ 4, 4]) ;
(X) ( 1 0 - 1 3 1 3 1 3 0 0 0 0 1 4 9 8 9 2 9 1 3 0 0 0 0 1 19 5 16 5 6 5 - 9 5 0 0 0 0 1 67 73 22 73 - 38 73 5 73 )

El siguiente paso es hacer ceros los elementos superiores a la diagonal principal con el procedimiento que hemos visto:

(%i15) X : rowop( X, 3, 4, X[ 3, 4]) $
X : rowop( X, 2, 4, X[ 2, 4]) $
X : rowop( X, 1, 4, X[ 1, 4]) ;
(X) ( 1 0 - 1 3 0 2 73 - 22 219 38 219 - 5 219 0 1 4 9 0 - 130 219 43 657 304 657 - 40 657 0 0 1 0 - 21 73 4 73 13 73 - 19 73 0 0 0 1 67 73 22 73 - 38 73 5 73 )

Y lo mismo para la columna 3:

(%i17) X : rowop( X, 2, 3, X[ 2, 3]) $
X : rowop( X, 1, 3, X[ 1, 3]) ;
(X) ( 1 0 0 0 - 5 73 - 6 73 17 73 - 8 73 0 1 0 0 - 34 73 3 73 28 73 4 73 0 0 1 0 - 21 73 4 73 13 73 - 19 73 0 0 0 1 67 73 22 73 - 38 73 5 73 )

Observemos que no es necesario hacer 0 el elemento X[1,2], pues lo es. Ya tenemos la matriz inversa que buscábamos:

(%i18) invA : submatrix( X, 1, 2, 3, 4) ;
(invA) ( - 5 73 - 6 73 17 73 - 8 73 - 34 73 3 73 28 73 4 73 - 21 73 4 73 13 73 - 19 73 67 73 22 73 - 38 73 5 73 )

Created with wxMaxima.