0% encontró este documento útil (0 votos)
127 vistas11 páginas

Algoritmo MATLAB para Matriz Inversa

Este documento describe el diseño de un algoritmo en MATLAB para hallar la inversa de una matriz cuadrada utilizando el método de Gauss-Jordan. Explica los pasos del algoritmo, incluyendo dividir la matriz original y la identidad en dos partes y realizar operaciones elementales entre las filas para obtener la matriz identidad en la parte izquierda y la matriz inversa en la derecha. También muestra un ejemplo de ejecutar el algoritmo en MATLAB y resolver un sistema de ecuaciones utilizando la matriz inversa obtenida.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
127 vistas11 páginas

Algoritmo MATLAB para Matriz Inversa

Este documento describe el diseño de un algoritmo en MATLAB para hallar la inversa de una matriz cuadrada utilizando el método de Gauss-Jordan. Explica los pasos del algoritmo, incluyendo dividir la matriz original y la identidad en dos partes y realizar operaciones elementales entre las filas para obtener la matriz identidad en la parte izquierda y la matriz inversa en la derecha. También muestra un ejemplo de ejecutar el algoritmo en MATLAB y resolver un sistema de ecuaciones utilizando la matriz inversa obtenida.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

MATRIZ INVERSA A TRAVÉS DE GAUSS

CURSO: Métodos Numéricos

DISEÑO DE UN ALGORITMO EN MATLAB PARA HALLAR LA


INVERSA DE UNA MATRIZ CUADRADA. EN CASO QUE LA
MATRIZ NO SEA INVERTIBLE
1. OBJETIVOS:

 Diseñar un algoritmo en el programa de Matlab que nos permita hallar la


inversa de una matriz cuadrada.
 Utilizar el algoritmo para resolver una matriz inversa en Matlab
 Resolver un sistema de ecuaciones utilizando el algoritmo adecuado.

2. MARCO TEORICO:

 MATRIZ INVERSA A TRAVÉS DE GAUSS


El método de Gauss-Jordan nos permite calcular la inversa de una matriz, realizando
operaciones elementales entre sus filas.

En una misma matriz divida en dos partes, en la parte izquierda se coloca la matriz a la
que queremos calcular su inversa y en la parte derecha, se coloca la matriz identidad

Realizando operaciones elementales entre las filas de esta matriz, tenemos que
conseguir que en la parte izquierda nos quede la matriz identidad. Una vez lo
consigamos, la matriz que nos queda en la parte derecha, será la matriz inversa:

3. PROCEDIMIENTO:
 DISEÑO DEL ALGORITMO:

Entonces, el algoritmo que utilizaremos será:

function inversa=inv2(A)
n=length(A);
B=[A ,eye(n)];
det=A(1,1);
for k=1:n-1
a=k+1;
for i=a:n
for j=a:n
A(i,j)=(A(k,k)*A(i,j)-A(k,j)*A(i,k))/A(k,k);
end
end
det=det*A(k+1,k+1);
end
if det~=0
for i=1:n
if B(i,i)~=1
B(i,:)= B(i,:)./B(i,i);
end
for k=1:n
if k~=i
B(k,:)=-B(k,i).*B(i,:)+B(k,:);
end
end
end
inversa=B(:,n+1:2*n);
else
inversa='INF';
end
Con esto, podemos comprobar que el script se ejecuta correctamente y su resultado es
igual al que arroja la función “inversa” original de Matlab.

 DESCRIBIENDO INTERFAZ:
Para poder analizar la correcta ejecución de la función, agregamos la función display
en los argumentos de nuestro script, específicamente en los bucles “if”, luego de las
líneas 17 y 21, para poder visualizar los parámetros de entrada y de salida y su papel
en la ejecución del script. Con lo que la función quedaría así:

function inversa=inv2(A)
n=length(A);
B=[A ,eye(n)];
det=A(1,1);
for k=1:n-1
a=k+1;
for i=a:n
for j=a:n
A(i,j)=(A(k,k)*A(i,j)-A(k,j)*A(i,k))/A(k,k);
end
end
det=det*A(k+1,k+1);
end
if det~=0
for i=1:n
if B(i,i)~=1

B(i,:)= B(i,:)./B(i,i);
disp(B);
end
end

for k=1:n
if k~=i
B(k,:)=-B(k,i).*B(i,:)+B(k,:);
disp(B);
end
end
end
inversa=B(:,n+1:2*n);
else
inversa='INF';
end

 EJECUCION DE PLAN:
