Você está na página 1de 11

SOLUO DE MATRIZ INVERSA: CASO DA MATRIZ 1

Juliano Pvel Brasil Custdio2


Professor do Curso de Clculo numrico da Faculdade Alves Faria E-mail: juliano.custodio@alfa.br

Daniel Prieto de Almeida Gomes3


Graduao em Engenharia da Faculdade Alves Faria

E-mail: prieto.agomes@hotmail.com

Guilherme Luiz Pereira Pinto4


Graduao em Engenharia da Faculdade Alves Faria

E-mail: guilherme@topcg.com.br

Paulo Junio Rodrigues Lemes dos Santos4


Graduao em Engenharia da Faculdade Alves Faria

E-mail: pjgoias@live.com

Resumo
Esse artigo tem como enfoque a demonstrao de cdigos computacionais para a realizao de operaes matemticas que, solucionadas a mo, despenderiam muito tempo para se alcanar os resultados. Ser objetivado a realizao de operaes matriciais, em busca da inversa de uma matriz qualquer, demonstrando assim a potencialidade dos cdigos de mquina para tal tipo de trabalho. Palavras Chaves: cdigos computacionais; operaes maticiais; matriz inversa.

Abstract
This article has as focus the demonstration of computational codes to perform mathematical operations that, solved by hand, would spend to much time to reach the results. It will be objectified operation with matrix, searching for the inverse of any matrix, showing the potential of the machines codes for this type of work.

Keys Words: Computational Codes; Matrix Operations; Inverse Matrix.

Trabalho de Atividade processual do segundo semestre de 2013 da Matria de Clculo Numrico 2 Professor do curso de Clculo Numrico da Faculdade Alves Faria. 3 Aluno do curso de Engenharia Mecnica da Faculdade Alves Faria. 4 Alunos do curso de Engenharia Civil da Faculdade Alves Faria.

1. Introduo
O clculo de inversas de matriz com ordens maiores que dois, no uma tarefa simples, para isso vrios mtodos so criados a fim de facilitar a soluo, uma vez que a matriz inversa tem as mais variadas aplicabilidades seja na utilizao de criptografia de senhas, clculo do momento fletor, onde a inversa determina rigidez do material dentre outras. Esse trabalho foi escrito com o propsito de mostrar uma das tcnicas possveis para calcular a inversa de uma matriz, como o clculo de matriz inversa exige outros conhecimentos, tambm ser abordado um pouco sobre solues de sistema com a fatorao LU e multiplicao de matrizes, e para facilitar ainda mais o processo de clculo da inversa de uma matriz, ser utilizado programas computacionais para nos auxiliar no clculo. Para os clculos ser apresentado uma srie de funes que auxiliaram nas solues dos sistemas, no ser explicado a lgica dos cdigos, somente como eles funcionam, visto que o trabalho tem como foco a soluo de inversas de matrizes.

2. Desenvolvimento

Para que se possa iniciar a resoluo do problema envolvendo uma matriz de ordem qualquer, no qual o objetivo encontrar sua inversa, necessrio a apresentao de alguns conceitos e tcnicas primordiais para atingir tal soluo.

2.1. Conceitos e Tcnicas


2.1.1. Multiplicao de Matrizes
Segundo Lay (2007,pg 95)
Se A uma matriz e B uma matriz , de colunas o produto AB a matriz cujas colunas so .Isto , [ ] , ento

2.1.2. Resoluo de Sistemas Lineares


Agora ser tratado a resoluo de sistemas lineares, Lay (2007, pg 36) diz que Se A uma matriz com colunas , e se x pertence a , ento o produto de A e x, denotado por , a combinao linear das colunas de A usando as componentes correspondentes de x como pesos, isto , [ ]

Outros aspectos as ser analisados quando o assunto tange a resoluo de sistemas, de acordo com Lay (2007, pg 37)

Se

uma matriz , a equao matricial

com colunas

, e se

pertece a

Tem o mesmo conjunto soluo que a equao vetorial

Que, por sua vez, tem o mesmo conjunto soluo que o sistema de equao lineares cuja matriz completa

Lay (2006) tambm afirma que a equao combinao linear das colunas de A.

possui soluo se somente se

uma

2.1.3. Fatorao LU (Lower Upper)


A fatorao LU um mtodo amplamente utilizado para soluo de sistemas lineares, Ruggerio e Lopez teorizam essa fatorao da seguinte forma:
Dada uma matriz quadrada A de ordem n, seja a matriz constituda das primeiras k linhas e colunas de A. Suponha que det ( ) 0 para k = 1,2,3, ..., (n-1). Ento, existe uma nica matriz triangular inferior L = ( ), com = 1,1 i n e uma nica matriz triangular superior U = ( ) tais que LU = A. Ainda mais, det (A) = ... .(1996, pg 137)

Com relao a fatorao LU Ruggerio e Lopez (1996, pg 131,132) explanam dizendo que:
Seja o sistema O processo de fatorao para resoluo deste sistema consiste em decompor a matriz A dos coeficientes em um produto de dois ou mais fatores e, em seguida, resolver uma sequncia de sistemas lineares que nos conduzir soluo do sistema linear original. Se, ento resolver o sistema linear equivalente a resolver o sistema linear e, em seguida, o sistema linear . A vantagem dos processos de fatorao e que podemos resolver qualquer sistema linear que tenha A como matriz dos coeficientes. Se o vetor B for alterado, a resoluo do novo sistema linear ser quase imediata. A fatorao LU um dos processos de fatorao mais empregados. Nesta fatorao a matriz L triangular inferior com diagonal unitria e a matriz U triangular inferior com diagonal unitria e a matriz U triangular superior.

2.1.4. Matriz Inversa


Segundo Lay (2007) uma matriz quadrada A de ordem n, muitas vezes possui uma matriz B de mesma ordem, tal que,

onde uma matriz identidade. Nesse caso A inversvel, e B uma inversa de A. Ele tambm afirma que quando uma matriz for inversvel sua inversa ser uma matriz nica. Uma forma de calcular a inversa de matriz desmembrar a matriz e em sistemas. Ser demonstrado a baixo.

A[ Se A for inversivel temos:

Ou seja:

A[

] B[

] =I [

Desenvolvendo a multiplicao: [ ]

= [

Portanto [ ]=[ ]

]= [ ]

]=[ ]

Portanto pode se verificar facilmente que:

A matriz A multiplicado pela primeira coluna de B igual a primeira coluna da matriz Identidade. [ ].[ ]=[ ]

A matriz A multiplica pela segunda coluna de B igual a segunda coluna da matriz identidade [ ].[ ]=[ ]

Analogamente a matriz A multiplicada pela ensima coluna da matriz de B igual ensima coluna da matriz identidade [ ].[ ]=[ ]

Como por exemplo a matriz

], sua inversa dada por:

][

Multiplicando as linhas da primeira matriz pelas colunas da segunda, so obtidos os seguintes sistemas: { ,

{ E {

Obtendo-se a seguinte inversa: [ ]

2.2. Funes Octave


Fazendo uso do que foi exposto acima j temos tcnicas suficientes para calcular a inversa de qualquer matriz, desde que a mesma seja inversvel, porem ao resolver a inversa de

matrizes de ordens muito grandes como a proposta no comeo desse artigo, levaria um tempo em demasia para calcular ela a mo, nesse contexto que entra a utilizao de softwares computacionais para nos auxiliar no clculo de sistemas lineares, visto que uma matriz de ordem 200, precisaramos resolver 200 sistemas de 200 incgnitas, isso uma tarefa difcil para um ser humano mas no para um computador, o software que usaremos ser o GNU Octave, ele j vem com algumas operaes j definidas nele como multiplicao de matrizes, soluo de sistemas entre outros, porem vamos utilizar somente as operaes matemticas bsicas dele, e focaremos na criao de algoritmos para desenvolver sistemas.

Nessa parte do trabalho iremos propor alguns algoritmos para nos auxiliar a soluo de sistemas, e logo em seguida calcularemos a inversa da matriz.

2.2.1. Pivoteamento
Para calcular o LU necessrio fazer um serie de pivoteamento, o pivoteamento consiste em garantir o maior nmero em modulo da coluna fique na posio . Para essa parte vamos propor o seguinte algoritmo. function y=pivotear(a,c) tm = size(a); tm = tm(1); maior = -1; for(i=c:tm) if abs(a(i,c)) > maior maior = abs(a(i,c)); linha = i; endif end y=linha; end Para usar a funo acima foi preciso somente passar como argumento a matriz (A) que ser fatorada e a coluna (c) que se pretende fazer o pivoteamento, e ento a funo fara uma serie de comparaes para ver qual linha a maior e devolver a mesma ao usurio.

2.2.2. Troca de Linha


Depois de saber qual elemento o maior da matriz preciso fazer uma troca de linha, para isso foi proposto o prxima funo. function y=trocarlinha(a,b, matriz) tm = size(matriz); for(i=1:tm(2)) v1(1,i) = matriz(b,i); matriz(b,i) = matriz(a,i); matriz(a,i) = v1(1,i); endfor y=matriz; end A funo trocarlinha, precisara receber duas linhas (a,b) e a matriz (A) que ser feita a troca, e ento ele devolve a matriz j com as linhas trocadas.

2.2.3. Fatorao LU (Lower Upper)


Depois de apresentar os cdigos acima para pivoteamento e troca de linha, j se pode pensar na funo do LU. function [b,c,d]=lowerUpper(a) tm = size(a); tm = tm(1); p = eye(tm); m = zeros(tm); for(i=1:tm) linha=pivotear(a,i); a = trocarlinha(i, linha, a); p = trocarlinha(i, linha, p); m = trocarlinha(i, linha, m); if( i < tm) for(j=i+1:tm) mn = a(j,i)/a(i,i); m(j,i) = mn; a(j, :) = a(j , :) - mn*a(i, :); end end end m = m + eye(tm); b= m; c=a; d=p; end O funcionamento da funo LU bem simples, basta o usurio passar a matriz (A) como argumento para ele, e o mesmo retornara as matrizes L (lower), U (upper) e a P (permutao).

2.2.4. Ly
A funo ly ser usada para calcular o y, como foi dito anteriormente equivalente a resolver e a nica diferena aqui multiplicao de B pela matriz P pois quando feito o pivoteamento e a troca de linha, deve-se tambm trocar a linha da matriz B, mas como o principal motivo da utilizao da tcnica de fatorao LU poder aproveitar a fatorao da matriz A, para poder solucionar problemas o qual s mudara a matriz B, preciso ento da matriz P (permutao), essa matriz obtida atravs de uma matriz identidade, e quando se faz a troca de linhas da matriz A, tambm necessrio realizar a troca de linha da matriz identidade, obtendo ento a matriz P, que servira somente para fazer a troca das linhas de B, toda vez que o mesmo for alterado. Portanto o equivalente a resolver e . function y= ly(l,p,b) tm = size(l); tm = tm(1); c = p*b; ret(tm,1) = 0; for(i=1:tm) soma = 0; for(j=1:tm) if(i==j)

ret(j,1) = c(j) - soma; else soma += l(i,j)*ret(j,1); end end end y=ret; end Para utilizar a funo acima basta passar as matrizes L (lower), P (permutao), B (coeficientes) como argumentos e ento o mesmo retornara uma matriz Y.

2.2.5. Ux
A funo Ux ser a responsvel poder devolver o soluo do sistema, ou seja ela retornara o vetor x da equao . function y= ux(u,y) tm = size(u); tm = tm(1); ret(tm,1) = 0; for(i=tm:-1:1) soma = 0; for(j=tm:-1:1) if(i==j) ret(j,1) = (y(j) - soma)/u(i,j); else soma += u(i,j)*ret(j,1); end end end y=ret; end Para utilizao da funo acima basta passar para a mesma as Matrizes U e y como argumentos, e ela retornara os valores de x, que j a soluo do sistema.

2.2.6. Resolver Sistema


A funo abaixo, uma proposta que rene em uma nica funo, todas funes mencionadas acima, ela no ser utilizada diretamente para a soluo da matriz inversa, ser usado a mesma lgica apresentada aqui para fazer o da matriz inversa. function ret=resolverSistema(a,b) if(det(a)!= 0) [l,u,p] = lowerUpper(a); y = ly(l,p,b); x = ux(u,y); ret = x; else ret = printf("SPD ou SPI\n"); end end A funo acima precisa somente de dois argumentos, a matriz A e B, e ela te retorna o x, na verdade ela s une as funes para que fique mais fcil para o usurio sua utilizao.

3. Inversa Matriz 200x200


Para calcular a inversa da matriz 200x200, iremos utilizar a tcnica anterior no qual podese separar a mesma em 200 sistemas e depois utilizar a srie de funes criadas acima, para achar a soluo de cada sistema ou seja:

Onde a primeira coluna da matriz B, a segunda coluna da matriz B e assim por diante, analogamente a primeira coluna da matriz identidade, a segunda coluna da matriz Identidade e assim por diante. Mesmo com todas funes criadas anteriormente seria um trabalho rduo para se calcular a inversa da matriz, pois seria preciso digitar coluna por coluna da matriz b e a correspondente da identidade, ento para se resolver esse problema ser criada uma funo no Octave no qual se transmitir somente a matriz A, ele se encarregara do restante, ou seja, separa todos 200 sistemas e resolvera um a um, at que toda matriz inversa seja calculada. function y=inversa(a) t=size(a); t=t(1); ide= eye(t); inve=zeros(t); [l,u,p]=lowerUpper(a); for(i=1:t) b=ide(:,i); c=ly(l,p,b); inve(:,i)=ux(u,c); end y=inve; end Como pode-se ver a funo para calcular a inversa muito parecido com a funo de resolver sistema, mas no ser utilizada pois como se pode notar, a matriz A nunca mudara, somente a matriz B que ser alterada, ento no faz sentido calcular o LU 200 vezes da mesma matriz.

10

4. Consideraes Finais
O trabalho foi escrito com enfoque de se calcular a inversa de uma matriz de ordem 200, o que foi simplificado usando mtodos numricos e computacionais para a soluo. Para calcular a inversa da matriz de ordem 200 foram resolvidos 200 sistemas lineares, a onde a matriz do sistema era sempre a mesma e a nica que variava era a dos coeficientes. O clculo do LU foi o que levou mais tempo para o computador resolver gastando um minuto e trinta e dois segundos, porem esse processo precisou ser feito uma nica vez, e depois sempre foi reutilizado a mesma fatorao LU para todos os 200 sistemas, j a resoluo do sistemas levou um minutos e dois segundos, ou seja o clculo do LU levou mais tempo do que a resoluo dos 200 sistemas, ao todo para se encontrar a soluo da inversa gastou dois minutos e trinta e quatro segundos. Todos os clculos foram feitos em um notebook Intel Core I3, 2.53 Ghz de processamento e 4Gb de memria ram, quando colocado o computador para calcular a inversa notou-se que ele consumia 26% do processamento para resolver a inversa da matriz de ordem 200.

11

5. Bibliografia
Ruggiero, Mrcia A. Gomes; Lopes, Vera Lcia da Rocha. Clculo Numrico: Aspectos Tericos e Computacionais. 2, 1996, ed. Pearson Lay, David C. lgebra linear e suas aplicaes. 2, 2007, ed. LTC