INVERSÃO DE MATRIZES
Para o cálculo da inversa de uma dada matriz [A] quadrada, temos de
relembrar que a sua matriz inversa, [A]-1 (tambem quadrada), deverá respeitar a
seguinte condição:
[A][A]-1=[A]-1[A]=[I] (1)
sendo [I] a matriz identidade.
Um dos métodos é o da aplicação da eliminação de Gauss-Jordan à matriz
aumentada constituída pela matriz de coeficientes e pela matriz identidade, ou seja, se
a matriz dos coeficientes for:
 7 2 −3
[A] =  2 5 −3 ⇒ a matriz aumentada será
 1 −1 −6
 7 2 −3¦1 0 0 
 2 5 −3¦0 1 0 


 1 −1 −6¦0 0 1 
e por aplicação da eliminação ascendente e descendente chegamos a:
−0, 078125 −0, 046875
 1 0 0¦ 0,17188
 0 1 0¦ −0, 046875 0, 203125 −0, 078125


 0 0 1¦0, 0364583 −0, 046875 −0,161458 
sendo a matriz à direita a inversa da matriz original. Com a ajuda de uma máquina de
calcular podemos verificar a condição (1) acima descrita;
0 0
 1

[A][A] =  0
1 0  .
 −1E-12 0 1 
-1
Neste caso o resultado é bastante próximo da identidade e demonstra que a
utilização de muitos algarismos significativos é, em alguns casos, necessária para
chegar a uma solução que realmente satisfaça as condições do problema.
Em computação, a inversa pode ser calculada gerando várias soluções para a
equação [A]{x}={b} (2), usando para valores de {b} as colunas da matriz identidade
como vectores unitários, isto é, se o vector unitário for,{b} = [1 0 0] T a solução de
(2) será a primeira coluna da matriz inversa. Do mesmo modo, se ,{b} = [ 0 1 0] T a
solução de (2) é a segunda coluna de [A]-1, e assim por diante.
Para implementar este método podemos recorrer ao algoritmo da
decomposição LU, pois uma das suas vantagens é a de, eficientemente, servir como
meio de avaliação de vários vectores {b} para a equação (2).
Exemplo
João Minas
FAC (DFUC) - 2001/2002
1/5
Utilizando a decomposição LU,determine a matriz inversa para a seguinte
matriz:
 3 −0,1 −0, 2
[A] =  0,1
7
−0,3 .
 0,3 −0, 2 10 
Por aplicação da decomposição obtemos,
−0,1
−0, 2 
3

[U] =  0 7, 00333 −0, 293333
 0
0
10, 0120 
e
1
0
0


[L] =  0, 0333333
1
0 .

0,1
−0, 0271300 1
Para determinar a primeira coluna de [A]-1, substituímos {b} pela primeira coluna de
[I]. Deste modo encontramos o vector auxiliar {d} por substituição descendente, pois
o sistema [L]{d} = {b} (2) é triangular inferior, com 1’s na diagonal principal; assim
se obtém,
1



{d} =  −0, 03333 .
 −0,1001 
Agora podemos usar este vector auxiliar para resolver o sistema [U]{x} = {d}, que
por substituição ascendente permite chegar ao seguinte resultado:
 0,33249 
{x} =  −0, 00518 .
 −0, 01008
Repetindo este processo para as restantes colunas de [I] determinamos a matriz
inversa de [A], ou seja;
 0,33249 0, 004944 0, 006798
-1
[A] =  −0, 00518 0,142903 0, 004183 .
 −0, 01008 0, 00271 0, 09988 
Tentando novamente verificar (1), usando o Excel:
1
-1.73472E-18 1.38778E-17 


,
1
0
[A][A] =  2.1684E-18

 -3.46945E-18

0
1
-1
observamos que o resultado, ainda que bastante próximo do esperado, apresenta erros
resultantes da manipulação dos coeficientes de cada matriz. Novamente, como no
caso de exemplo anterior, reflecte-se a necessidade de utilizar alguns algarismos
significativos para encontrar uma solução realmente válida para o problema em vista.
Um pseudocódigo para gerar a matriz inversa poderá ser:
João Minas
FAC (DFUC) - 2001/2002
2/5
SUB Ludecomp(a,b,n,tol,x,er)
DIM on, sn
Er = 0
CALL Decompose(a,n,tol,o,s,er)
IF er <> -1 THEN
CALL Substitute(a,o,n,b,x)
END IF
END Ludecomp
SUB Decompose(a,n,tol,o,s,er)
DO i = 1,n
oi = i
si = ABS(ai,1)
DO j = 2,n
IF ABS(ai,j) > si THEN si = ABS(ai,j)
END DO
END DO
DO k = 1,n-1
CALL Pivot(a,o,s,n,k)
IF ABS(ao(k),k / so(k)) < tol THEN
er = -1
PRINT ao(k),k / so(k)
EXIT DO
END IF
DO i = k+1,n
Factor = ao(i)k / ao(k),k
ao(i),k = factor
DO j = k + 1,n
ao(i),j = ao(i),j – factor * ao(k),j
END DO
END DO
END DO
IF ABS(ao(k),k / so(k)) < tol THEN
Er = -1
PRINT ao(k),k / so(k)
END IF
END Decompose
SUB Pivot(a,o,s,n,k)
p = k
big = ABS(ao(k),k / so(k))
DO ii = k + 1,n
Dummy = ABS(ao(ii),k / so(ii))
IF dummy > big THEN
big = dummy
p = ii
END IF
END DO
dummy = op
op = ok
ok = dummy
END Pivot
SUB Substitute(a,o,n,b,x)
DO i =2,n
sum = bo(i)
DO j =1, i - 1
sum = sum - ao(i),j * bo(j)
END DO
bo(i) = sum
END DO
João Minas
FAC (DFUC) - 2001/2002
3/5
xn = bo(n) / ao(n),n
DO i = n – 1, 1, - 1
sum = 0
DO j = i + 1, n
sum = sum + ao(i)j * xj
END DO
xi = (bo(i) – sum) / ao(i),j
END DO
END Substitute
(as subrotinas Decompose e Substitute podem ser analisadas com maior detalhe na
bibliografia).
O esforço, em número de operações, necessário para este algoritmo pode ser
visto como:
 n3 n 
4n 3 n
-  + n n2 =

3
3
3
 3
( )
onde n representa o número de operações para completar a eliminação. A primeira
parcela representa o esforço para a decomposição LU e a segunda representa o
esforço para a substituição (cada substituição nos vectores unitários envolve n2
operações de multiplicar/dividir com virgula flutuante).
Este método é mais eficiente que o método da eliminação de Gauss-Jordan
porque o passo de eliminação deste último requere 50% mais operacoes.
Para além das aplicações em engenharia, a inversa pode indicar se um dado sistema
de equações é ou não mal-condicionado. Para este propósito existem três métodos:
Factorizam-se os elementos de [A], de modo a que o maior elemento em cada
linha seja 1. Inverte-se esta última matriz e se os elementos dessa matriz inversa,
forem superiores a 1 por várias ordens de grandeza, é muito provável que o sistema
seja mal-condicionado.
Multiplicar a matriz inversa pela sua original, ou seja, [A][A]-1 e verificar se a
matriz resultante é proxima de [I]. Se isso não acontecer o sistema é malcondicionado.
Inverter a matriz inversa e verificar se a matriz resultante é suficientemente
próxima da matriz original. Se não acontecer o sistema é mal-condicionado.
•
A - Sistemas de equações mal-condicionados
A solução de um dado sistema depende das condições do mesmo. Sistemas
bem-condicionados são aqueles onde uma pequena alteração em um ou mais
coeficientes resulta numa pequena alteração na solução. Pelo contrário, sistemas malcondicionados são aqueles onde pequenas alterações nos coeficientes resultam em
grandes mudancas na solução.
Uma interpretação alternativa para este tipo de sistemas é a de que um grande
e variado leque de soluções pode, aproximadamente, satifazer o sistema de equações.
Como os erros de arredondamento podem induzir pequenas alterações nos
coeficientes, então essas alterações podem provocar grandes erros nas soluções de
sistemas mal-condicionados.
Exemplo
João Minas
FAC (DFUC) - 2001/2002
4/5
Resolva o seguinte sistema:
x1 + 2x2 = 10
1,1x1 + 2x2 =10,4.
A seguir resolva o mesmo sistema mas desta vez com o coeficiente de x1, da segunda
equacão, alterado para 1,05.
Como o sistema só tem duas equacões podemos encontrar as duas solucões pelo
método da substituição, ou seja,
x1 =
2 (10) - 2 (10,4)
=4
1 (2) - 2 (1,1)
e
x2 =
1 (10,4) - 1,1 (10)
= 3.
1 (2) - 2 (1,1)
Se tentarmos resolver novamente o sistema, com o valor de x2 alterado para 1,05,
usando o mesmo método chegamos a:
x1 =
2 (10) - 2 (10,4)
=8
1 (2) - 2 (1,05)
e
x2 =
1 (10,4) - 1,1 (10)
= 1.
1 (2) - 2 (1,05)
Note-se que a razão principal para a discrepância entre os dois resultados é a de que o
denominador representa a subtracção de duas quantidades muito próximas, sendo este
tipo de operações muito susceptível a pequenas variações nas parcelas. A maior
dificuldade neste tipo de sistemas encontra-se na verificação das soluções. Se
tentarmos por substituição nas equações originais, obteremos para o exemplo:
8 + 2 (1) = 10 =10
1,1 (8) + 2 (1) = 10,8
≅ 10,4
Conclui-se:
- ser difícil chegar a uma conclusão suficientemente clara para a validar a técnica;
- surgirem erros (acumulação) no decorrer dos procedimentos.
João Minas
FAC (DFUC) - 2001/2002
5/5
Download

INVERSÃO DE MATRIZES