Utilizaremos la misma matriz de prueba, para poder observar el proceso de obtención
de la matriz inversa:

>> inv2([7 2 10 2 ;3 7 9 8 ;2 3 2 10 ;4 1 2 3])

1.0000 0.2857 1.4286 0.2857 0.1429 0 0 0

3.0000 7.0000 9.0000 8.0000 0 1.0000 0 0

2.0000 3.0000 2.0000 10.000 0 0 1.0000 0

4.0000 1.0000 2.0000 3.0000 0 0 0 1.0000

1.0000 0.2857 1.4286 0.2857 0.1429 0 0 0

0 6.1429 4.7143 7.1429 -0.4286 1.0000 0 0

2.0000 3.0000 2.0000 10.0000 0 0 1.0000 0


4.0000 1.0000 2.0000 3.0000 0 0 0 1.0000

1.0000 0.2857 1.4286 0.2857 0.1429 0 0 0

0 6.1429 4.7143 7.1429 -0.4286 1.0000 0 0

0 2.4286 -0.8571 9.4286 -0.2857 0 1.0000 0

4.0000 1.0000 2.0000 3.0000 0 0 0 1.0000

1.0000 0.2857 1.4286 0.2857 0.1429 0 0 0

0 6.1429 4.7143 7.1429 -0.4286 1.0000 0 0

0 2.4286 -0.8571 9.4286 -0.2857 0 1.0000 0

0 -0.1429 -3.7143 1.8571 -0.5714 0 0 1.0000

1.0000 0.2857 1.4286 0.2857 0.1429 0 0 0

0 1.0000 0.7674 1.1628 -0.0698 0.1628 0 0

0 2.4286 -0.8571 9.4286 -0.2857 0 1.0000 0

0 -0.1429 -3.7143 1.8571 -0.5714 0 0 1.0000

1.0000 0 1.2093 -0.0465 0.1628 -0.0465 0 0

0 1.0000 0.7674 1.1628 -0.0698 0.1628 0 0

0 2.4286 -0.8571 9.4286 -0.2857 0 1.0000 0

0 -0.1429 -3.7143 1.8571 -0.5714 0 0 1.0000

1.0000 0 1.2093 -0.0465 0.1628 -0.0465 0 0

0 1.0000 0.7674 1.1628 -0.0698 0.1628 0 0

0 0 -2.7209 6.6047 -0.1163 -0.3953 1.0000 0

0 -0.1429 -3.7143 1.8571 -0.5714 0 0 1.0000

1.0000 0 1.2093 -0.0465 0.1628 -0.0465 0 0

0 1.0000 0.7674 1.1628 -0.0698 0.1628 0 0


0 0 -2.7209 6.6047 -0.1163 -0.3953 1.0000 0

0 0 -3.6047 2.0233 -0.5814 0.0233 0 1.0000

1.0000 0 1.2093 -0.0465 0.1628 -0.0465 0 0

0 1.0000 0.7674 1.1628 -0.0698 0.1628 0 0

0 0 1.0000 -2.4274 0.0427 0.1453 -0.3675 0

0 0 -3.6047 2.0233 -0.5814 0.0233 0 1.0000

1.0000 0 0 2.8889 0.1111 -0.2222 0.4444 0

0 1.0000 0.7674 1.1628 -0.0698 0.1628 0 0

0 0 1.0000 -2.4274 0.0427 0.1453 -0.3675 0

0 0 -3.6047 2.0233 -0.5814 0.0233 0 1.0000

1.0000 0 0 2.8889 0.1111 -0.2222 0.4444 0

0 1.0000 0 3.0256 -0.1026 0.0513 0.2821 0

0 0 1.0000 -2.4274 0.0427 0.1453 -0.3675 0

0 0 -3.6047 2.0233 -0.5814 0.0233 0 1.0000

1.0000 0 0 2.8889 0.1111 -0.2222 0.4444 0

0 1.0000 0 3.0256 -0.1026 0.0513 0.2821 0

0 0 1.0000 -2.4274 0.0427 0.1453 -0.3675 0

0 0 0 -6.7265 -0.4274 0.5470 -1.3248 1.0000

1.0000 0 0 2.8889 0.1111 -0.2222 0.4444 0

0 1.0000 0 3.0256 -0.1026 0.0513 0.2821 0

0 0 1.0000 -2.4274 0.0427 0.1453 -0.3675 0

0 0 0 1.0000 0.0635 -0.0813 0.1970 -0.1487

1.0000 0 0 0 -0.0724 0.0127 -0.1245 0.4295

0 1.0000 0 3.0256 -0.1026 0.0513 0.2821 0


0 0 1.0000 -2.4274 0.0427 0.1453 -0.3675 0

0 0 0 1.0000 0.0635 -0.0813 0.1970 -0.1487

1.0000 0 0 0 -0.0724 0.0127 -0.1245 0.4295

0 1.0000 0 0 -0.2948 0.2973 -0.3139 0.4498

0 0 1.0000 -2.4274 0.0427 0.1453 -0.3675 0

0 0 0 1.0000 0.0635 -0.0813 0.1970 -0.1487

1.0000 0 0 0 -0.0724 0.0127 -0.1245 0.4295

0 1.0000 0 0 -0.2948 0.2973 -0.3139 0.4498

0 0 1.0000 0 0.1970 -0.0521 0.1105 -0.3609

0 0 0 1.0000 0.0635 -0.0813 0.1970 -0.1487

ans =

-0.0724 0.0127 -0.1245 0.4295

-0.2948 0.2973 -0.3139 0.4498

0.1970 -0.0521 0.1105 -0.3609

0.0635 -0.0813 0.1970 -0.1487

Pudimos observar la ejecución de la función paso a paso y comprobar los cambios de


los parámetros de entrada y salida, hasta llegar al resultado deseado.

 PARA UNA MATRIZ NO INVERTIBLE:

Insertamos lo siguiente en Matlab:


>> inv2([7 2 10 2 ;3 7 9 8 ;2 3 2 10 ;2 3 2 10])

ans =

INF

Podemos observar que esta matriz es no invertible, también llamada singular o


degenerada. Esto lo podemos comprobar al sacar su determinante, el cual nos dará
como resultado cero, como podemos observar:

 RESOLVIENDO UN SISTEMA DE ECUACIONES:

 RESOLVIENDO EL SISTEMA:

>> inversaA=inv2([2 1 3;5 -4 1;1 -1 -4])

1.0000 0.5000 1.5000 0.5000 0 0

5.0000 -4.0000 1.0000 0 1.0000 0

1.0000 -1.0000 -4.0000 0 0 1.0000


1.0000 0.5000 1.5000 0.5000 0 0

0 -6.5000 -6.5000 -2.5000 1.0000 0

1.0000 -1.0000 -4.0000 0 0 1.0000

1.0000 0.5000 1.5000 0.5000 0 0

0 -6.5000 -6.5000 -2.5000 1.0000 0

0 -1.5000 -5.5000 -0.5000 0 1.0000

1.0000 0.5000 1.5000 0.5000 0 0

0 1.0000 1.0000 0.3846 -0.1538 0

0 -1.5000 -5.5000 -0.5000 0 1.0000

1.0000 0 1.0000 0.3077 0.0769 0

0 1.0000 1.0000 0.3846 -0.1538 0

0 -1.5000 -5.5000 -0.5000 0 1.0000

1.0000 0 1.0000 0.3077 0.0769 0

0 1.0000 1.0000 0.3846 -0.1538 0

0 0 -4.0000 0.0769 -0.2308 1.0000

1.0000 0 1.0000 0.3077 0.0769 0

0 1.0000 1.0000 0.3846 -0.1538 0

0 0 1.0000 -0.0192 0.0577 -0.2500

1.0000 0 0 0.3269 0.0192 0.2500

0 1.0000 1.0000 0.3846 -0.1538 0

0 0 1.0000 -0.0192 0.0577 -0.2500

1.0000 0 0 0.3269 0.0192 0.2500


0 1.0000 0 0.4038 -0.2115 0.2500

0 0 1.0000 -0.0192 0.0577 -0.2500

Entonces los resultados obtenidos son:


InversaA =

0.3269 0.0192 0.2500

0.4038 -0.2115 0.2500

-0.0192 0.0577 -0.2500

>> b=[7;-19;4];

>> y=inversaA*b

y=

2.9231
-2.2308
7.8462

>>

SOLUCIONES

A=2.9231

B=7.8462

C= -2.2308

4. CONCLUSIONES:

 Se observó la ejecución de la función paso a paso y se comprobó los cambios de


los parámetros de entrada y salida, hasta llegar al resultado deseado.
 Para una matriz no invertible se observó que al comprobar sacando su
determinante nos dará como resultado cero.
 Como resultado de resolver el sistema de ecuaciones obtenemos los valores de
A, B, C, siendo estos A=2.9231, B=7.8462 C= -2.2308

También podría gustarte