I
NVERSÃO DE
M
ATRIZES
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:
[A] = 7 2 3 2 5 3 1 1 6 − − − −
⇒ a matriz aumentada será
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: 1 0 0¦ 0,17188 0, 078125 0, 046875 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;
[A][A]-1 = 1 0 0 0 1 0 1E-12 0 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).
Utilizando a decomposição LU,determine a matriz inversa para a seguinte matriz: [A] = 3 0,1 0, 2 0,1 7 0, 3 0,3 0, 2 10 − − − − .
Por aplicação da decomposição obtemos,
[U] = 3 0,1 0, 2 0 7, 00333 0, 293333 0 0 10, 0120 − − − e [L] = 1 0 0 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, {d} = 1 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:
{x} = 0,33249 0, 00518 0, 01008 − − .
Repetindo este processo para as restantes colunas de [I] determinamos a matriz inversa de [A], ou seja;
[A]-1 = 0,33249 0, 004944 0, 006798 0, 00518 0,142903 0, 004183 0, 01008 0, 00271 0, 09988 − − .
Tentando novamente verificar (1), usando o Excel:
[A][A]-1 = 1 -1.73472E-18 1.38778E-17 2.1684E-18 1 0 -3.46945E-18 0 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.
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
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:
( )
3 3 2 n n 4n n - + n n = - 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 é mal-condicionado.
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 mal-condicionados 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.
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,
1 2
2 (10) - 2 (10,4) 1 (10,4) - 1,1 (10) x = = 4 e x = = 3
1 (2) - 2 (1,1) 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:
1 2
2 (10) - 2 (10,4) 1 (10,4) - 1,1 (10) x = = 8 e x = = 1
1 (2) - 2 (1,05) 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: