Cap 3 Eliminacao de Gauss e LDU

May 14, 2018 | Author: Anonymous JDWNC4ZDMU | Category: Equations, Matrix (Mathematics), System Of Linear Equations, Mathematical Concepts, Algebra


Comments



Description

IT600 – Análise matricial de sistemas de energia elétrica1 Semestre 2011 Capı́tulo 3 – Eliminação de Gauss e decomposição LDU 3.1 Introdução ◮ Os princı́pios básicos das chamadas técnicas de esparsidade são:  minimizar a quantidade de dados armazenados  MINIMIZAR O NÚMERO DE OPERAÇÕES REALIZADAS  PRESERVAR A ESPARSIDADE 3.2 Resolução de sistemas de equações algébricas lineares 3.2.1 Método direto – inversão da matriz A ◮ Considerar o seguinte sistema de equações algébricas lineares colocado na forma matricial: A·x =b em que:     10 1 2 1  2 9 2 1   2       1 8 1   3  A=  1  e b=   9 2     2    2 2 10 1   1  1 1 9 2 –1– Como A tem inversa, a solução é única e dada por: x = A−1 · b     0,1052 −0,0135 0,0035 −0,0248 0,0064 −0,0011 1  −0,0250 0,1205 −0,0307 0,0087 −0,0143 0,0050   2       0,0033 −0,0156 0,1308 −0,0015 0,0033 −0,0149   3  = −0,0134 0,0073 −0,0022 0,1196 −0,0250 0,0030  ·  2          0,0078 −0,0260 0,0081 −0,0260 0,1091 −0,0130   1  −0,0012 0,0046 −0,0154 0,0030 −0,0125 0,1142 2   0,0433  0,1369     0,3349  =   0,2149     0,0113  0,1838 ◮ Obter a inversa da matriz A e multiplicá-la pelo vetor b são tarefas simples de serem realizadas, mesmo que a matriz A esteja armazenada de forma compacta. Problema: a matriz A−1 é cheia. Do ponto de vista de espaço de memória, não é van- tajoso armazená-la utilizando os esquemas de armazenamento compacto. –2– 3.2.2 Método direto – substituição de variáveis ◮ Considerar o seguinte sistema de equações algébricas lineares:   3x1 − 2x2 − x3 = 0 −2x1 + 2x2 − x3 = −1  −x1 − x2 + 3x3 = 1 ◮ A solução pode ser obtida, como mostrado na seção 3.2.1, através de:       3 −2 −1 x1 0  −2 2 −1  ·  x2  =  −1  −1 −1 3 x3 1    −1   x1 3 −2 −1 0  x2  =  −2 2 −1  ·  −1  x3 −1 −1 3 1     −5/3 −7/3 −4/3 0 =  −7/3 −8/3 −5/3  ·  −1  −4/3 −5/3 −2/3 1   1 = 1  1 –3– ◮ Outra maneira de resolver o sistema de equações é através da eliminação de variáveis nas equações. Reescrevendo a primeira equação: 2 1 x1 = x2 + x3 3 3 e substituindo na segunda e terceira equações:   3x1 − 2x2 − x3 = 0 2 5  3 x2 − 3 x3 = −1 − 35 x2 + 83 x3 = 1 ◮ As duas últimas equações não dependem mais de x1 . Reescrevendo a segunda equação: 5 3 x2 = x3 − 2 2 e substituindo na terceira equação:   3x1 − 2x2 − x3 = 0 2 5  3 x2 − 3 x3 = −1 − 23 x3 = − 23 ◮ A última equação agora só depende de x3 . A sequência de cálculos envolvendo eliminação de variáveis e que resulta em uma última equação contendo apenas uma variável (cuja resolução é trivial) é chamada de Substituição Forward –4– ◮ Colocando o sistema de equações na forma matricial tem-se:       3 −2 −1 x1 0  0 2/3 −5/3  ·  x2  =  −1  0 0 −3/2 x3 −3/2 ou seja, os elementos do triângulo inferior da matriz de coeficientes foram tornados iguais zero. ◮ Resolvendo a terceira equação: x3 = 1 ◮ Substituindo o valor de x3 nas duas primeiras equações:   3x1 − 2x2 = 1 2 3 x2 = 23  x3 = 1 ◮ Agora a segunda equação só depende de x2. Resolvendo a segunda equação: x2 = 1 –5– ◮ Substituindo o valor de x2 na primeira equação:   3x1 = 3 x = 1  2 x3 = 1 ◮ Agora a primeira equação só depende de x1. Resolvendo a primeira equação: x1 = 1 ◮ A sequência de cálculos envolvendo a substituição das variáveis já calculadas nas demais equações e que resulta na obtenção da solução (uma variável por vez) é chamada de Substituição Backward (ou Back) ◮ A solução do problema é:   x1 = 1 x2 = 1  x3 = 1 ou, na forma matricial:       1 0 0 x1 1  0 1 0  ·  x2  =  1  0 0 1 x3 1 ou seja, os elementos do triângulo superior da matriz de coeficientes foram tornados iguais zero. –6– ◮ Nota-se que, na solução, a matriz de coeficientes A transformou-se na matriz identidade. Além disso, o vetor independente transformou-se no vetor solução. 3.2.3 Método direto – eliminação de Gauss ◮ O procedimento baseado em substituição de variávies pode também ser encarado sob outro ponto de vista. Repetindo o sistema de equações original:   3x1 − 2x2 − x3 = 0 −2x1 + 2x2 − x3 = −1  −x1 − x2 + 3x3 = 1 ◮ A eliminação de x1 da segunda e terceira equações pode ser conseguida através da definição de combinações lineares apropriadas entre as equações. Neste caso, as combinações são as seguintes:   2 Linha 2 ← · Linha 1 + Linha 2 3   1 Linha 3 ← · Linha 1 + Linha 3 3 ◮ As operações entre as equações definidas acima resultam em:   3x1 − 2x2 − x3 = 0 2 3 x2 − 53 x3 = −1  − 35 x2 + 83 x3 = 1 que já foi obtido anteriormente. ◮ A eliminação de x2 da terceira equação pode ser conseguida através da seguinte combinação linear:   5 Linha 3 ← · Linha 2 + Linha 3 2 –7– ◮ A operação definida acima resulta em:   3x1 − 2x2 − x3 = 0 2 3 x2 − 53 x3 = −1  − 23 x3 = − 23 que também já foi obtida anteriormente. Novamente, a terceira equação só depende de x3 e sua solução é trivial. Até aqui foi realizada a substituição Forward, e os elementos do triângulo inferior da matriz de coeficientes foram tornados iguais a zero. ◮ Obtém-se o valor de x3 através de:   2 Linha 3 ← − · Linha 3 3 Esta operação corresponde a tornar o coeficiente de x3 igual a 1. Pode-se também realizar o mesmo tipo de operação para a primeira e segunda equações, tornando iguais a 1 os coeficientes de x1 na primeira equação e x2 na segunda equação:   1 Linha 1 ← · Linha 1 3   3 Linha 2 ← · Linha 2 2 O sistema de equações resultante é:  2 1  x1 − 3 x2 − 3 x3 = 0 x2 − 52 x3 = − 23  x3 = 1 Em geral, considera-se que as operações descritas acima (tornar alguns coeficientes iguais a 1) também fazem parte da substituição Forward. –8– ◮ A substituição Back é realizada fazendo-se as seguintes operações entre as equações:   5 Linha 2 ← · Linha 3 + Linha 2 2   1 Linha 1 ← · Linha 3 + Linha 1 3  2 1  x1 − 3 x2 = 3 x2 = 1  x3 = 1   2 Linha 1 ← · Linha 2 + Linha 1 3   x1 = 1 x2 = 1  x3 = 1 ◮ Pode-se notar que, após a substituição Back, os elementos do triângulo superior foram tornados iguais a zero, e a matriz dos coeficientes A transformou-se na matriz identidade. Além disso, o vetor independente transformou-se no vetor solução. Conclusão: os cálculos envolvendo a substituição de variáveis e eliminação de Gauss resultaram na solução do problema sem que tenha sido necessário inverter a matriz de coeficientes (como feito na resolução direta). –9– ◮ Pode-se resolver um problema do tipo: A·x =b através da eliminação de Gauss partindo-se de uma matriz aumentada contendo A e b e obtendo-se uma nova matriz aumentada que contém a solução x : [A | b] ⇓ [I | x ] em que I é a matriz identidade. ◮ Para a obtenção de I a partir de A deve-se realizar operações (combinações lineares) entre as linhas de A, de forma a: Passo 1 tornar todos os elementos do triângulo inferior de A iguais a 0; Passo 2 tornar todos os elementos da diagonal de A iguais a 1; Passo 3 tornar todos os elementos do triângulo superior de A iguais a 0. As operações acima serão aplicadas também sobre o vetor b, que resultará na solução x . ◮ Os passos 1 e 2 correspondem à substituição Forward do processo de eliminação de variáveis descrito anteriormente. O passo 3 corresponde à substituição Back. – 10 – 3.2.4 Pivoteamento ◮ Considere o seguinte sistema de equações lineares:      10−10 1 x1 1 = 2 1 x2 5 cuja solução, por inspeção, é x ≈ [2 1]. ◮ Resolvendo o problema por eliminação de Gauss tem-se:   10−10 1  1  0 −2 · 1010 + 1 −2 · 1010 + 5   1 1010 10  10  0 1 −2 · 1010 + 5 / −2 · 1010 + 1      1 0 −2 · 1010 + 5 / −2 · 1010 + 1 · −1010  + 10 10 0 1 −2 · 1010 + 5 / −2 · 1010 + 1 ou seja:   0 x≈ 1 que não corresponde à solução correta. Problema: o termo 10−10 é praticamente igual a zero para a maioria dos computadores. – 11 – ◮ Considere agora que o sistema de equações seja rearranjado como:      2 1 x1 5 −10 = 10 1 x2 1 ◮ Resolvendo o problema por eliminação de Gauss tem-se:   2 1  5  0 −1/2 · 10−10 + 1 −5/2 · 10−10 + 1   1 1/2 5/2   0 1 −5/2 · 10−10 + 1 / −1/2 · 10−10 + 1    1 0 5/2 − 1/2 · −5/2 · 10−10  + 1 / −1/2 · 10 −10  + 1 0 1 −5/2 · 10−10 + 1 / −1/2 · 10−10 + 1 ou seja:   2 x≈ 1 ◮ O rearranjo acima é chamado pivoteamento, que consiste em manter os maiores elementos da matriz na diagonal durante a substituição forward. Note que foi feita uma troca entre as linhas do sistema de equações. Este tipo de pivoteamento é chamado parcial. O pivoteamento completo consiste em realizar trocas de linhas e colunas. – 12 – 3.2.5 Métodos iterativos ◮ Considere um sistema de n equações algébricas lineares A · x = b Tomando a linha i da equação matricial acima: i i Ai i xi bi . = A x b n X A i j xj = bi i = 1, . . . , n j=1 n X Ai i xi + A i j xj = bi i = 1, . . . , n j=1,j6=i Resolvendo para xi tem-se: n ! 1 X xi = · bi − Ai j xj i = 1, . . . , n Ai i j=1,j6=i – 13 – ◮ Nota-se que:  Cada incógnita xi pode ser escrita em função das demais.  Isto pode sugerir um processo iterativo do tipo: • Arbitre valores iniciais para xi0, i = 1, . . . , n. • Substitua os valores de xi0 no termo do lado direito da equação e calcule os novos valores de xi1 (lado esquerdo da equação). • Substitua os valores de xi1 no termo do lado direito da equação e calcule os novos valores de xi2 (lado esquerdo da equação). • ··· que pára quando os valores de xi convergirem para a solução ◮ O processo iterativo implica na existência de uma seqüência de valores para as incógnitas, começando por valores iniciais arbitrados: xi0 → xi1 → xi2 · · · enquanto que no método de Eliminação de Gauss mostrado anteriormente o vetor solução é obtido em um só passo. – 14 – ◮ Para uma iteração (m + 1), o processo iterativo pode ser definido como: n ! (m+1) 1 X (m) xi = · bi − Ai j xj i = 1, . . . , n Ai i j=1,j6=i Método de Gauss-Jacobi Para a obtenção de xi(m+1) são utilizados os valores de xi(m) (todos os valores da iteração anterior) Uma forma alternativa para o processo iterativo é: i −1 n ! 1 X X xi(m+1) = · bi − Ai j xj(m+1) − Ai j xj(m) i = 1, . . . , n Ai i j=1 j=i +1 Método de Gauss-Seidel (m+1) Para a obtenção de xi são utilizados os valores mais recentes disponı́veis dos elementos do vetor x – 15 –  Exemplo Processo iterativo utilizando os métodos de Gauss-Jacobi e Gauss-Seidel para n = 3: Gauss-Jacobi 1 h  i (m+1) (m) (m) x1 = · b1 − +A12x2 A13x3 A11 1 h  i (m+1) (m) (m) x2 = · b2 − A21x1 + A23x3 A22 1 h  i x3(m+1) = (m) (m) · b3 − A31x1 + A32x2 A33 Gauss-Seidel 1 h  i x1(m+1) = · b1 − +A12x2(m) A13x3(m) A11 1 h  i (m+1) (m+1) (m) x2 = · b2 − A21x1 + A23x3 A22 1 h  i (m+1) (m+1) (m+1) x3 = · b3 − A31x1 + A32x2 A33  – 16 – ◮ A ideia geral desses métodos iterativos é converter o sistema de equações: A·x =b em: x = C · x + g = ϕ (x ) em que C é uma matriz (n × n), g é um vetor (n × 1) e ϕ (x) é uma função de iteração matricial. ◮ A formulação acima sugere um processo iterativo. No caso do método de Gauss-Jacobi, tem-se a seguinte expressão geral para o processo iterativo:   (k+1) (k) (k) x =C·x +g =ϕ x ◮ A matriz A pode ser colocada na forma: A=L+D+U em que L é uma matriz que contém os elementos abaixo da diagonal (Lower triangle) de A, D é uma matriz que contém os elementos da diagonal de A, e U é uma matriz que contém os elementos acima da diagonal (Upper triangle) de A. Então, a equação de Gauss-Jacobi pode ser escrita na forma matricial como: x (k+1) = D−1 b − D−1 (L + U) x (k) – 17 – ◮ A convergência pode ser acelerada através da utilização de parâmetros de aceleração. O método mais popular é o chamado método SOR (successive overrelaxation). Para o método Gauss-Seidel: i −1 n ! (m+1) 1 X (m+1) X (m) zi = · bi − Ai j xj − Ai j xj i = 1, . . . , n Ai i j=1 j=i +1 (m+1) (m+1) (m) xi = ωzi + (1 − ω)xi i = 1, . . . , n ◮ Para ω = 1, tem-se o método Gauss-Seidel sem aceleração. ◮ A aceleração corresponde a uma extrapolação:   (m+1) (m) (m+1) (m) x =x +ω· z −x = x (m) + ω · ∆x x (m+1) z (m+1) x (m) ∆x ω · ∆x – 18 – ◮ Para cada problema existe um ω ótimo, mas para a maioria dos problemas práticos, valores aproximados (empı́ricos) são escolhidos. ◮ Outro método iterativo comumente usado é o do gradiente conjugado. Este método consiste na minimização da função: E (x) = kA x − b k2 ◮ Uma caracterı́stica interessante do método é que garante-se que a convergência ocorrerá em no máximo n iterações (n é a dimensão de A), caso A seja definida positiva. ◮ Algoritmo:  Inicialização: k =1 r0 = A x0 − b ρ0 = −AT r 0  Enquanto kr k k ≥ ε: αk+1 = kAT r k k2/kAρk k2 x k+1 = x k + αk+1 ρk r k = A x k+1 − b Bk+1 = kAT r k+1 k2 /kAT r k k2 ρk+1 = −AT r k+1 + Bk+1 ρk k =k +1 – 19 – 3.3 Eliminação de Gauss e decomposição LDU ◮ Considerar novamente a matriz A do exemplo anterior:   10 1 2  2 9 2 1     1 8 1  A=  1   9 2    2 2 10 1  1 1 9 A matriz aumentada é:   10 1 2 1  2 9 2 1 2     1 8 1 3  [A | b] =   1   9 2 2    2 2 10 1 1  1 1 9 2 ◮ O processo de eliminação de Gauss é iniciado com o passo 1 (tornar todos os elementos do triângulo inferior de A iguais a 0) – 20 – A primeira posição a ser zerada é a posição (2,1) (A2,1 = 2)   10 1 2 1  2 9 2  1 2     1 8 1 3    1 9 2 2  linha 2 ← linha 1 × (−2/10) + linha 2    2 2 10 1 1  1 1 9 2   10,0000 1,0000 0 2,0000 0 0 1,0000   0 8,8000 2,0000 -0,4000 1,0000 0 1,8000     0 1,0000 8,0000 0 0 1,0000 3,0000     1,0000 0 0 9,0000 2,0000 0 2,0000    0 2,0000 0 2,0000 10,0000 1,0000 1,0000  0 0 1,0000 0 1,0000 9,0000 2,0000 ◮ Observações:  A2,1 = 0  A2,4 6= 0 (essa posição era originalmente igual a zero) Estes novos elementos não nulos que aparecem em posições originalmente nulas devido às operações realizadas são chamados de fill-ins  todos os esquemas de armazenamento compacto de matrizes devem prever um espaço de memória adicional para levar em conta o possı́vel aparecimento de fill-ins: MAX = NB + 2 · NR + folga – 21 –  a operação realizada equivale a premultiplicar a matriz aumentada por uma matriz L1 tal que a matriz resultante tenha A2,1 = 0:   1  α2,1 1     1  L1 =   α2,1 = −A2,1 /A1,1 = −2/10   1    1  1 [A1 | b1 ] = L1 · [A | b] α2,1 é chamado de fator triangular Observar que a coluna da matriz aumentada correspondente ao vetor b foi alterada na posição 2, resultando no vetor b1 : b2 ← b1 · α2,1 + b2 – 22 – ◮ O próximo passo é zerar a posição (4,1) (A4,1 = 1). Para isso, a seguinte operação é realizada: linha 4 ← linha 1 × (−1/10) + linha 4 e o resultado é:   10,0000 1,0000 0 2,0000 0 0 1,0000   0 8,8000 2,0000 −0,4000 1,0000 0 1,8000     0 1,0000 8,0000 0 0 1,0000 3,0000     0 -0,1000 0 8,8000 2,0000 0 1,9000    0 2,0000 0 2,0000 10,0000 1,0000 1,0000  0 0 1,0000 0 1,0000 9,0000 2,0000 Nota-se que um novo fill-in apareceu na posição correspondente a A4,2 e que a posição correspondente a b4 foi alterada ◮ O processo continua até que todo o triângulo inferior de A tenha sido zerado:   10,0000 1,0000 0 2,0000 0 0 1,0000  0 8,8000 2,0000 -0,4000 1,0000 0 1,8000      0 0 7,7727 0,0455 -0,1136 1,0000 2,7955     0 0 0 8,7953 2,0117 -0,0029 1,9123     0 0 0 0 9,2872 1,0592 0,2992  0 0 0 0 0 8,7555 1,6089 Os elementos marcados correspondem a posições que eram originalmente iguais a zero. – 23 – ◮ O passo 2 corresponde a tornar todos os elementos da diagonal de A iguais a 1. Para tornar o elemento A1,1 igual a 1, deve-se realizar a seguinte operação: linha 1 ← linha 1 × (1/10) ou, da mesma forma, premultiplicar a matriz aumentada por uma matriz D1 tal que a matriz resultante tenha A1,1 = 1:   α1,1   1    1  D1 =   α1,1 = 1/A1,1 = 1/10   1    1  1 ◮ Realizando essas operações para todas as linhas, obtém-se finalmente:   1,0000 0,1000 0 0,2000 0 0 0,1000   0 1,0000 0,2273 −0,0455 0,1136 0 0,2045     0 0 1,0000 0,0058 −0,0146 0,1287 0,3596     0 0 0 1,0000 0,2287 −0,0003 0,2174    0 0 0 0 1,0000 0,1140 0,0322  0 0 0 0 0 1,0000 0,1838 – 24 – ◮ O passo 3 consiste em zerar todos os elementos do triângulo superior de A. Começando pelo elemento A5,6 = 0,1140, deve-se realizar a seguinte operação: linha 5 ← linha 6 × (−0,1140) + linha 5 ou, da mesma forma, premultiplicar a matriz aumentada por uma matriz U1 tal que a matriz resultante tenha A5,6 = 0:   1   1    1  U1 =   α5,6 = −A5,6 = −0,1140   1    1 α5,6  1 O resultado da operação é:   1,0000 0,1000 0 0,2000 0 0 0,1000   0 1,0000 0,2273 −0,0455 0,1136 0 0,2045     0 0 1,0000 0,0058 −0,0146 0,1287 0,3596     0 0 0 1,0000 0,2287 −0,0003 0,2174    0 0 0 0 1,0000 0 0,0113  0 0 0 0 0 1,0000 0,1838 ◮ Repetindo o procedimento para todos os elementos não nulos do triângulo superior de A chega-se a:   1,0000 0 0 0 0 0 0,0433   0 1,0000 0 0 0 0 0,1369     0 0 1,0000 0 0 0 0,3349     0 0 0 1,0000 0 0 0,2149    0 0 0 0 1,0000 0 0,0113  0 0 0 0 0 1,0000 0,1838 | {z } x – 25 – ◮ Todos os valores de α ao longo do processo de eliminação de Gauss são chamados de fatores triangulares. O processo de obtenção dos valores de α também é chamado de fatoração triangular ◮ No caso da matriz A do exemplo, o processo de fatoração resultou em 8 fill-ins (oito elementos adicionais que devem ser armazenados) ◮ Idéia: armazenar os fatores triangulares (α) nas posições correspondentes aos elementos que se desejou zerar ou tornar iguais a 1:   0,1000 −0,1000 0 −0,2000 0 0   −0,2000 0,1136 −0,2273 0,0455 −0,1136 0    0 −0,1136 0,1287 −0,0058 0,0146 −0,1287  A=    −0,1000 0,0114 −0,0029 0,1137 −0,2287 0,0003    0 −0,2273 0,0585 −0,2380 0,1077 −0,1140  0 0 −0,1287 0,0007 −0,1094 0,1142 Conhecendo-se os fatores triangulares e a ordem em que eles devem ser utilizados, pode-se repetir as operações para vários vetores b – 26 – ◮ Existem dois esquemas básicos de fatoração triangular para se zerar os elementos dos triângulos inferior e superior da matriz:  Fatoração por colunas: Zerar triângulo Colunas Linhas inferior esquerda → direita cima → baixo superior direita → esquerda baixo → cima – 27 –  Fatoração por linhas: Zerar triângulo Linhas Colunas inferior cima → baixo esquerda → direita superior baixo → cima direita → esquerda A sequência das operações é importante pois uma operação não deve criar elementos não nulos em posições que foram zeradas em operações anteriores. Tipicamente a substituição forward (zerar triângulo inferior) é feita por colunas e a substituição back (zerar triângulo superior) é feita por linhas. – 28 – ◮ Resumo das operações (combinações lineares) realizadas para transformar A em I na matriz aumentada: (U11 · U10 · . . . · U2 · U1) · (D6 · . . . · D1 ) · (L11 · L10 · . . . · L2 · L1 ) · A = I As matrizes L1 → U11 são chamadas de matrizes elementares. ◮ As mesmas operações são realizadas para transformar b em x: (U11 · U10 · . . . · U2 · U1 ) · (D6 · . . . · D1 ) · (L11 · L10 · . . . · L2 · L1 ) · b = x Logo: A = [(U11 · U10 · . . . · U2 · U1) · (D6 · . . . · D1 ) · (L11 · L10 · . . . · L2 · L1 )]−1 ou:   A = L1−1 · L2−1 · . . . · L10−1 · L11−1 · D1 −1 · . . . · D6 −1 ·  U1−1 · U2−1 · . . . · U10−1 · U11−1 =L·D·U Este processo também é chamado de decomposição (ou fatoração) LDU da matriz A:  L é uma matriz triangular inferior (Lower triangular) – o triângulo inferior tem elementos não nulos e os elementos da diagonal são iguais a 1  D é uma matriz diagonal – somente a diagonal tem elementos não nulos  U é uma matriz triangular superior (Upper triangular) – o triângulo superior tem elementos não nulos e os elementos da diagonal são iguais a 1 – 29 – ◮ A matriz L é igual a: L = L1 −1 · L2 −1 · L3 −1 · L4−1 · L5−1 · L6−1 · L7−1 · L8 −1 · L9 −1 · L10−1 · L11−1   1,0000 0 0 0 0 0  0,2000 1,0000 0 0 0 0    0 0,1136 1,0000 0 0 0  =    0,1000 −0,0114 0,0029 1,0000 0 0    0 0,2273 −0,0585 0,2380 1,0000 0 0 0 0,1287 −0,0007 0,1094 1,0000 Os elementos do triângulo inferior correspondem ao negativo dos fatores triangulares α obtidos anteriormente. ◮ Notar que:  −1   1 1  1 0   1 0  −1     Lk = ...  = ...  α   −α  1 1 ◮ A matriz D é igual a: D = D1 −1 · D2 −1 · D3 −1 · D4 −1 · D5−1 · D6 −1   10,0000 0 0 0 0 0   0 8,8000 0 0 0 0  0 0 7,7727 0 0 0  =    0 0 0 8,7953 0 0  0 0 0 0 9,2872 0 0 0 0 0 0 8,7555 Os elementos da diagonal correspondem ao inverso dos fatores triangulares α obtidos anteriormente. – 30 – ◮ Notar que:  −1   α 1/α  1 0   1 0  −1     Dk = = 0 ... 0 ...       1 1 ◮ A matriz U é igual a: U = U1 −1 · U2−1 · U3−1 · U4−1 · U5−1 · U6−1 · U7−1 · U8−1 · U9 −1 · U10−1 · U11−1   1,0000 0,1000 0 0,2000 0 0   0 1,0000 0,2273 −0,0455 0,1136 0  0 0 1,0000 0,0058 −0,0146 0,1287  =    0 0 0 1,0000 0,2287 −0,0003    0 0 0 0 1,0000 0,1140  0 0 0 0 0 1,0000 Os elementos do triângulo superior correspondem ao negativo dos fatores triangulares α obtidos anteriormente. ◮ Notar que:  −1   1 1  1 α  1 −α  −1     Uk = . .  = . .   0 .   0 .  1 1 – 31 – ◮ Normalmente a matriz D é incorporada a L (L ← L · D): A=L·U No caso da matriz A do exemplo: L=L·D   10,0000 0 0 0 0 0  0,2000 8,8000 0 0 0 0    0 0,1136 7,7727 0 0 0  =  0,1000 −0,0114 0,0029 8,7953   0 0    0 0,2273 −0,0585 0,2380 9,2872 0 0 0 0,1287 −0,0007 0,1094 8,7555 ◮ A solução é dada por: x = A−1 · b = (L · U)−1 · b = U−1 · L−1 · b ou w = L−1 · b Substituição Forward x = U−1 · w Substituição Back ◮ A fatoração LDU não preserva a esparsidade original da matriz, já que fill-ins são criados ao longo do processo. Existem várias técnicas propostas para minimizar o número de fill-ins gerados (algumas serão vistas adiante). Elas se baseiam na reordenação das linhas e colunas da matriz. – 32 – ◮ Procedimento geral:  armazenar a matriz A utilizando algum esquema de armazenamento compacto  reordenar linhas e colunas de A de forma a minimizar o número de fill-ins gerados  obter os fatores triangulares  realizar substituição Forward  realizar substituição Back → SOLUÇÃO – 33 – 3.4 Bifatoração ◮ Procedimento desenvolvido por Zollenkopf ◮ É particularmente interessante no caso de matrizes estruturalmente simétricas1 ◮ Considerando um sistema de n equações algébricas lineares dado por A · x = b, a bifatoração pode ser representada por: L(n) L(n−1) · · · L(2) L(1) AR(1)R(2) · · · R(n−1)R(n) = I em que: L são as matrizes de fatores à esquerda, R são as matrizes de fatores à direita e I é a matriz identidade ◮ Logo: A−1 = R(1)R(2) · · · R(n−1)R(n) L(n) L(n−1) · · · L(2)L(1) ◮ O processo de obtenção das matrizes de fatores à esquerda e à direita é dado por: A(0) = A A(1) = L(1)A(0)R(1) A(2) = L(2)A(1)R(2) ··· ··· A(n) = L(n) A(n−1)R(n) = I 1 Denominamos aqui uma matriz A de estruturalmente simétrica caso Ai j e Aj i sejam simultaneamente iguais a zero ou diferentes de zero. – 34 –  Exemplo Considere a seguinte matriz:   10 2 3 A= 3 8 1 1 3 15 Inicialmente, serão obtidos os fatores triangulares através da decomposição LDU:   1 0 0 L1 =  −3/10 1 0  −1/10 0 1   10 2 3 A = L1 · A =  0 37/5 1/10  0 14/5 147/10   1 0 0 L2 =  0 1 0 0 −14/37 1   10 2 3 A = L2 · A =  0 37/5 1/10  0 0 1085/74   1/10 0 0 D= 0 5/37 0 0 0 74/1085   1 1/5 3/10 A=D·A=  0 1 1/74  0 0 1 – 35 –   1 0 −3/10 U3 =  0 1 −1/74  0 0 1   1 1/5 0 A = U3 · A =  0 1 0 0 0 1   1 −1/5 0 U2 =  0 1 0 0 0 1   1 0 0 A = U3 · A =  0 1 0  0 0 1 Agrupando os fatores triangulares:   1/10 −1/5 −3/10 FT =  −3/10 5/37 −1/74  −1/10 −14/37 74/1085 O processo de bifatoração é:     1/10 0 0 1 −1/5 −3/10 L1 =  −3/10 1 0  R1 =  0 1 0 −1/10 0 1 0 0 1   1 0 0 A = L1 · A · R1 =  0 37/5 1/10  0 14/5 147/10 – 36 –     1 0 0 1 0 0 L2 =  0 5/37 0  R2 =  0 1 −1/74  0 −14/37 1 0 0 1   1 0 0 A = L2 · A · R2 =  0 1 0 0 0 1085/74     1 0 0 1 0 0 L3 =  0 1 0 R3 =  0 1 0  0 0 74/1085 0 0 1   1 0 0 A = L3 · A · R3 =  0 1 0  0 0 1 Agrupando os fatores triangulares:   1/10 −1/5 −3/10 FT =  −3/10 5/37 −1/74  −1/10 −14/37 74/1085 Portanto, os fatores triangulares são os mesmos, porém, obtidos em uma sequência diferente.  – 37 – ◮ Na bifatoração, a obtenção dos fatores triangulares é feita por colunas para o triângulo inferior e por linhas para o triângulo superior. ◮ Toda a metodologia proposta por Zollenkopf tem por base a bifatoração, portanto, a estrutura de armazenamento compacto leva em conta esse processo. Além disso, a substituição forward é realizada por colunas, enquanto que a substituição back é realizada por linhas. – 38 – 3.5 Eliminação de Gauss e redução de circuitos ◮ Considerar o seguinte circuito de 6 barras e 7 ramos: 3 2 1 6 4 5 ◮ Considerando que todos os ramos do circuito tenham admitâncias série iguais a 1 pu, a matriz admitância nodal fica:   2 0 −1 −1 0 0   0 2 −1 0 0 −1    −1 −1 3 0 −1 0  Y=    −1 0 0 2 −1 0    0 0 −1 −1 3 −1  0 −1 0 0 −1 ∞ A matriz Y tem dimensão [6 × 6] (rede tem 6 nós). Como o nó 6 foi definido como sendo o nó de referência, atribuiu-se ao elemento da diagonal Y66 um valor grande. – 39 – ◮ Considerar o seguinte vetor das injeções de corrente nodais:   1   1    1  I=    1    1  X em que a posição 6 se refere à injeção de corrente no nó de referência. ◮ O processo de eliminação de Gauss começa tornando nulos os elementos do triângulo inferior de Y. Para zerar os elementos não nulos da primeira coluna, deve-se premultiplicar a matriz Y por:   1 0 0 0 0 0   0 1 0 0 0 0    1/2 0 1 0 0 0  L1 =     1/2 0 0 1 0 0    0 0 0 0 1 0  0 0 0 0 0 1 Logo: Y 1 = L1 · Y   2 0 −1 −1 0 0 0 2 −1 0 0 −1     0 −1 5/2 - 1/2 −1 0    =   0 0 - 1/2 3/2 −1 0    0 0 −1 −1 3 −1  0 −1 0 0 −1 ∞ Nota-se o aparecimento de dois fill-ins nas posições Y34 e Y43. – 40 – ◮ Como a primeira coluna (correspondente ao nó 1) foi zerada, considerar agora somente as colunas 2 → 6 da matriz Y1:   2 0 −1 −1 0 0   0 2 −1 0 0 −1    0 −1 5/2 −1/2 −1 0  Y1′ =     0 0 −1/2 3/2 −1 0    0 0 −1 −1 3 −1  0 −1 0 0 −1 ∞ ◮ A construção da rede a partir de Y1′ resulta em: nó eliminado 3 2 1 ramo fictı́cio criado 6 4 5 ◮ Considerações:  Zerar a primeira coluna de Y corresponde a eliminar o nó 1 do circuito  A eliminação da coluna 1 resulta no aparecimento de 2 fill-ins  Os fill-ins correspondem ao aparecimento de um ramo fictı́cio. Como o nó 1 era conectado aos nós 3 e 4, o ramo fictı́cio conecta os nós 3 e 4 → fill-ins nas posições (3,4) e (4,3) de Y  A admitância do ramo fictı́cio do exemplo é igual a 1/2 pu, que corresponde à associação em série dos ramos 1-3 e 1-4: y13 · y14 1 y34 = = pu y13 + y14 2 – 41 – ◮ Aplicando a matriz L1 ao vetor de correntes tem-se: I1 = L1 · I   1  1    3/2  = 3/2      1 X ou seja, a injeção do nó 1 é distribuı́da entre os nós 3 e 4, que são diretamente conectados a ele. A forma como se dá essa distribuição é função dos valores das admitâncias conectadas ao nó 1. Pode-se também eliminar a linha de I1 correspondente ao nó 1, resultando em:   1   1    3/2  I1′ =     3/2    1  X ◮ Para a eliminação do nó 2, a seguinte matriz elementar é definida:   1 0 0 0 0 0   0 1 0 0 0 0    0 1/2 1 0 0 0  L2 =     0 0 0 1 0 0    0 0 0 0 1 0  0 1/2 0 0 0 1 – 42 – A nova matriz admitância nodal é: Y2 = L2 · Y1′   2 0 −1 −1 0 0  0 2 −1 0 0 −1    0 0 2 −1/2 −1 -1/2    =   0 0 −1/2 3/2 −1 0    0 0 −1 −1 3 −1  0 0 -1/2 0 −1 ∞ Nota-se o aparecimento de dois fill-ins nas posições Y26 e Y62. ◮ Eliminando a linha e a coluna 2 de Y2 (que corresponde ao nó 2):   2 0 −1 −1 0 0   0 2 −1 0 0 −1  ′  0 0 2 −1/2 −1 −1/2  Y2 =     0 0 −1/2 3/2 −1 0  0 0 −1 −1 3 −1  0 0 −1/2 0 −1 ∞ ◮ Reconstruindo o circuito a partir de Y2′ : nó eliminado nó eliminado 3 2 1 ramo fictı́cio ramo fictı́cio criado criado 6 4 5 – 43 – ◮ Considerações:  Zerar a segunda coluna de Y corresponde a eliminar o nó 2 do circuito  A eliminação da coluna 2 resulta no aparecimento de 2 fill-ins  Novamente aparece um ramo fictı́cio. Como o nó 2 era conectado aos nós 3 e 6, o ramo fictı́cio conecta os nós 3 e 6  A admitância do ramo fictı́cio do exemplo é igual a 1/2 pu, que corresponde à associação em série dos ramos 2-3 e 2-6: y23 · y26 1 y36 = = pu y23 + y26 2  Se a linha e a coluna correspondentes ao nó de referência não estivessem representadas na matriz Y, o aparecimento de certos fill-ins só será notado através da mudança dos valores de elementos da diagonal. ◮ Aplicando a matriz L2 ao vetor de correntes tem-se: I2 = L2 · I1′   1   1  2  =    3/2    1 (X + 1/2) ou seja, a injeção do nó 2 é distribuı́da entre os nós 3 e 6, que são diretamente conectados a ele. Pode-se também eliminar a linha de I2 correspondente ao nó 2, resultando em:   1   1    2  I2′ =     3/2    1  (X + 1/2) – 44 – ◮ Após a eliminação do nó 3:   2 0 −1 −1 0 0   0 2 −1 0 0 −1    0 0 2 −1/2 −1 −1/2  Y3′ =     0 0 0 11/8 −5/4 −1/8    0 0 0 −5/4 5/2 −5/4  0 0 0 −1/8 −5/4 ∞   1   1    2  I3′ =     2    2  (X + 1) nó eliminado nó eliminado nó eliminado 3 2 1 6 4 5 ramo fictı́cio criado O ramo fictı́cio tem uma admitância igual a 1/8 pu. Os elementos da matriz que correspondem aos ramos 4-5 e 5-6 (que já existiam) tiveram seus valores alterados. Após a eliminação do nó 3, todos os seus ramos vizinhos (4, 5 e 6) passaram a estar conectados entre si. – 45 – ◮ Após a eliminação do nó 4:   2 0 −1 −1 0 0   0 2 −1 0 0 −1    0 0 2 −1/2 −1 −1/2  Y4′ =     0 0 0 11/8 −5/4 −1/8    0 0 0 0 15/11 −15/11  0 0 0 0 −15/11 ∞   1   1    2  I4′ =     2    42/11  (X + 13/11) nó eliminado nó eliminado nó eliminado 3 2 1 6 4 5 nó eliminado Os elementos da matriz que correspondem ao ramo 5-6 (que já existia) tiveram seus valores alterados. – 46 – ◮ Após a eliminação do nó 5:   2 0 −1 −1 0 0   0 2 −1 0 0 −1    0 0 2 −1/2 −1 −1/2  Y5′ =     0 0 0 11/8 −5/4 −1/8    0 0 0 0 15/11 −15/11  0 0 0 0 0 ∞   1   1    2  I5′ =     2    42/11  (X + 5) nó eliminado nó eliminado nó eliminado 3 2 1 6 4 5 nó eliminado nó eliminado ◮ O processo de eliminação de nós até que reste somente um nó na rede corresponde à substituição Forward – 47 –  Exercı́cio Obtenha a matriz dos fatores triangulares para a rede exemplo de 6 barras e 7 ramos, conforme mostrado na página 26.  ◮ Pode-se também restaurar a rede a partir do conhecimento das matrizes elementares L. Por exemplo, pode-se restaurar o nó 2 através de: Y1′ = L−1 · Y2 2  2 0 −1 −1 0 0  0 2 −1 0 0 −1     0 −1 5/2 −1/2 −1 0  = 0 0 −1/2 3/2 −1 0      0 0 −1 −1 3 −1  0 −1 0 0 −1 ∞ Importante: a restauração de nós em princı́pio deve seguir exatamente a ordem inversa de eliminação. – 48 – ◮ Em cada passo do processo de eliminação de Gauss os seguintes passos são executados (do ponto de vista da redução de circuitos):  eliminar o nó  eliminar os ramos diretamente conectados ao nó eliminado  interligar todos os nós vizinhos do nó eliminado. Neste ponto, duas situações podem ocorrer: • dois nós vizinhos já conectados continuarão assim e os elementos da matriz correspondentes a esse ramo terão seus valores alterados • dois nós vizinhos ainda não conectados o serão através de um ramo fictı́cio. Consequentemente, aparecerão elementos correspondentes a esse ramo fictı́cio na matriz, em posições que anteriormente eram nulas (fill-ins) Exercı́cio Realize a eliminação de Gauss para a rede a seguir, mostrando as redes reduzidas em cada passo. Não utilize matrizes na resolução do problema. 5 1 4 2 7 10 6 3 9 8  – 49 –  Exemplo A eliminação de Gauss sob o ponto de vista de eliminação de nós é utilizada na obtenção de equivalentes externos. Fronteira (F) Rede Rede Interna Externa (I) .. (E) . Área de Interesse Equivalente externo Fronteira (F) shunt equivalente Rede Interna ligação equivalente (I) .. . injeção equivalente A idéia é substituir a rede externa (E) por uma rede equivalente que reaja de maneira semelhante a distúrbios na rede interna (I). Os nós da rede externa (as injeções de potência) são eliminados (distribuı́das) através da eliminação de Gauss. – 50 – Considerando que os nós são numerados de maneira que aqueles a serem eliminados apareçam primeiro, tem-se: 1 .. . k k +1 0 Yr .. . n  Exemplo A transformação Y-∆ é um caso particular da eliminação de Gauss sob o ponto de vista de eliminação de nós. 4 4 eliminar nó 1 1 2 3 2 3 – 51 – Considerando o caso particular em que todas as admitâncias dos ramos do circuito Y são iguais a 1 pu, tem-se:   3 −1 −1 −1  −1 1 0 0  Y=  −1 0 1 0   −1 0 0 1 Eliminando o nó 1: Y′ = L · Y     1000 3 −1 −1 −1  1/3 1 0 0   −1 1 0 0  = 1/3 0 1 0  ·  −1 0 1 0     1/3 0 0 1 −1 0 0 1   3 −1 −1 −1  0 2/3 −1/3 −1/3  = 0 −1/3 2/3 −1/3   0 −1/3 −1/3 2/3 Eliminando a linha e a coluna correspondente ao nó 1:   3 −1 −1 −1  0 2/3 −1/3 −1/3  Yred =   0 −1/3 2/3 −1/3  0 −1/3 −1/3 2/3 que corresponde à matriz admitância do circuito ∆ reduzido. Através de Yred nota-se que as admitâncias dos ramos do circuito reduzido valem 1/3 pu, ou seja: YY Y∆ = 3  – 52 – 3.6 Algoritmo para eliminação de Gauss ◮ Algoritmo para matrizes simétricas e assimétricas: do k = 1 , (n-1) alfa = a(k,k)    a(k,k) = - 1.0         do i = k , n   (D e U)   a(k,i) = -a(k,i)/alfa         end do   do i = (k+1) , n     beta = a(i,k) (L)  a(i,k) = -beta/alfa   do j = (k+1) , n      atualização das  a(i,j) = a(i,j) + beta * a(k,j) demais colunas     da linha i end do  end do end do a(n,n) = 1.0/a(n,n) → inversão do último elemento – 53 –  Exemplo Considere a matriz (3 × 3) a seguir. a11 a12 a13 a21 a22 a23 a31 a32 a33 Executando o algoritmo para k = 1: (U) 1/a11 −a12/a11 −a13/a11 ′ ′ −a21/a11 a22 a23 (L) ′ ′ −a31/a11 a32 a33 atualização  – 54 – ◮ Uma vez conhecida a matriz dos fatores triangulares e dado um vetor independente b, pode-se obter a solução do problema A · x = b por: Substituição forward (por coluna) do k = 1 , n alfa = b(k) b(k) = b(k) * a(k,k) do i = (k+1) , n b(i) = b(i) + a(i,k) * alfa end do end do Substituição back (por coluna) do k = n , 2 , -1 do i = (k-1) , 1 , -1 b(i) = b(i) + a(i,k) * b(k) end do end do – 55 –  Exercı́cio Considere a rede de 4 nós e 4 ramos a seguir. As admitâncias dos ramos em pu são fornecidas na própria figura. O nó 4 é tomado como o nó de referência. 1 2 4 1 1 1 1/2 3 (a) Obtenha a matriz admitância da rede. (b) Implemente a rotina de obtenção dos fatores triangulares apresentada anteriormente, e determine a matriz resultante de sua aplicação à matriz do item (a). (c) Considere o seguinte vetor de correntes nodais:  T I= 1 1 1 X Implemente as rotinas das substituições Forward e Back apresentadas anteriormente e obtenha a solução do problema I = Y · V , em que V é o vetor das tensões nodais. Mostre o resultado intermediário ao final da substituição Forward.  – 56 – ◮ Referências  A.J. Monticelli, “Fluxo de Carga em Redes de Energia Elétrica”, Edgard Blücher, 1983.  K. Zollenkopf, “Bi-factorization – basic computational algorithms and programming techniques”, In: J.K. Reid, Large sparse sets of linear equations, Academic Press, 1971.  M. Crow, “Computational Methods for Electric Power Systems”, CRC Press, 2003.  W.F. Tinney, J.W. Walker, “Direct solutions of sparse network equations by optimally ordered triangular factorization”, Proceedings of the IEEE, vol.55, n.11, 1967. ◮ Materiais interessantes  www.labspot.ufsc.br/˜campagno/Pos.html – Capı́tulo II – Partes 1 e 2  www.dm.ufscar.br/profs/silvia/AulaGradientesConjugados.pdf  www.eee.ufg.br/˜colemar/Espars01.pdf  www.ufmt.br/icet/matematica/geraldo/sela2.pdf – 57 –
Copyright © 2024 DOKUMEN.SITE Inc.