Wilson Lopes Di Mambro
DOS MÉTODOS DE REFATORIZAÇÃO DE MATRIZES NA
RESOLUÇÃO DE SISTEMAS MATRICIAIS
Pontifícia Universidade Católica de Minas Gerais
Belo Horizonte
2004
Wilson Lopes Di Mambro
DOS MÉTODOS DE REFATORIZAÇÃO DE MATRIZES NA
RESOLUÇÃO DE SISTEMAS MATRICIAIS
Dissertação apresentada ao Programa de Pós-Graduação em
Engenharia Elétrica da Pontifícia Universidade Católica de
Minas Gerais, Campus Coração Eucarístico, na Área de
Concentração em Sistemas de Potências, como requisito
parcial para obtenção do grau de mestre em Engenharia
Elétrica sob a orientação do Prof. Dr. Roberto de Maria Nunes
Mendes e a co-orientação do Prof. Dr. Luiz Danilo Barbosa
Terra.
Pontifícia Universidade Católica de Minas Gerais
Belo Horizonte
2004
Agradecimentos
À Deus por sempre me levar no colo quando o caminho é áspero.
Aos orientadores Prof. Dr. Roberto de Maria Nunes e Prof. Dr. Luiz Danilo
Barbosa Terra que tiveram paciência e dedicação em orientar-me nesta tarefa.
Ao Geraldo Magela dos Anjos Silva que com sua ajuda consegui digitar este
trabalho, tarefa que da qual tive muito que aprender.
Aos professores do mestrado que com dedicação, no transcorrer do curso, tiveram
papel importante para a realização deste trabalho.
3
Para meus filhos
Ana, Moisés e Mateus
4
RESUMO
Este trabalho apresenta métodos diretos para solução da equação matricial A x = b com A
esparsa e quadrada. O procedimento predominante para a solução será a decomposição de A
em um produto L D U evitando, sempre que possível, alterar a esparsidade da matriz A,
ordenando-a. Inicia-se o estudo pelo método de Gauss até, finalmente, obter-se os métodos de
refatorização parcial, os quais atualizam os fatores L D U da matriz A, para refletirem as
alterações em alguns de seus elementos. Discutem-se também, com mais detalhes, os métodos
de compensação e o método de Bennett, antes de se chegar aos métodos de refatorização
parcial I e II para matrizes esparsas. O resultado dos testes de refatorização parcial I e II
indica que eles são significativamente mais eficientes que as técnicas inicialmente
apresentadas e, que têm o potencial de acelerar a solução de diversos problemas.
ABSTRACT
This work presents direct methods to solve the matricial equation A x = b with A square
and sparse. The main way to solve it is supported by the decomposition of A in a L D U
product, avoiding to change the sparsity of the matrix, through the ordenation of A. At the
beginning of this work was used the Gauss method in order to get partial refatorization, that
updates the factories L D U of matrix A, showing the transformations of some elements of it.
Also, with details, was discussed both methods of compensation and the method of Bennett,
before arriving to the parcials I and II refatorization methods, for sparse matrices. The
conclusions for the parcial refactorization tests I and II show that they are more eficients than
the methods presented before and they can also accelerate the solutions of the problems.
LISTA DE FIGURAS
FIGURA 1 – Grafo de uma rede de energia elétrica com cinco nós .................................. 28
FIGURA 2 – Matriz associada ao grafo da figura 1............................................................ 28
FIGURA 3 – Árvore associada à matriz da Figura 2 partindo dos nós 1 e 2.................... 28
FIGURA 4 – Rede de energia elétrica com modificação de um ramo (1 - 4) ................... 31
FIGURA 5 – Rede de energia elétrica com modificações de dois ramos (1-4) e (3-5) ...... 32
FIGURA 6 – Estrutura da matriz admitância nodal: rede com cinco nós........................ 37
FIGURA 7 – Estrutura da matriz admitância nodal: rede de cinco nós, com a conexão
dos nós 4 e 5............................................................................................................................. 37
FIGURA 8 – Rede referente à matriz A da rede nodal modificada................................... 43
FIGURA 9 – Esquema de fatorização linha superior /coluna inferior..............................64
FIGURA 10 – Rede nodal com 12 nós .................................................................................. 65
FIGURA 11 – Estrutura esparsa da matriz L ..................................................................... 66
FIGURA 12 – Tabela de caminhos referentes à rede nodal da FIG. 10............................66
FIGURA 13 – Gráfico do caminho com 12 nós (árvore).....................................................66
FIGURA 14 – Rede de energia elétrica com 11 nós onde não foi feita uma ordenação
prévia dos mesmos .................................................................................................................. 68
FIGURA 15 – Estrutura da matriz L conseguida ao se fatorar a matriz A da rede nodal
acima, apresentando 3 fill-ins ................................................................................................ 69
FIGURA 16 – Grafo do caminho sem ordenação (árvore de 11 nós) ................................ 69
FIGURA 17 – Rede de energia elétrica com 11 nós onde foi feita a ordenação de grau
mínimo ..................................................................................................................................... 70
FIGURA 18 – Estrutura da matriz L ao se fatorar a matriz A, após a ordenação
observando o grau mínimo. Neste caso aparece apenas um fill-in..................................... 70
FIGURA 19 – Grafo após se fazer uma ordenação de grau mínimo (árvore c/ 11 nós) .. 71
SUMÁRIO
INTRODUÇÃO ........................................................................................................................ 9
CAPÍTULO 1 - FATORAÇÃO COMPLETA – MÉTODO DE GAUSS.......................... 13
1.1
Fatoração completa – método de Gauss...................................................................... 13
1.2
Algoritmo – Método de Gauss...................................................................................... 16
1.3
Exemplo.......................................................................................................................... 17
1.4
Decomposição L U e L D U ....................................................................................... 18
1.5
Exemplo.......................................................................................................................... 22
1.6
Variante do método de Gauss apresentada por W. F. Tinney e seus
∗
colaboradores ................................................................................................................ 23
1.7
Exemplo.......................................................................................................................... 25
1.8
Grafos............................................................................................................................. 26
CAPÍTULO 2 - MÉTODO DE COMPENSAÇÃO ............................................................. 30
2.1
Método de Compensação.............................................................................................. 30
2.2
Modificação por ramo orientado ................................................................................. 31
2.3
Modificação por nó orientado...................................................................................... 33
2.4
Exemplo
...................................................................................................................... 38
CAPÍTULO 3 - MÉTODOS DE REFATORIZAÇÃO PARCIAL ....................................43
3.1
Método de refatorização parcial simples .................................................................... 43
3.2
Decomposição L U em blocos ....................................................................................... 44
3.3
Exemplo.......................................................................................................................... 46
3.4
Método de refatorização parcial simples com arranjo especial................................ 48
3.5
Observações do que ocorre quando se decompõe A em L D U .............................. 48
∗
CAPÍTULO 4 - MÉTODO DE BENNETT.......................................................................... 50
4.1
Método de Bennett ....................................................................................................... 50
4.2
Prova do processo.......................................................................................................... 55
4.3
Exemplo.......................................................................................................................... 56
4.4
Algoritmo ....................................................................................................................... 58
4.5
Exemplo.......................................................................................................................... 59
CAPÍTULO 5 - MÉTODOS DE REFATORIZAÇÃO PARCIAL I E II.......................... 63
5.1
Métodos de refatorização parcial I e II ....................................................................... 63
5.2
Ordenação dos nós por grau mínimo .......................................................................... 64
5.3
Método de refatorização parcial I ............................................................................... 67
5.4
Método de refatorização parcial II.............................................................................. 68
5.5
Exemplo: (método de refatorização parcial I)............................................................ 68
CONCLUSÃO......................................................................................................................... 76
REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................77
APÊNDICE I........................................................................................................................... 80
APÊNDICE II ........................................................................................................................ 78
9
INTRODUÇÃO
As áreas de estudo cujos problemas envolvem a solução de sistemas lineares são
várias, tais como programação linear, análise de estruturas, teoria dos grafos, solução
numérica de equações diferenciais, sistemas de transmissão e distribuição de energia elétrica
entre outras.
Este trabalho trata dos sistemas lineares da forma A x = b, onde são conhecidas as
matrizes A e b de tipos n x n e n x m, respectivamente. A matriz x, do tipo n x 1, é a solução
procurada.
Volta-se o interesse para sistemas de grande porte, onde em geral, a matriz A é
esparsa.
Concentra-se a atenção na solução de problemas de rede de energia elétrica onde A é a
matriz das admitâncias, x é o vetor das tensões e b o vetor das correntes. A pode ser também a
∆V 
 ∆P 
matriz jacobiana, J, do modelo linear de rede de energia elétrica   = J   , derivado da
 ∆θ 
∆Q 
formulação não linear de potências versus tensão. Sendo f(P,Q,V, θ ) = 0, onde f é uma função
vetorial.
Quando são projetadas futuras ampliações na rede, ou mesmo com a adição ou
remoção de linhas ou transformadores, haverá alterações das admitâncias; logo, a matriz A
será modificada. É importante observar que estas alterações levam a novos cálculos, que
acarretam mudanças no tempo de computação e no espaço de memória exigidos, obrigando a
procura de métodos eficientes para a solução de problemas com matrizes modificadas.
10
Como este assunto não se encontra disseminado nos livros, procura-se descrever
didaticamente os vários métodos e compará-los entre si. Com o desenvolvimento científico,
alguns métodos ficaram obsoletos, porém, têm caráter seminal, donde o interesse no seu
estudo.
Neste trabalho são tratados apenas os métodos diretos.
Foram feitos estudos comparando o desempenho do métodos diretos e iterativo na
solução de equação Ax = b, empregando-se as mesmas condições de teste geral. A conclusão
final é que os métodos diretos ainda são mais rápidos, embora o método iterativo seja mais
fácil de se implementar [Monticelli,99].
O objetivo geral deste trabalho é organizar didaticamente num único texto os métodos
diretos de refatorização de matrizes na solução de sistemas matriciais.
Os objetivos específicos são:
• Dar condições para usar o método adequado verificando as vantagens que
existem em cada um.
• Verificar as vantagens de se usar L D U em vez de usar a inversa A −1 .
• Usar o método de Bennett, [Bennett,65] empregando o programa
implementado computacionalmente.
A metodologia adotada consiste na pesquisa bibliográfica, no seu estudo e seleção. A
pesquisa bibliográfica concentra-se em publicações do IEEE, como também em livros de
Álgebra Linear.
A contribuição deste trabalho inclui a interpretação e registro sistemático de
bibliografia pertinente e aplicações dos métodos de refatorização de matrizes para
planejamento de sistemas de energia elétrica. Além do mais, o trabalho pode contribuir como
incentivo ao desenvolvimento de novas pesquisas.
11
Organização do texto
A presente Dissertação está organizada em cinco capítulos:
Capítulo 1:
O capítulo apresenta o método de Gauss para solução de sistema A x = b como,
também, a decomposição de A em L D U e uma variante do método de Gauss feita por W.F.
Tinney. Ele introduz o conceito de grafos associados à matriz A.
Capítulo 2:
0 capítulo considera as modificações da matriz A, modificações estas feitas por nó ou
ramos orientados. A partir da equação matricial (A+ ∆A ) x = b, chega-se à formula
x = [ A −1 − A −1 ( I + ∆A. A −1 ) −1 ∆A. A −1 ] b através de deduções matemáticas. A idéia principal é
tornar o cálculo de x rápido e eficiente. Mostra-se que basta armazenar A −1 uma única vez e
usar este fato a cada modificação efetuada.Verifica-se que pode-se armazenar também as
inversas de L e U para calcular o valor de x. Finaliza-se com exemplos.
Capítulo 3.
O capítulo mostra que o método de refatorização simples é mais conveniente, pois, o
método de refatorização com arranjo especial degrada a esparsidade da matriz A. Mostra-se
que para a solução do sistema deve-se decompor a matriz A em L D U por blocos. É feita a
decomposição da matriz em blocos, finalizando-se com um exemplo, aplicando o método.
12
Capítulo 4.
O capítulo mostra que John M. Bennett substituindo ∆A por X C Y t
na matriz
( A + ∆A) −1 chegou à identidade ( A + X C Y t ) = A −1 X [C −1 + Y t A −1 X ] −1 Y t A −1 .
Verifica-se que não é necessário armazenar a inversa da matriz a cada modificação. É
suficiente armazenar a inversa de A uma única vez, o que é fundamental para a computação.
É desenvolvido um algoritmo para chegar à decomposição da matriz A + X C Y t em
L• D • U • usando o L D U da matriz A, e é mostrado que a inversa completa da matriz
modificada pode ser evitada a cada alteração. Isto permite armazenar apenas os fatores L D U
da matriz A.
Capítulo 5.
O capítulo mostra que ao se alterar uma ou mais linhas/colunas de uma matriz é
afetado somente um subgrupo de linhas/colunas subseqüentes. Mostra-se a vantagem de
ordenar uma matriz antes de fatorá-la em LU, pois proporciona menos preenchimentos
nas posições, onde a matriz A possía inicialmente elementos nulos, ao se fazer a
decomposição. A associação que se faz de uma matriz com um grafo mostra as
vantagens que existem ordenando a matriz antes de fatorá-la, pois o número de* “fillins“ é menor com a ordenação prévia.
Finalmente, apresenta-se a conclusão, as referências bibliográficas e o apêndice.
* “fill-ins” – elementos não nulos.
13
CAPÍTULO 1
FATORAÇÃO COMPLETA – MÉTODO DE GAUSS
Neste capítulo serão discutidos os métodos diretos para solução de um sistema Ax = b,
entre eles o método de Gauss como também uma variante deste método apresentada por W.F.
Tinney [Tinney,67], o qual decompõe a matriz A em L U. Introduz-se também a associação
de uma figura, isto é, um grafo linear (GA) com uma matriz A. Tal associação se faz
necessária para os estudos dos capítulos posteriores.
1.1 Fatoração completa – método de Gauss
Para resolver o sistema linear A x = b, onde A é n x n, x é n x 1 e b é n x 1, usa-se o
método de eliminação de Gauss [Leon, 98]. Este método consiste em aplicar à matriz
completa C = [A / b] as chamadas transformações elementares sobre as linhas, a saber:
a) Tij , trocar de posição as linhas i e j;
b) Tij (λ ) , somar à linha i a linha j multiplicada por
λ ∈ℜ.
14
Supõe-se que a matriz A seja tal que apenas a transformação (b) seja necessária. Uma
condição suficiente para isso, é que A seja simétrica definida positiva ou que A = ( aij ) seja
diagonalmente dominante ( a jj >
n
∑a
ij
, j = 1,..., n ) .
i =1, i ≠ j
Neste método, resolve-se a equação linear A x = b através de operações elementares
efetuadas sobre as linhas da matriz A e b, até que seja obtido um sistema equivalente ao dado,
de solução imediata, ou pelo menos mais simples.
A decomposição triangular da matriz por Gauss [Leon,98]é feita pela eliminação dos
elementos abaixo da diagonal principal em todas as colunas. O método é direto, porém, é
lento. O tempo de computação é grande e ocupa também grande espaço de armazenamento.
Como as matrizes de admitância são esparsas e simétricas, pode-se obter algumas
vantagens na solução dos problemas. A primeira, e mais evidente, é a grande economia de
memória possível de ser obtida quando armazenam-se apenas os elementos não nulos. A
segunda vantagem é a redução do tempo de computação. Uma terceira é a redução do erro de
arredondamento.
O método de Gauss tende a destruir a esparsidade da matriz a ele submetida.
Entretanto, um controle pode ser exercido sobre o processo de triangularização, o que não
pode ser feito no caso de matrizes cheias.
Antes que se dê um exemplo de aplicação do método de Gauss, deve-se comentar três
esquemas que levam à solução da equação A x = b, para justificar a opção por este método.
a) Inverter explicitamente a matriz dos coeficientes, no caso a matriz A.
A x = b ⇒ x = A −1 . b
Este esquema é inconveniente porque:
15
a.1) a inversão da matriz A exige um número de operações bastante grande em relação a
outros esquemas;
a.2) a inversão destrói a esparsidade das matrizes;
a.3) o acúmulo de erros de arredondamentos, durante o processo de inversão, pode
inutilizar os resultados obtidos, sobretudo quando se trata de sistemas de grande
porte.
b) Admitir uma solução aproximada e obter, através de algoritmo adequado, aproximações
melhores, até que um determinado índice de precisão seja atingido. Este esquema tem
vantagens, mas é inconveniente. Quando se armazenam apenas os elementos não nulos da
matriz de coeficientes, o armazenamento é compacto e é feito por linhas e colunas, isto é,
os elementos ficam distribuídos aleatoriamente, dificultando a sua localização para se obter
a matriz transposta de A ou a inversa da transposta. Apresenta-se também excessivo tempo
de computação, quando houver necessidade de soluções repetidas, pois cada solução
envolve a repetição com novos dados de todo o processo iterativo.
Em suma, os métodos iterativos têm desvantagens em relação aos métodos
diretos[Monticelli,99] , como também a inversão implícita da matriz A.
c) Transformar o sistema linear dado, através de operações aritméticas elementares, até que
seja obtido um sistema equivalente, mas de solução imediata, ou pelo menos mais simples
(métodos diretos). O método direto principal é o método de Gauss que apresenta mais
vantagens sobre os outros, pois é mais preciso e a esparsidade da matriz A é menos
afetada.
Considera-se o seguinte algoritmo:
16
1.2 Algoritmo – Método de Gauss
Seja A = (aij ) nxn
Notações:
− índices inferiores indicam ordem de linha e coluna do elemento respectivamente;
− índices superiores representam o estado atual do elemento, isto é, o número de
transformações sofridas por este elemento no decorrer de um processo qualquer;
− índice superior 0 (zero) indica que o elemento se encontra com o seu valor inicial.
1) Fazendo k ← 1 (iniciação do contador de linha);
2) Soma-se a linha k de A, multiplicada por − a (jkk −1) às linhas j = k+1, ..., n, ou seja,
calculam-se:
a (jkk ) = a (jkk −1) − a (jkk −1) .a ki( k ) :
j ,i = k+1,..., n ;
b (j k ) = b (j k −1) − a (jhk −1) .b (j k )
Isto resulta na eliminação de x k das (n-k ) equações subseqüentes à k-ésima.
3) Fazendo k ← k + 1 e indo para 2.
4) Substituindo os valores dos xi (i = k+1, ..., n), já calculados na k-ésima equação e
resolvendo para x k . Isto equivale a se calcular: x k =
n
1 (k )
(bk − ∑ a ki( k ) xi )
a kk
i = k +1
5) Fazendo k ← k − 1 . Se k= 0, FIM. Senão, → 4
Este algoritmo de Gauss, normalmente apresentado na literatura de ágebra linear
[Leon ,98], exige que a matriz a ser triangularizada seja armazenada integralmente na
17
memória do computador. O armazenamento linha por linha, no caso de matrizes esparsas,
dificulta a localização dos elementos de uma dada coluna.
Pode-se verificar que o número de operações aritméticas envolvido no método de
Gauss é menor que o número de operações necessárias à inversão de uma matriz. Em se
tratando de uma matriz esparsa, as vantagens são bem mais significativas.
1.2 Exemplo
Aplicação do algoritmo a um sistema de quatro incógnitas.
 2 x1
− 2 x

1

− 4 x1

− 2 x2
− 4 x3
+ 4 x2
− 6 x2
+ 6 x3
− 8 x3
=1
− 6 x4
=0
− 8 x4
+ 18 x 4
=2
=1
Pode-se escrever o sistema na forma matricial A x = b.
Como as operações de eliminação envolvem apenas os coeficientes aij ( i ,j = 1,2,3,4),
e os termos independentes bi ( i = 1,2,3,4), para fim de exposição, será suficiente trabalhar
com a matriz aumentada [ A / b] .
 2 − 2 − 4 0 1
− 2 4
0 − 6 0

[ A / b]= 
, Aplicando o algoritmo tem-se:
6 − 8 2
−4 0


 0 − 6 − 8 18 1 
18
2 − 2 − 4 0 1 
0 2 − 4 − 6 1 

 T (2); T (3) →
42
0 − 4 − 2 − 8 4 32


0 − 6 − 8 18 1 
 2 − 2 − 4 0 1
− 2 4
0 − 6 0

T21 (1); T31 (2) →
− 4 0
6 − 8 2


 0 − 6 − 8 18 1 
0
2 − 2 − 4
0 2
−4 −6

0 0 − 10 − 20

0
0 0 − 20
 x1 
x 
Cálculo de x=  2  :
 x3 
 
 x4 
x4 =
x2 =
1
1 
T43 ( −2) →
6

4
sendo
1
b4
=−
5
a44
x3 =
2 x1





0
1
2 − 2 − 4
0 2 − 4 − 6
1 

0 0 − 10 − 20 6 


0
40 − 8
0 0
− 2 x2
− 4 x3
2 x2
− 4 x3
− 6 x4
=1
− 10 x3
− 20 x4
40 x4
=6
= −8
1
(b3 −
a33
4
1
1
(b2 − a2i xi ) = a22
2
i =3
∑
4
∑a
3i xi
3
5
)= − +
i =4
x1 =
=1
2
1
=−
5
5
4
1
2
(b1 − a1i xi ) = a11
5
i=2
∑
1.4 Decomposição L U e L D U ∗ .[ Monticelli,83]
A pode ser reduzida à forma triangular superior:
a1n 
a11

0
a2 n 

a3n  → A(1) =  0


... 
 ...

0
ann 

 a11 a12
a
 21 a22
A =  a31 a32

 ... ...
 an1 an 2

a13
a23
a33
...
an 3
...
...
...
...
...
a11
0

= 0

 ...
 0
a12
a13
(1)
a22
0
(1)
a23
( 2)
a33
...
...
...
...
0
an( 23)
...
→A
( 2)
A(n ) = U
...
...
a12
(1)
a22
(1)
a32
...
an(12)
a13
(1)
a23
(1)
a33
...
an(13)
a11
a1n 

(1) 
a2 n 
0
( n)
( 2)
a3n .... → A =  0


... 
 ...
( 2) 
0
ann 

...
...
...
...
...
a1n 
a2(1n) 
a3(1n) 

... 
(1) 
ann

a12
a13
...
(1)
a22
...
0
(1)
a23
( 2)
a33
...
...
...
0
0
...
...
a1n 

a2(1n) 
a3( 2n) 

... 
(n) 
ann

19
Em geral, se a matriz A n x n poder ser colocada na forma triangular superior U sem
trocar as linhas, então A pode ser fatorada em L U, onde L é triangular inferior e tem todos os
elementos da diagonal iguais a um (1). O elemento lij de L abaixo da diagonal principal vai
ser um múltiplo da i-ésima que foi subtraído da j-ésima linha durante o método de Gauss.
Pode-se verificar que L U = A.
Para se ver como esta fatoração funciona, analisa-se o processo em termos de matrizes
elementares. Isto é equivalente a multiplicar a matriz A à esquerda por n matrizes
elementares: E1, E2 ,..., En. Então, En ...E3 E2 E1 A = U e como as matrizes elementares são
invertíveis, tem-se: A = ( E1−1.E2−1.E3−1. ... .En−1 ).U , logo A = L U.
Dada a fatoração L U de uma matriz A, é possível prosseguir e fatorar U em um
produto D U ∗ , onde D é a diagonal e U ∗ é triangular superior, com todos os elementos da
diagonal iguais a 1.
U11 0
 0 u
22

D U∗ =  0
0

 ... ...
 0
0

0
...
0
...
u33 ...
...
...
0
...
0 
0 
0 

... 
unn 
u12

1 u
11

0 1


0 0

... ...

0 0
u13
u11
u 23
u 22
...
...
1
...
...
...
0
...
u1n 
u11 

u2n 
u22 
u3 n 

u33 
... 

1 
∗
Tem-se A = L D U .
Tem-se, portanto, que:
1) A matriz U é ∆ - superior e contém os elementos quando se escalona a matriz A (método
de Gauss).
20
2) A matriz L é ∆ - inferior e representa as etapas de eliminação. Seus elementos lij , i<j são
os simétricos dos multiplicadores λ que aparecem nas operações Tij (λ ) ; os elementos da
diagonal de L são todos iguais a 1.
3) Além disso, a solução de A x = b é equivalente à solução dos dois sistemas L y = b e U
x = y, sendo o primeiro por substituição progressiva e o segundo por substituição
regressiva.
4) Assim, o método de eliminação de Gauss é equivalente a fatorar A no produto L U, onde
L é ∆ - inferior com diagonal unitária e U é ∆ -superior.
∗
∗
5) Introduzindo a matriz diagonal D, pode-se escrever A = L U = L D U , onde U tem
também diagonal unitária; esta decomposição é única. [Leon 98, cap. 6].
Pode-se mostrar que o número de operações aritméticas envolvido na solução de A =
L U, L y = b , U x = y é o mesmo que o envolvido no método de eliminação de Gauss.
∗
Na prática, o método L U (ou L D U ) oferece algumas vantagens.
Por exemplo, se ao resolver A x = b para vários valores de b, A permanece inalterada,
o método L U é o mais conveniente.
Caso de matriz simétrica:
t
Supõe-se que na equação linear A x = b, A é matriz simétrica ( isto é A= A ).
∗
t
Se A = L D U = A = U
∗t
D Lt , resulta U ∗ = Lt ,de modo que A= L D Lt .
Por exemplo,
2 − 2
4

A =  2 − 8 − 4
− 2 − 4 3 

 1
 1
=
 2
− 1
 2
0
1
1
3


1

0  4 0 0 


0 0 − 9 0 0
  0 0 3 

 0
1


1
2
1
0
1
− 
2
1 

3 
1 

21
Seja U uma matriz tiangular superior com todos os elementos da diagonal principal
diferentes de zero, e L, uma matriz triangular inferior com os elementos da diagonal principal
iguais a um.
Decompondo A em L U e substituindo-os no sistema A x = b, tem-se:
L U x = b , e fazendo Ux = y, tem-se Ly = b.
Como L é uma matriz tringular inferior, resolve-se, diretamente, calculando y por
substituição de cima para baixo. Uma vez determinado o valor de y, e usando a matriz
triangular superior U, resolve-se a outra equação U x = y por substituição de baixo para cima.
Sejam as matrizes:
1 0
l
 21 1
l31 l32

l
l
L=  41 42
.
.

.
.
.
.

l n1 l n 2
0
0
0
0
1
0
l 42
1
.
.
.
.
.
.
l n3
ln 4
0 0 ... 0
u11 u12

0 u
0 0 ... 0
22



0
0
0 0 ... 0


0
0
0 0 ... 0
,U = 

.
.
. . . .


.
. . . .
 .


.
.
. . . .


0
. . . 1
 0
u13
u14
u 23
u 24
u33
u34
0
u 44
.
.
.
.
.
.
0
0
. . . u1n 
. . . u 2 n 
. . . u 3n 

. . . u4n 
. . . . 

. . . . 
. . . . 

. . . u nn 
Para resolver um sistema A x = b, faz-se as seguintes considerações:
 y1 
y 
 2
 . 
A = L U; L y = b; U x = y toma-se y =  
 . 
 . 
 
 y n 
j −1
e calcula-se y usando a fórmula y j = b j − ∑ l jk y k ,
k =1
22
 x1 
x 
 2
.
e tomando-se x =   , calcula-se x,
.
.
 
 xn 
usando a fórmula
xj=
n
1
(b j −
u jk xk )
u jj
k = j +1
∑
1.5 Exemplo
 2 − 2 − 4 0   x1 
1 



− 2 4
0
0 − 6  x2 

=  
− 4 0
 2
6 − 8  x3 
  

 
 0 − 6 − 8 18   x4 
1 
2 − 2
 2 −2 −4 0 
0 2

− 2 4
0 − 6 T21 (1)

A=
→
0 − 4
− 4 0
6 − 8 T31 (2)



0 − 6
 0 − 6 − 8 18 
−4
0
− 4 − 6 T32 (2)
→
− 2 − 8 T42 (3)

− 8 18 
0 
0 
2 − 2 − 4
2 − 2 − 4


0 2
− 4 − 6 
−4 −6 
0 2


T (−2) →
=U
0 0 − 10 − 20
0 0 − 16 − 20 43




0 
0
40 
0 0
0 0 − 20
0
1
 −1 1
Então : L = 
− 2 − 2

 0 −3
L y = b, tem-se:
0 0
0 0
1 0

2 1
0
1
 −1 1

− 2 − 2

 0 −3
0 0
0 0
1 0

2 1
1 
 y1 
 
y 
 2  = 0 
 y3 
 2
 
 
1 
 y4 
1
1
logo y =  
6
 
 − 8
23
0 
2 − 2 − 4
0 2 − 4 − 6 

U x = y , tem-se: 
0 0 − 10 − 20


0
40 
0 0
 x1 
1
x 
 
 2 =  1 
6
 x3 
 
 
 − 8
 x4 
 2
− 5 
 1
− 
logo, x =  2 
− 1 
 5
 1
− 
 5
∗
Como a matriz A pode também ser fatorada em L D U , onde L e U
∗
são matrizes
triangulares inferior e superior, respectivamente, com elementos da diagonal principal
unitários e D é uma matriz diagonal, tem-se também:
D U ∗ = Uentão L D U
∗
∗
x = b , DU x = y e L y = b.
1.6 Variante do método de Gauss apresentada por W. F. Tinney e seus
colaboradores [Tinney,67;85].
Para exemplificar, considera-se um sistema A x = b de quatro equações e quatro
∗
variáveis. Decompondo A em L D U tem-se:
1 0
l
 21 1
l31 l32

l 41 l 42
0
0
1
l 43
0
0
0

1
d11
0

0

0
0
0
d 22
0
0
0
d 33
0
0 
0 
0 

d 44 
1 u12
0 1

0 0

0 0
u13
u 23
1
0
u14 
u 24 
u34 

1 
 x1   b1 
 x  b 
 2 =  2
 x3  b3 
   
 x 4  b4 
∗
Fazendo y = U x, resolve-se o sistema L D y = b, usando a substituição progressiva
por colunas (de cima para baixo) e determinando o vetor y.
Coluna 1
(1)
1
y
b
= 1
d11
y 2(1) = b2 − l 21b1
Coluna 2
y
( 2)
2
y 2(1)
=
d 22
y 3( 2 ) = y 3(1) − l 32 y 2(1)
Coluna 3
y
( 3)
3
y 3( 2)
=
d 33
y 4(3) = y 4( 2) − l 43 y 3( 2)
Coluna 4
y
( 4)
4
y 4(3) ( 4) y 4( 3)
=
y4 =
d 44
d 44
24
y 3(1) = b3 − l 31b1
y 4( 2 ) = y 4(1) − l 43 y 2(1)
y 4(1) = b4 − l 41b1
 y1(1) 
 ( 2) 
y
A solução do sistema L D y = b é y=  2( 3) 
 y3 
 ( 4) 
 y 4 
De fato, tem-se:
1) d 11 y1 = b1
y1 =
b1
= y1(1)
d11
2) l 21 d11 y1 + d 22 y 2 = b2 ; d 22 y 2 = b2 l 21 d 11 y1 ; y 2 =
b2 − l 21 d11 y1 b2 − l 21 y1(1) y 2(1)
=
=
= y 2( 2)
d 22
d 22
d 22
3) l31 d11 y1 + l32 d 22 y 2 + d 33 y 3 = b 3 , d 33 y 3 = b3 − l31b1 − l32 y 2(1) = y 3(1) − l32 y 2(1)
y3 =
(1)
y 32
− l 32 y 2(1) y 3( 2)
=
= y 3( 3)
d 33
d 33
4) l 41 d11 y1 + l 42 d 22 y 2 + l 43 d 33 y 3 + d 44 y 4 = b4
d 44 y 4 = b4 − l 41l 32 d11 y1 − l 42 d 22 y 2 − l 43 d 33 y 3
d 44 y 4 = b4 − l 41b1 − l 42 y 2
(1)
− l 42 y 3
(2 )
d 44 y 4 = y 4(1) − l 42 y 2(1) − l 42 y 3( 2 )
d 44 y 4 = y 4( 2 ) − l 42 y 3( 2)
d 44 y 4 = y 4(3)
(3 )
y
(4 )
y4 = 4 = y4
d 44
Agora, resolve-se o sistema U ∗ x = y , usando a substituição por linhas.
25
1 u12
0 1

0 0

0 0
u13 u14   x1 
 y1 

y 


u23 u24   x2 
=  2
 y3 
1 u34   x3 
 
  
0
1   x4 
 y4 
 y1 
y 
 2
 y3 
 
 y4 
linha 4 : x4 = y 4
linha 3 : x3 = y 3 − u 34 x 4
linha2: x2 = y2 − u12 x3 − u24 x4
linha1: x1 = y1 − u12 x2 − u13 x3 − u14 x4
1.7 Exemplo
 2 x1
− 2 x

1
Seja o sistema 
4
x
−
1


− 2 x2
− 4 x3
+ 4 x2
− 6 x2
=1
− 6 x4
=0
+ 6 x3
− 8 x4
=2
− 8 x3
+ 18 x4
=1
O sistema pode ser colocado na forma de uma equação matricial A x = b.
∗
Decompondo A em L D U :
0
1
 −1 1

− 2 − 2

 0 −3
0 0
0 0
1 0

2 1
2
0

0

0
0
2 0
0 
0 − 10 0 

0
0
40
0
0
1 − 1 − 2 0   x1  1 
0 1 − 2 − 3  x  0

  2 =  
0 0
1
2   x3  2

   
0
1   x4  1 
0 0
Calcula-se primeiro y, resolvendo o sistema L D y = b(por colunas de cima para baixo)
0
1
 −1 1

− 2 − 2

 0 −3
0 0
0 0
1 0

2 1
2
0

0

0
0
2 0
0 
0 − 10 0 

0
0
40
0
0
 y1  1
 y  0 
 2 =  
 y3   2 
   
 y 4  1 
coluna 1 ) y1(1) =
1
; y 2 (1) = 0 + 1.1 = 1 ;
2
coluna 2) y 2 (2 ) =
1
; y 3 ( 2 ) = 4 + 2 .1 = 6 ; y 4 ( 2 ) = 1 + 3 .1 = 4
2
coluna 3) y3 (3) =
6
3
( 3)
= − ; y 4 = 4 − 2.6 = 8
5
− 10
y3
(1)
= 2 + 2 .1 = 4 ; y 4
(1)
= 1 + 0.1 = 1
26
coluna 4 ) y 4 ( 4) =
8
1
=−
5
− 40
∗
Resolve-se o sistema U x = y para encontrar o x, que é a solução final:
1 − 1 − 2 0 
0 1 − 2 − 3


0 0
1
2


0
1
0 0
x4 = −
x1 =
1
5
 1 
 
 x1   12 
x   
 2 =  2 
 x3   3 
  − 5 
 x4   1 
− 
 5
;
tem-se:
3
1
1
x3 = − − 2(− ) = −
5
5
5
;
x2 =
1
1
1
1
+ 2(− ) + 3(− ) = −
2
5
5
2
1
1
1
2
+ (− ) + 2(− ) = − .
2
2
2
5
Então a solução é:
 2
x = −
 5
1
−
2
1
−
5
1
− 
5
t
1.8 Grafos
Neste trabalho introduz-se um procedimento para se estudar o efeito da esparsidade na
eliminação de Gauss, que habilita a escolher-se um esquema de eliminação ótimo e/ou
determinar se a eliminação é uma abordagem prática. Isto é feito pela associação de um grafo
linear (GA) a uma matriz A. Admite-se que a matriz A envolvida é suficientemente bem
condicionada de modo que a eliminação de Gauss seja sempre possível. Uma rede de energia
elétrica pode ser usada como sendo seu próprio grafo não direcional [Szwarcfiter ,83].
No sistema A x = b associado a uma rede de energia elétrica, a estrutura de A está
intimamente ligada à configuração geométrica da rede, ou seja, à maneira pela qual as
diversas barras estão interconectadas, independendo complemente dos valores dessas
conexões. Desta forma, é suficiente para descrever a estrutura geométrica de uma rede
27
substituir seus componentes por segmentos de reta. Estes segmentos são denominados ramos
e seus terminais nós. Um nó e um ramo são incidentes quando o nó for um dos terminais do
ramo. Os nós podem incidir em um ou mais ramos. Ao conjunto de nós e ramos que
descrevem a estrutura topológica de uma rede dá-se o nome de grafo.
Quando um nó é eliminado, a conexão que existia antes precisa ser preenchida. Isto
pode requerer a adição de novo ramo no grafo reduzido. Os novos ramos correspondem aos
preenchimentos (fill-ins) na matriz.
Cada nó é considerado uma ligação própria (um laço), isto é, tem admitância própria,
representada por aij onde i = j. Se um nó é ligado a outro, tem-se a admitância mútua
representada também por aij , mas com i ≠ j . O nó i é ligado ao nó j e vice-versa. Quando
não há ligações entre os nós, o termo é igual a zero.
Um caminho de um nó v a um nó w é uma cadeia formada por ramos distintos que têm
origem em v e término em w. O caminho pode ser fechado, se v = w, ou aberto, caso
contrário.
Um ciclo é um caminho fechado vi ,..., vk , sendo vi = vk e k ≥ 3.
Um grafo é conexo, quando existe um caminho entre cada par de nós, isto é, a partir de
um nó arbitrário do grafo é possível alcançar todos os demais. Caso contrário, o grafo é
desconexo.
Alterando-se uma matriz, têm-se modificações nos grafos e serão afetadas suas
linhas/colunas. As linhas/colunas afetadas podem ser encontradas partindo do caminho do
grafo da matriz. Quando mais de uma linha/coluna é modificada, as linhas/colunas afetadas
são originadas pela união dos caminhos [Betancourt ,86;88]. Um grafo é chamado de árvore
se ele for conexo e acíclico.
28
1
5
2
3
4
Figura 1 – Grafo de uma rede de energia elétrica com cinco nós
X
0

A = X

0
 X
0
X
0
X
0
X
0
X
X
X
X
X
X
X
0
X
X 
X

0
X 
FIGURA 2 – Matriz associada ao grafo da figura 1
1
2
3
4
5
FIGURA 3 – Árvore associada à matriz da Figura 2 partindo dos nós 1 e 2
Neste capítulo foi apresentado o método de Gauss para solução do sistema A x = b, a
decomposição de A em L D U e uma variante do método de Gauss feita por W. F. Tinney .
Foi introduzido o conceito de grafos associado à matriz A e dado um exemplo tanto do
método de Gauss como o de Tinney.
29
O CAPÍTULO 2
MÉTODO DE COMPENSAÇÃO
O capítulo apresenta a dedução e análise do método de compensação para a solução
eficiente de problemas de rede envolvendo modificação na matriz A do sistema A x = b.
Mostra-se que as modificações podem ser feitas por ramo ou nó orientados. No final, chega-se
a uma equação que se altera a cada modificação, mas calcula-se e armazena-se a inversa de A
somente uma vez [Alsaç, Stott, Tinney, 83].
2.1 Método de Compensação
Este método torna o processo de cálculo da solução de problemas de redes de energia
elétrica mais rápido e eficiente, e é mais apropriado, quando:
a) as modificações não são grandes;
b) as modificações não são permanentes;
c) as equações modificadas não precisam ser resolvidas repetidamente .
Considera-se a seguinte equação matricial ( A+ ∆A) x = b, sendo A, a matriz
admitância da rede de energia elétrica de dimensão n x n, ∆A também de dimensão nxn a
matriz modificação envolvendo um ou mais elementos da rede, x o vetor das tensões e b o
vetor das correntes.
31
Para todas as modificações incidentes simétricas da matriz A, toma-se ∆A = M∆YM t ,
onde:
∆ Y é uma matriz m x m contendo as modificações de A , sendo m ≤ n .
M é a matriz conexão, de dimensão n x m.
Quando a modificação é por ramo orientado, M tem colunas de entradas +1 e –1 nas
posições relevantes. No caso de modificações por nó orientado, as colunas de M têm uma
única entrada +1.
2.2 Modificação por ramo orientado
Quando m ramos são modificados simultaneamente, ∆Y é uma matriz diagonal m x m
de mudança da admitância, e M, como já foi dito, tem m colunas, com as entradas +1 e –1
nas posições relevantes.
Primeiro,considera-se apenas um ramo modificado (FIG. 4).
2
1
5
∆y1
3
4
 y11
y
 21
A =  y31

 0
 0

y12
y13
0
y 22
0
y 24
0
y33
y 44
y 42
y 43
y 44
y52
0
y54
0 
y 25 
0 

y 45 
y55 
FIGURA 4 – Rede de energia elétrica com modificação de um ramo (1 - 4)
 ∆y1
+ 1
 0
0

 
∆A =  0 [∆y1 ][+ 1 0 0 − 1 0] =  0

 
− ∆y1
 − 1
 0
 0 
0 0 − ∆y1 0
0 0
0
0
0 0
0
0

0 0 ∆y1 0
0 0
0
0
32
 y11 + ∆y1
 y
21

A + ∆A =  y31

 − ∆y1

0

y12
y13
− ∆y1
y 22
0
y 24
0
y33
y34
y 42
y 43
y 41 + ∆y1
y52
0
y54
0 
y 25 
0 

y 45 
y55 
Observa-se que a admitância entre os nós i e j muda de ∆y1 , adicionando ∆y1 a y ii e a
y jj e subtraindo-o de y ij e y ji .
Consideram-se dois ramos modificados (FIG. 5):
1
2
5
∆y1
3
4
∆y
y
∆
2
2
FIGURA 5 – Rede de energia elétrica com modificações de dois ramos (1-4) e (3-5)
+ 1 0 
0
0 

∆y
∆A =  0 + 1  1

 0
− 1 0 
 0 − 1
 ∆y1
 0

∆A =  0

− ∆y1
 0
0  + 1 0 0 − 1 0 
= M∆YM t
∆y2   0 0 + 1 0 − 1
0
0
− ∆y1
0
0
0
0
∆y 2
0
0
0
∆y1
0 − ∆y 2
0
0 
0 
− ∆y 2 

0 
∆y 2 
Logo, a matriz com dois ramos modificados será:
33
 y11 + ∆y1
 y
21

A + ∆A =  y31

 − ∆y1

0

y12
y13
− ∆y1
y 22
0
y 24
0
y33 + ∆y 2
y34
y 42
y 43
y 44 + ∆y1
y52
− ∆y 2
y54

y 25 
− ∆y 2 

y 45 
y55 + ∆y 2 
0
Observa-se que os ∆ y são adicionados a
y11 , y 33 , y 44 ey55 e subtraídos de
y14 , y 41 , y 35, y 53 que, particularmente, são nulos, porque não há ligações entre estes nós.
2.3 Modificação por nó orientado
Esta é uma modificação mais geral, pois podem ser feitas simultaneamente alterações
em todos os elementos da matriz associados a um dado conjunto de nós. A matriz ∆Y tem a
dimensão m x m, onde m é o número de nós envolvidos. A matriz M tem m colunas cada uma
com uma única entrada +1 na posição relevante como se vê no exemplo a seguir.
Considera-se a mesma matriz A vista no exemplo anterior .
Quando dois nós são envolvidos, tem-se:
1
0

∆A = 0

0
0
0
0
 ∆y1
0.
 − ∆y1
1 
0
 ∆y1
 0
− ∆y1  1 0 0 0 0 
= 0
.
∆y1  0 0 0 1 0 
− ∆y1
 0
0 0 − ∆y1
0 0
0
0 0
0
0 0
∆y1
0 0
0
0
0
0

0
0
∆A é a mesma matriz encontrada quando a modificação foi feita no ramo 1-4 (FIG. 4).
Quando quatro nós são envolvidos, considerando a matriz A dada no exemplo anterior
e as modificações que agora envolverão os nós 1, 3, 4 e 5, tem-se:
34
1
0

∆A = 0

0
0
0 0 0
 ∆y1
0 0 0 
− ∆y1
0 1 0.
 0
1 0 0 
0
0 0 1 
 ∆y1
 0

∆A =  0

− ∆y1
 0
0
0
0
0
0 ∆y 2
0
0
0 − ∆y 2
− ∆y1
∆y1
0
0
0
0
∆y 2
− ∆y 2
− ∆y1
0
0
∆y1
0
0  1
0  0
.
− ∆y 2  0

∆y 2  0
0
0
0
0
0
0
1
0
0
0
0

1
0
1
0
0
0 
0 
− ∆y 2 

0 
∆y 2 
Mais uma vez, conclui-se que ∆ A continua sendo a mesma anterior, quando se fez a
modificação nos ramos 1-4 e 3-5 (FIG. 5).
Sendo a matriz A uma matriz de admitância de uma rede de energia elétrica, ela será
simétrica e esparsa, principalmente se tratando de um sistema de grande porte. A matriz
modificação ∆A é ainda mais esparsa e poderá também ser decomposta num produto LU,
onde L é uma matriz triangular inferior com elementos unitários na diagonal principal e U é
uma matriz triangular superior:
∆A =
 ∆y1
 0

 0

− ∆y1
 0
0
0
0
0
0
0 − ∆y1
0
0
0
0
0 ∆y1
0
0
0  1
0  0
0 =  0
 
0  − 1
0  0
0
1
0
0
0
∗
0
0
1
0
0
0
0
0
1
0
0
0'
0

0
1 
∆y1
 0

 0

 0
 0
0
0
0
0
0
0 − ∆y1
0
0
0
0
0
0
0
0
∗
0
0
0

0
0
U = D U , onde D é matriz diagonal e U é uma matriz triangular superior com os elementos
∗
da diagonal iguais a um. Então, ∆ A = L D U .
1
0

∆ A = 0

− 1
 0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0 ∆y1
0  0
0. 0

0  0
1  0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 1
0 0
0.0

0  0
0 0
0
1
0
0
0
0 −1
0 0
1 0
0 1
0 0
0
0
0

0
1
35
O que determina o melhor método a ser usado (nó orientado ou ramo orientado) é o
gasto computacional necessário para o processamento de cada um deles. Este gasto aumenta
com a ordem da matriz modificação ∆Y .
Inversa da matriz modificada
Para resolver a equação (A + ∆A) x = b, deve-se calcular a inversa ( A + ∆A) −1 .
Tem-se:
( A + ∆A) −1 = A−1 ( I + ∆A. A−1 ) −1
e desenvolvendo-se formalmente em série de potências,
( I + ∆A. A−1 ) −1 = I − ∆A. A−1 + (∆A. A−1 ) 2 − (∆A. A−1 )3 + ...
Portanto,
[
]
( A + ∆A) −1 = = A−1 ( I + ∆A. A−1 ) −1 = A−1. I − ∆A. A−1 + (∆A. A−1 ) 2 − ( ∆A. A−1 )3 + ... =
[
]
= A −1 − A −1 ∆A. A −1 − (∆AA −1 ) 2 + (∆A. A −1 ) 3 − ... =
[
]
= A −1 − A −1 . I − (∆A. A −1 ) + (∆A. A −1 ) 2 − (∆AA −1 ) 3 + ... .∆A. A −1 =
= A −1 − A −1 ( I + ∆A. A −1 ) −1 .∆A. A −1 ,
[
]
então, x = A −1 − A −1 ( I + ∆A. A −1 ) −1 ∆A. A −1 .b
Se ∆A = M∆YM t , então, ( A + ∆A) −1 = A−1 − A−1 ( I + M∆YM t A−1 ) −1 M .∆YM t . A−1
Simplificando, mais a identidade acima, toma-se:
C= ( I + ∆YM t A −1 M ) −1 .∆Y , donde:
∆Y = ( I + ∆YM t A −1 M ).C , logo:
36
M∆Y = ( M + M∆YM t A −1 M ).C
M∆Y = ( I + M∆YM t A −1 ).M .C , donde :
MC = ( I + M∆YM t A −1 ) −1 M∆Y e , tem − se :
MCM t = ( I + M∆YM t A −1 ) −1 M∆YM t
Então, tem-se que: ( A + ∆A) −1 = A−1 − A−1.M .C.M t . A−1
Pondo :
X = A −1 .M
Z = M t A −1 M = M t X
Vem: C = ( I + ∆Y .Z ) −1 ∆Y ,
Após a modificação a solução é: x = ( A−1 − A−1M .C.M t . A−1 ).b .
Pode-se
escrever também: x = A−1 ( I − M .CM t . A−1 ).b . Se
A = LU, vem A −1 = U −1 .L−1 ,
então:
x = U −1 L−1 ( I − M .C.M t . A −1 ).b
x = U −1 ( L−1 − L−1 .M .C.M t .U −1 .L−1 ).b
x = U −1 ( I − L−1 .M .C.M t .U −1 ) L−1 .b
A idéia é tornar o processo de cálculo de x rápido e eficiente. A inversa de A será
calculada somente uma vez e armazenada. Verifica-se que as inversas, que se devem calcular,
são altamente esparsas e as outras operações necessárias são somente adição e multiplicação
de matrizes.
37
São mostradas abaixo as estruturas da admitância nodal com cinco nós, antes e depois
de se fazer a modificação, isto é, antes de ligar o nó 4 ao nó 5. Pode-se verificar como ficaram
também as estruturas das matrizes admitâncias antes e depois da modificação.
4
5
2
3
1
FIGURA 6 – Estrutura da matriz admitância nodal: rede com cinco nós
5
4
2
3
1
FIGURA 7 – Estrutura da matriz admitância nodal: rede de cinco nós, com a conexão
dos nós 4 e 5
38
1
X
X

X



2
X
X
X
3
4
X
X
X
X
X
X
X
5
1
2
1
2

X3

4
X  5
X
X

X



X
X
Estrutura da matriz admitância: A
X
3
4
X
X
X
X
X
X
X
X
5
1
2

X3

X4
X  5
Estrutura da matriz admitância: A + ∆A
2.4 Exemplo
Considerando-se as estruturas das figuras 6 e 7 dá-se o exemplo seguinte, atribuindo
valores numéricos;
0   x1   0 
 6 −3 −3 0
− 3 6
0 − 3 0   x2   6 

− 3 0
6 − 1 − 2  x3  =  0 

   
0   x4   − 2 
 0 − 3 −1 5
 0
0 −2 0
3   x5   − 3
Considera-se uma rede de energia elétrica de 5 nós, portanto, a matriz A é 5 x 5 e as
matrizes x e b são 5 x 1 cada uma. Pode-se também, neste caso, ter cada matriz x e b até 5
x 5, isto é, se A é de ordem n x n, as matrizes x e b podem ser n x m, onde m ≤ n . É
interessante observar que se têm várias combinações possíveis, principalmente se n é um
número grande.
0 
 6 −3 −3 0
− 3 6
0 − 3 0 

A= − 3 0
6 − 1 − 2 e decompondo A em L U, tem-se:


0
 0 − 3 −1 5
 0
0 −2 0
3 
39
 1
 1
− 2
 1
−
L=  2
 0


 0

0
0
0
1
0
0
1
0
1
3
2
−
3
−
0
1
2
1
−
2
−
6 − 3 − 3
5
3

0 2 − 2
4
U = 0 0
0
0 0

0
0 0
1
−
1
2
0

0

0

0


1

0

−3 0 
− 2 − 2

2 − 1
3
0
2 
e
0
e
1
1
2
2
−1 
L = 3
2
3
2

3
1
6

0

−1
U = 0


0

0

1
9
2
9
0
0
0
0
1
0
0
1
0
1
3
5
6
7
12
1
6
1
12
1
4
0
0
0
0
1
2
3
4
1
3
5
12
1
4
1
2
0
1
1
2
0

0

0

0


1

4
9
7

18 
1
2
1

3
2
3 
Considera-se, por exemplo, ∆Y = [1] fazendo uma ligação do nó 4 ao nó 5, e
0
0
 
como foi visto acima a matriz de conexão é M =  0  e, como C = [I + ∆Y Z ]−1 ∆Y , tem-se:
 
1
− 1
2
 23 19
 27 27
3
 19 89
7

 27 108 12
2
7
3
t −1
Z = M A M = [0 0 0 1 − 1] 
3
12
4
5
11 1

18
2
9
7
1
4
18
2
 9
3
2
C = ( [1] + [1].  ) −1 [1] =  
3
5
 
5
4
9 9
11 7   0 

18 18   0 
2
1 1
 0  =  
2 2    3
2 1 1

3 3  − 1
1
2
3 3 
40
0
0

0
MCM t = 
0

0

0 0
0
0 0
0
0 
0 
0 
3 .
− 
5
3 
5 
0 0
0
3
0 0
5
3
0 0 −
5
E:
x = [U −1 ( I − L−1MCM −1U −1 ) L−1 ] b, sendo que x é o vetor das tensões e b o vetor das correntes.
Resolvendo-a por partes, tem-se:
L−1MCM t =
1
1
2
2

3
2
3
2

3
0
0
0
1
0
0
1
0
1
3
5
6
7
12
1
2
3
4
1
1
2
0
 0
0 
0

0  0

0
0 

 0
1 

0 0
0
0 0
0
0 0
0
3
0 0
5
3
0 0 −
5
0  0
0  0
0  0
3 = 
−  0
5
3  
0
5  
0 0
0
0 0
0
0 
0 
0 
3
− 
5
3 
10 
0 0
0
3
0 0
5
3
0 0 −
10
L−1MCM tU −1 =
0
0

0

0

0

0 0
0
0 0
0
0 0
0
3
0 0
5
3
0 0 −
10
1

0  6
0   0

0 
3 0
− 
5 
3  0

10  
0

1
0

0
I − L−1 M C M t U −1 = 
0

0

(
)
U −1 I − L−1MCM tU −1 =
1
9
2
9
0
1
6
1
12
1
4
0
0
0
0
0
0 0
0
1 0
0
0 1
1
3
5
12
1
4
1
2
0
7
0 0
10
3
0 0
20
4
9  0
7 
 0
18  
1  0
=
2  0
1 

3  0
2  
3 
0
0 
0
1

5
9
10 
0 0
0
0 0
0
0 0
0
3
0 0
10
3
0 0 −
20
0 
0 
0 
1
− 
5
1 
10 
41
1
6

0

0


0

0

1
9
2
9
1
6

0

0


0

0

0
1
6
1
12
1
4
4
9
7

18 
1
2
1

3
2
3 
1
5
5
12
1
4
1
2
0
0
0
0
0
1
9
2
9
1
6
1
12
1
4
3
10
7
20
1
4
2
5
1
10
0
0
0
0
0
1
0

0

0

0

0 0
0
1 0
0
0 1
0
7
0 0
10
3
0 0
10
0
0 
0
1 =

5
9
10 
7
15 
13 

30 
1
2
2

5
3
5 
U −1 ( I − L−1MCM tU −1 ) L−1 = ( A + ∆A) −1
1
6

0

0


0

0

1
9
2
9
0
1
6
1
12
1
4
0
0
0
0
3
10
7
20
1
4
2
5
1
10
7
1
15   1
13  
 2
30   2
1 
3
2  2
2 
 3
5  2
3 
3
5 
0
0
0
1
0
0
1
0
1
3
5
6
7
12
1
2
3
4
1
1
2
 38 31 2
0 
3
 45 45
0  31 143 7

  45 180 12
0  2
7
3
 =
3
12
4
0  8
17
1
 
  15 30
2
1  7
13
1
 
2
 15 30
Agora, pode-se calcular as tensões, usando a equação:
x = {U −1 ( I − L−1MCM tU −1 ) L−1} b
x = ( A + ∆A ) −1 b
 38 31 2
 45 45 3
 31 143 7

 45 180 12
2
7
3
x =
3
12
4
8
17
1

2
 15 30
13
1
7
 15 30
2
8
15
17
30
1
2
3
5
2
5
7
15 
5
13   0   2 

30   6   7 
 
1
 0  = 3
2    1
2   − 2  
1

5   − 3  
 0 
3
5 
8
15
17
30
1
2
3
5
2
5
7
15 
13 

30 
1
2
2

5
3
5 
42
5
2
7
3
As tensões serão, portanto: x1 = , x2 = , x3 = 1, x4 = 1 e x5 = 0
Para cada caso específico de modificação da rede, o processo pode ser dividido em
duas fases:
Fase preparatória: cálculo da inversa de A, cálculo de L e U e suas inversas e cálculo das
matrizes C e Z;
Fase solução: encontrar o vetor x através da equação: x = U −1 ( I − L−1MCM tU −1 ) L−1 b .
Para outras modificações no sistema não será necessária a inversão da nova matriz da
rede, a matriz inicial A será invertida e armazenada uma única vez como também as inversas
de L e U e as eventuais modificações serão calculadas conforme as fases acima. Como se
pode observar, efetua-se simplesmente a multiplicação de matrizes a cada nova modificação.
Neste capítulo foram consideradas modificações da matriz A, modificações estas feitas
por nós ou ramos orientados. A partir da equação matricial ( A + ∆A) x = b, chegou-se à
fórmula x = [ A −1 − A −1 ( I + ∆A. A −1 ) −1 ∆AA −1 ] b através de deduções matemáticas. A idéia
principal é tornar o cálculo de x rápido e eficiente. Isto é possível, pois basta armazenar
A −1 uma única vez e usar este fato a cada modificação efetuada. Verificou-se que pode-se
armazenar as inversas de L e U que também permitem o cálculo de x da equação matricial.
CAPÍTULO 3
MÉTODOS DE REFATORIZAÇÃO PARCIAL
Quando o número de alterações da matriz A no sistema A x = b não é pequeno, as
modificações são permanentes e não há necessidade de se resolver o sistema repetidamente,
os métodos de refatorização parcial são mais eficientes.
A refatorização parcial é aplicável a qualquer matriz A não singular, mas neste
capítulo considera-se que ela seja a matriz dos coeficientes de uma rede nodal.
Vê-se neste capítulo como se faz a decomposição L U por blocos para calcular a
refatorização da submatriz que foi modificada.
3.1 Método de refatorização parcial simples
Este método refatora somente a submatriz que contém os elementos modificados da
matriz. Os elementos da matriz fora da submatriz não são alterados[Brandwajn,86].
O problema deste método é que o tamanho da submatriz, e consequentemente o
trabalho de refatorização são influenciados pela posição dos elementos modificados na matriz
A. Se os elementos modificados estiverem próximos do topo da matriz, pouca ou nenhuma
vantagem é alcançada neste método.
 y11
y
 21
 0
Seja A = 
 0
 y51

 0
y12
0
0
y15
y 22
0
y 24
0
0
y33
y34
0
y 42
y 43
y 44
0
0
0
0
y55
y62
y63
0
y65
1
0 
y26 
y36 

0 
y56 

y66 
2
4
∆y
5
6
FIGURA 8 – Rede referente à matriz A da rede nodal modificada
3
44
 y 44
Seja B =  0
 0
0
y55
y56
0 
y56  a submatriz de A que contém os
y66 
elementos que serão modificados, e eles se encontram na parte inferior, o que é vantajoso,
pois pode-se refatorar somente a submatriz que neste caso é de ordem menor que a matriz A.
1
 ∆y 0 − ∆y 


∆B =  0  [∆y ] [1 0 − 1] =  0
0
0  e tem-se portanto:
− 1
− ∆y 0 ∆y 
 y 44 + ∆y
B + ∆B =  0
 − ∆y
0
y55
y65
− ∆y 
y56 
y66 + ∆y 
3.2 Decomposição L U em blocos
Para se fatorar apenas a submatriz B, faz-se a decomposição da matriz A em blocos:
A
A =  11
 A21
A12 
A22 
onde:
A é n x n, invertível, A11 é r x r, invertível, A12 é r x (n-r) e A21 é (n-r) x (n-r).
Prova-se que:
 Ir
A = LU =  __
 A21 A11−1
Demonstração
Tem-se:
|
__
|
0
__ 
I r 
 A11
 __

 0
|
__
|
A12 
__ , onde C = A22 − A21 A11−1 A12
C 
45
| 0   A11 | A12   A11
 Ir
 __
| __   __ | __  =  __
:
 A21 A11−1 | I r   0 | C   A21
|
__
|

____________  = A
A21 A11−1 A12 + C 
A12
−1
donde: C = A22 − A21 A11 A12
 A11
 A21
Supõe-se que: A + ∆A = 
A12 
, ou seja, modifica-se apenas o bloco A22
B22 
| 0   A11 | A12 
 Ir

Então A + ∆A =  __
| __   __ | __ 
 A21 A11−1 | I r   0 | D 
−1
Onde: D = B22 − A21 A11 A12
•
isto é, A + ∆A = L U
•
•
com L = L
 A11 | A12 
U =  __ | __ 
 0 | D 
•
e
De ( A + ∆A) y = b vem L U • y = b . Pondo z = U • y , vem L z = b.
Assim, para resolver ( A + ∆A) y = b , acha-se A= L U ( em bloco ) e resolve Z1 
 , onde
Z 2 
se L z = b para achar z. Achando-se z , resolve-se U • y = z = 
Z1 é r x1 e Z 2 é (n-r) x 1.
 A11
U =  __
 0
•
|
__
|
A12 
__  e
D 
−1
D = B22 − A21 A11
A21
 Y1 
Se y =  ___  onde Y1 é r x 1 e, Y2 é (n-r) x 1. Então, U • y = z dá:
 Y2 
 A11Y1 + A12Y2 = z1
. Após achar , Y2 tem-se

 DY2 = z 2
−1
Y1 = A11
( z1 − A12Y2 ) ,
46
Em D Y2 = Z 2 , faz-se
D = LoU o ,
U oY2 = w eLo w = Z 2
calculado w pode − se achar Y2 , resolvendo U oY2 = w
3.3 Exemplo
Seja a resolução do sistema ( A + ∆A) y = b onde foram feitas modificações apenas
no bloco A22 .
0 
 6 −3 −3 0
− 3 6
0 − 3 0 

 A11
Seja A = − 3 0
6 − 1 − 2 = 


 A21
0 
 0 − 3 −1 5
 0
0 −2 0
3 
A12 
, onde:
A22 
0
 6 − 3 − 3
0
5 0 
0 − 3 − 1 



A11 = − 3 6
e A22 = 
0 , A12 = − 3 0 , A21 = 

0 0 − 2
0 3


− 3 0



6
 − 1 − 2
Tem-se:
1 1
3 6
1 1
A11−1 = 
6 4
1 1
 6 12
1
 2
6
−
1
−1
; A21 A11 =  3
1
12 
−
1
 2
4 
5
6
1
−
6
−
1
− 
2 e A A−1 A = 3 1
1  21 11 12 1 1
− 
2
Considera-se que a modificação foi a ligação do nó 4 ao nó 5, onde ∆y = 1 , então
0
 6 −3 −3 0
− 3 6
0 − 3 0 

6 − − 1
( A + ∆A) = − 3 0
6 − 1 − 2 , com B22 = 



 −1 4 
0
3
1
6
1
−
−
−


 0
0 − 2 − 1 4 
decompondo A + ∆A em L• U • (em blocos) pode-se escrever a equação:
L• U • y = b , mas como L• = L tem-se LU • y = b e fazendo U • y = z ,vem L z = b.
47
Cálculo de z, na equação L z = b;
 1
 0

 0
 2
−
 3
− 1
 2
0
1
0
5
−
6
1
−
6
0
0
1
1
−
2
1
−
2
0 0
 z1   0 
0 0    
z2
6
0 0    
  z3  =  0 
1 0    
z
−2
  4  



0 1  z5   − 3

0 
6 
 
então z =  0 
 
 3
− 2
Como U • y = z , passa-se ao cálculo de y , onde :
 A11
U =  __
 0
•
|
__
|
A12 
__ 
D 
D = B22 − A21 A11−1 A12
0
 6 −3 −3 | 0
− 3 6 − 3 | − 3 0   y1   0 

 y   6 

  2  
−
−
−
−
3
6
|
1
2
U•y = 
  y3  =  0 
 __ __ __ | __ __   y   3 
4
0
0
0 | 3 − 2    

  y5  − 2
0
0 | − 2 3 
 0
D Y2 = Z 2 , fatorando D em Lo U o , pode-se resolver a equação LoU o y = Z 2 e U o y = w
3 − 2
5 
Uo = 
0 3 
 1
Lo =  2
− 3
0

1

 1
Z2 =  2
− 3
Lo w = Z 2
0  w   3 
 1 =
,
1  w2  − 2
  
 3 − 2   y 4   3
0 5   y  = 0 

  5  
Uoy = w
w1 = 3
w2= 0
y4 = 1
y5 = 0
Y1 = A11−1 ( Z1 − A12Y2 )
1

 y1   3
 y  = 1
 2  6
 y3   1
 6
1
6
1
4
1
12
5
3
1
5
3
6  0   0
0 

7
1
1
 ( 6  −  − 3 0    ) =   ,
 0
12    
3
 
1  0  − 1 − 2
1 

 
4
7
3
portanto, a solução será: y1 = , y2 = , y3 = 1, y4 = 1 e y5 = 0
48
3.4 Método de refatorização parcial simples com arranjo especial
Este método supera o problema do método anterior, forçando os elementos que
precisam ser modificados para a parte inferior da matriz. O arranjo especial aumenta a
eficiência da refatorização; porém, ele pode degradar a esparsidade e aumentar o trabalho
computacional para operações progressivas e regressivas. Além disso, este método restringese a aplicações onde as posições dos elementos da matriz modificada podem ser previstas
antecipadamente [Brandwajn ,86] .
3.5 Observações do que ocorre quando se decompõe A em L D U ∗
∗
Na transformação de A em L D U , a matriz triangular inferior L e a matriz triangular
superior U
∗
não mantêm o mesmo grau de esparsidade da matriz A. Aparecem em L
elementos não nulos lij ( i < j ) onde aij correspondente de A é nulo. Estes elementos lij que
surgem em L são os “fill-ins”, preenchimentos que correspondem a novas ligações ao se
eliminar alguns nós.
Para se conseguir minimizar o número de “fill-ins”, existem técnicas que podem ser
usadas em conjunto com a fatoração de A, procurando preservar a estrutura esparsa de L.
As matrizes de incidência simétricas podem ter uma estrutura corretamente descrita
por grafos não orientados, se aij ≠ 0 implica que a ji também é diferente de zero.
Sempre que houver um segmento orientado de i para j haverá, necessariamente, outro
orientado de j para i, fato que pode ser descrito por um segmento não orientado.
49
O capítulo três mostra que o método de refatorização simples é mais conveniente, pois
o método de refatorização com arranjo especial degrada a esparsidade da matriz A. Mostra-se
que para a solução do sistema deve-se decompor a matriz A em L D U por blocos, também,
como se decompõe por blocos uma matriz e, finaliza-se com um exemplo aplicando o
método.
CAPÍTULO 4
MÉTODO DE BENNETT
O capítulo mostra um método engenhoso, devido a Bennett [Bennett,65] , utilizado
∗
para atualizar os fatores L D U de uma matriz modificada. Chega-se à atualização dos
fatores, sem alterar a matriz A do sistema A x = b. Nele também pode-se ver o algoritmo que
∗
permite estas alterações a partir das inversas das matrizes L .D e U .
4.1 Método de Bennett
Quando adiciona-se ∆A à matriz A, pelo método de composição, conclui-se que:
( A + ∆A) −1 = A−1 − A−1 ( I + ∆A A−1 ) −1 ∆A A−1 . Com a substituição de ∆A por XCY t , chega-se a
outra identidade, efetuando as operações abaixo:
( A + XCY t ) −1 =
A −1 − A −1 ( I + XCY t A −1 ) −1 XCY t A −1 =
A −1 − A −1 [ ( XC ) −1 ( I + XCY t A −1 )
[
A −1 − A −1 ( XC ) −1 + Y t A −1
]
−1
]−1 Y t A −1 =
Y t A −1 =
A −1 − A −1 [C −1 X −1 + Y t A −1 ] −1 Y t A −1 =
A −1 − A −1 [ (C −1 + Y t A −1 X ) X −1
[
A −1 − A −1 X C −1 + Y t A −1 X
]
−1
]−1 Y −1 A −1 =
Y t A −1
51
Pode-se ver como fica a inversa de uma matriz modificada quando acrescenta-se à
matriz o termo XCY t . Não é necessário armazenar a inversa da matriz a cada modificação,
basta apenas armazenar a inversa de A uma única vez; com isto, o número de operações
diminui, o que é fundamental para a computação.
Supõe-se que A seja decomposta no produto L D U. Se A for modificada pela adição
de XCY t , é desejável também ser capaz de modificar L D U, de modo a se obter a
•
•
•
decomposição L D U de A + XCY t .
Para se evitar a inversa completa da matriz modificada, toda vez que há uma alteração,
trabalha-se com os fatores triangulares.
•
•
•
Para iniciar o processo do cálculo de L D U da matriz modificada, introduze-se
as anotações:
Li → representa a matriz obtida da matriz unidade I, pela substituição da i-ésima coluna de I
pela i-ésima coluna de L.
U i → representa a matriz obtida da matriz unidade I, pela substituição da i-ésima linha de I
pela i-ésima linha de U.
K i ∗ → é a i-ésima linha de K
K ∗i → é a i-ésima coluna de K
Também são válidas as propriedades:
n
A) L = I n + ∑ ( Li − I n )
i =1
De fato, tem-se:
52
1 0 0
l
 21 1 0
1=
L = l31 0 1

 ... ... ...
ln1 0 0

... 0 
 1 0 0 ...

 0 1 0 ...
... 0 

... 0  , L2 =  0 l32 1 ...


... ...
... ... ... ...
 0 ln 2 0 ...
... 1 

0
1

0
0

0  , ..., Ln =  0


...
...
 0
1 
0
1
0
...
0
0 ... 0 
0 ... 0 
1 ... 0 

... ... ...
0 0 1 
Logo:
0 0
l
n
 21 0
i
( L − I n ) = l31 l32

i =1
 ... ...
ln1 ln 2

0
0
∑
0
...
ln 3
... 0 
... 0 
... 0  e, portanto: L = I n +

... ...
... 0 
∑ (L − I )
n
i
n
i =1
B) ( Li ) −1 = 2 I n − Li ,
Se A é n x n e B é a matriz obtida de A pela aplicação da transformação elementar T,
isto é , B = T(A), então B = E A, onde E é a matriz T( I n ).
1
0

 ...

0
j
Tem-se: L = .
0

0
 ...

 0
0 ...
0
0 ... 0
1 ...
0
0 ... 0
... ...
...
... ... ...
0 ...
1
0 ... 0
0 ... l j +1. j
0 ... l j +2, j
1 ... 0
... ...
...
... ... ...
0 ...
ln , j
0 ... 0
0 ... 0
0
0 
...

0
0

0
...

1 
Portanto:
L j = Enj (ln , j )...E j +1, j (l j +1, j ) I n , onde Eij (lij ) é a matriz elementar obtida de
linha i a linha j multiplicada por lij .
I n somando à
53
1
0

...

0
j −1
Donde ( L ) = E j +1, j (−l j +1. j )...Enj (−lnj ) I n 
0

0
...

 0
0 ...
0
0 ... 0
1 ...
0
0 ... 0
... ...
...
... ... ...
0 ...
1
0 ... 0
0 ... − l j +1, j
0 ... − l j +2, J
1 ... 0
... ...
...
... ... ...
0 ...
− ln , j
0 ... 0
0 ... 0
Exemplo: para j = 1
2 I n − L1 =
2
0

0

...
 0
0
2
0
...
0
0 0
... 0   1


... 0  − l21 1 0
... 0  =  − l31 0 1
 
... ...  ... ... ...
... 0   − ln1 0 0
0 ... 0   1 0 0
0 ... 0   l21 1 0
2 ... 0  −  l31 0 1
 
... ... ...  ... ... ...
0 ... 2   Ln1 0 0
... 0 
... 0 
... 0  = ( L1 ) −1

... ...
... 1 
Valem também as propriedades:
n
C) U = I n + ∑ (U i − I n )
i =1
D) (U i ) −1 = 2 I n − U i
∗
Seja A uma matriz de ordem n fatorada em um produto L D U .
 a11
a
 21
A =  a31

 ...
 an1

d11
0

D=  0

 ...
0

a12
a13
a22
a23
a32
a33
...
...
an 2
an 3
0
0
d 22
0
0
...
d 33
...
0
0
... a1n 
... a2 n 
... a3n 

... ... 
... ann 
,
1 0
l
 21 1
L = l31 l32

 ... ...
ln1 ln 2

0 
 1 u12

0 1
0 0 

0 0  e U ∗ = 0 0


... ... 
... ...
 0 0
0 d 55 
0
0
...
0
...
1
...
...
...
ln3 ...
u13
u23
1
...
0
0
0 
0 ,

... 
lnn 
... u1n 
... u2 n 
... u3n 

... ... 
... 1 
0
0 
...

0
= 2I n − Lj
0

0
...

1 
54
Fazendo: d11 = a11 ,
1
l 
 21 
l31 
1
obtém-se L∗1 =
A∗1 =  . 
a11
. 
. 
 
l n1 
e
U 1∗ =
1
A1∗ = [1 u12
a11
u13 ... u1n ] .
a
F
Além disso, se A é particionada em submatrizes tem-se A =  11

 G H
a11
Então, ( L ) A(U ) =  0


∗1 −1
1 −1
a11
A =L 
0

1
0

 e tem-se ainda:
1
H−
GF 
a11

0

 U ∗1
1
H−
GF 
a11

Referindo-se A como A (1) , escreve − se A ( 2 ) = H −
1
GF .
a11
Então:
1 0
l
 21 1
(1) 
A = l31 l32

 ... ...
ln1 ln 2

0
0
1
...
ln 3
... 0 
... 0 
a
... 0   11
 0
... ... 
... 1 
 1 u12
0 1
0 
0 0
A( 2)  
... ...
 0 0
As operações acima repetidas em A
( 2)
u13
u 23
1
...
0
... u1n 
... u 2 n 
... u3n 

... ... 
... 1 
fornecem L(∗22) ,U 2( 2∗) e d 22 .
∗
Com repetições adicionais, completa-se o processo e determina-se L D U .
55
4.2 Prova do processo
Tem-se:
1  a11
L
0
 1
− −

 l21

= .
 .

 .
l
 n1
 1
− − −

 l 21
0  ∗1 
U = .
A( 2 ) 
 .

 .
 l
 n1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 
− − 
  a11 | a12

 − − | − −
I n−1   0 |




0 
− − − 
  a11
|

 − − − −
|
I n−1   0




...
−−
A
( 2)
 a11
− −

a1n   a21

− −  =  .
  .

 .
 .

 a21a12
l21a12 ... l21a1n   a
 11
Onde K =  ... ... ...  =  ...
ln1a12 ... ln1a1n   an1a12
 a11

 a21 
 . 
 
G =  .  e F = [a12 . . . a1n ] .
 
 . 
 a2 n 
 
A( 2 ) = H −
0  1
|
u12 ...


− −  − − − − − − − −
A( 2 )   0
|
I n−1
| a12
...
| −−
−−
|
|
|
K + A( 2 )
|
|
a1n 
− − 








a21a1n 
a11 
 1
...
...  =
GF pois
an1a1n  a11
...
a11 

...
Portanto H = A( 2) +
1
GF . Assim ,
a11


 a11 |
  a11 | 0 
0
1 −1

 

∗
1 −1
−−
( L ) A(U ) = − − |
 = − − | − − 
 0 | H − 1 GF   0 | A( 2) 


a11
1
GF e
a11
u1n 
− −  =

56
4.3 Exemplo
A= A
(1)
4 − 6
 2
∗

= − 4 − 7 10  . Decompondo A no produto L D U tem-se :
 2
7 − 9
 1 0 0
1 2 − 3
 2 0 0




∗
L = − 2 1 0 , U = 0 1 − 2 e D = 0 1 0
 1 3 1
0 0 1 
0 0 3
Toma-se:
d11 = 2 ,
U1• =
L1•1
2 1 
1
1   
A•1 = − 4 = − 2 e
=
a11
2
 2   1 
1
1
A1• = [2 4 − 6] = [1 2 − 3]
a11
2
2
A=
G
F
 − 4
− 16 24 
, F = [4 − 6] e G =   ; log o GF = 

H
− 12
2
 8
− 7 10 
− 7 10  − 8 12  1 − 2
1
H =
,H −
GF = 
−
=
= A( 2 )




a11
 7 − 9
 7 − 9  4 − 5 3 − 3
( 2)
d 22 = 1 = a11
H−
F = [− 2]
G = [3]
1
GF = −3 + 6 = 3 = A(3)
( 2)
a11
1
L(•21 ) =  
3
U1(•2) = [1 − 2]
então:
H = [− 3] e GF = [− 6]
57
 2 0 0
1 2 − 3 
 1 0 0




∗
L = − 2 1 0 , U = 0 1 − 2 eD = 0 1 0
0 0 3
0 0 1 
 1 3 1
No procedimento com a matriz modificada A + XCY t , a primeira linha e a primeira
•
•
•
•
coluna levam imediatamente a L•1 , d11 e U 1• , que são a primeira coluna de L , o primeiro
•
•
termo da matriz D e a primeira linha de U , considerando-se que A + XCY t = L• D • U • .
d11•
0 
 .
B ( 2) 
Fazendo-se A + X C Y t = B , tem-se: B (1) = 
0
Como é possível obter L D U de A conhecendo-se
•
•
•
A(1) , A( 2 ) ,..., A( n ) , o mesmo
t
pode ser feito para L , D eU da matriz A + X C Y = B.
Exemplo:
Para i = 1
0 
1 β 
, (U • )1 = 


I n−1 
0 I n−1 
1
( L• )1 = 
α
( )
( L• ) −1 B (1) U •
−1
d •
=  11
0

0
A
( 2)
+X
( 2)
C
( 2)
(Y
( 2) t 
)
t
Se XC = D, YC = E , então:
( DY t )11 =
m
∑
D1k Ykt1 =
k =1
m
∑
Y1k (Ckt j ) X 1 j =
j ,k =1
m
m
∑ ∑
Y1k
k =1
m
∑E
j =1
t
1 j X j1
X 1 j C jk =
j =1
m
m
∑∑ Y
1k
X 1 j C jk =
j =1 k =1
(
= X CY
t
)
11
;
d11• = a11 + Y1• C t X 1t• e como a11 = d11 tem − se que d11• = d11 + Y1• C t X 1t•
Por conveniência computacional, incluem-se os vetores:
58
p (i ) = (C (i ) ) t ( X 1(•i ) ) t ou ( p i ) t = X 1(•i )C (i )
q (i ) = C (i ) (Y1(•i ) )t
ou (q (i ) ) t = Y1(•i ) (C (i ) ) t
4.4 Algoritmo
Define − se C 1 = C , X 1 = X , Y 1 = Y , p 0 = 0, q 0 = 0
i =1
→
( p i ) t = X 1i• C i ;
p i → p i −1
d ii = Dii + Y1i• p i ;
d ii → Dii
→→→→→→→→→→ i < n
; i = n, fim
↓
↓
q i → q i −1
(q i ) t = Y1i• (C i ) t ;
j =1
→→→→→→→→→→
X ij•+1 = − Li + j ,i X 1i• + X ij +1,• ;
X ij+•1 → X ij +1,•
Y ji•+1 = − X i ,i + j Y1i• + Y ji+1,• ;
Y ji•+1 → Y ji+1,•
L•i + j ,i = Li + j ,i + (
U i•,i + j = U i ,i + j (
1
) X ij+•1q i ;
d ii
L•i + j ,i → Li + j ,i
1 i +1 i
)Y j • p ;
d ii
U i•,i + j → U i ,i + j
j+i → j
j < n − i +1
j = n − i +1
↑←←←←←←
↓
C i+ j = C i − (
1 i i t
)q ( p ) ; C i +1 → C i
d ii
↓
i +1→ i
retorna
o processo,
59
Se A e C forem simétricas e X=Y, o algoritmo se simplifica e o número de operações é
dividido em duas partes. Isto acontece nos problemas que envolvem as redes de energia
elétrica, pois as matrizes admitâncias são simétricas, X é a matriz de conexão M e
Y t = M t , isto é , Y = M = X .
4.5 Exemplo
Sejam as matrizes
4 − 6
2

A = − 4 − 7 10  ,
 2
7 − 9
X
(1)
1 2 
= X = 0 − 3 ,
8 6 
 1 0 0
L = − 2 1 0 ,
 1 3 1
C
(1)
2 3
=C =
,
 1 1
Cálculo de X ( 2) e Y ( 2 )
X (j•i +1) = − Li + j ,i X 1(•i ) + X (ji+)1,•
Y j(•i +1) = −U i ,i + j Y1•( i ) + Y j(+i1) ,•
X 1(•2) = 2[1 2]+ [0 − 3] = [2 1]
X 2(•2) = −1[1 2] + [8 6] = [7 4]
Y1•( 2) = −2[8 − 5] + [17 − 10] = [1 0]
Y2(•2) = 3[8 − 5] + [− 26 16] = [− 2 1]
 1 0
Y ( 2) = 

− 2 1
2 1
X ( 2) = 

7 4 
•
Cálculo de: L•1
e U 1••
 2 0 0
D = 0 1 0 ,
0 0 3
Y
(1)
1 2 − 3 
U = 0 1 − 2
0 0 1 
−5 
 8

= Y =  17 − 10
− 26 16 
60
L•21 = −2 +
L•31 = 1 +
1
1
[2 1].  = − 13
9
9
3
1
1
[7 4].  = 28
9
3 9
U 12• = 2 +
4
1
[1 0]   = 22
9
5 9
U 13• = −3 +
4
1
[− 2 1].  = − 10
9
3
5


 1 
 13 
L••1 = − 
 9
 28 
 9 
 22
U 1•• = 1
9

−
10 
3 
Cálculo de C ( 2 ) , p ( 2) , q ( 2) , d 22 , X (3) e Y (3)
C
( 2)
 14

2 3 1 1
=
−   [4 5] =  9

3
1 1 9 3
−
 9
 14

( p ( 2 ) ) t = [2 1]  9
3
−
 9
(q
 14

) = [1 0]  9
22

9
( 2) t
22 
9  =  25
6 
−  9
9
3
− 
9 = 14
6 
−  9
9
X (3) = −3[2 1] + [7 4] = [1 1]
Y (3) = 2[1 0] + [− 2 1] = [0 1]
22 
9 
6
− 
9
38 
9 
3
− 
9
p ( 2)
q
( 2)
 25 
 
=9 
38
 
9
 14 
 
= 9 
3
− 
 9
61
Cálculo de L••2 e U 2••
L•32
 14 
  113
9
= 3 + [1 3]  9  =
3
34
−  34
 9
•
U 23
 25 
 
9
15
= −2 + [0 1]  9  = −
38
34
17
 
9
L••2


 0 
= 1 
113 


 34 
15 

U 2•• = 0 1 − 
17 

Cálculo de C (3) , p (3) , q (3) e d 33
C ( 3)
 14

= 9
3
−
 9
22 
 14 

9
9 −  9   25
 3 
6
−  34 −   9
9
 9
 14

( p ) = [1 1]  34
3
−
 34
24 
34  =  11
10  
−   34
34 
( 3) t
 14

(q (3) ) t = [0 1]  34
24

 34
3
34  =  24
10   34
− 
34 
−
 14
38   34
=
9  − 3
 34
24 
34 
10 
− 
34 
 11 
14  (3)  34 
,p = 
14
34 
 
 34 
 24 
10  (3)  34 
− ,q = 
10 
34 
− 
 34 
 11 

 58
d 33 = 3 + [0 1]  34  =
10
−  17
 34 
•
Tem-se: L


 1
0 0  9 0


D • U • = − 13 1 0 0 34
9
 9

 28 113 1 0 0
 
34
 9
Pode-se verificar que A + X C Y t = L• D • U •
 1
0 

0  0

58  0
7  
22
9
1
0
10 
3
15 
− 
17 
1 

−
62
Nste capítulo, mostra-se que John M. Bennett, substituindo ∆A por X C Y t na
matriz ( A + ∆A) −1 , chegou à identidade ( A + X C Y t ) −1 = A −1 X [C −1 + Y t A −1 X ] −1 Y −1 A −1 .
Mostra-se também que não é necessário armazenar a inversa da matriz A a cada
modificação, é suficiente armazenar a inversa de A uma única vez, o que é fundamental
para a computação. Com o desenvolvimento de um algoritmo, chegou-se à
decomposição da matriz A + X C Y t em L• D •U • a partir de L D U da matriz A. É
possível evitar a inversa da matriz modificada A + X C Y t usando L D U da matriz A,
permitindo resolver o sistema matricial a cada modificação e, também, o método foi
exemplificado.
CAPÍTULO 5
MÉTODOS DE REFATORIZAÇÃO PARCIAL I E II
Os métodos de refatorização parcial I e II foram impulsionados pela observação de
que a alteração em uma linha/coluna de uma matriz afeta somente um subgrupo de
linhas/colunas subseqüentes. Neste capítulo considera-se também a vantagem que existe em
se ordenar a matriz A, antes de fatorá-la em L U, para minimizar os "fill-ins"[ Brandwajn,86].
5.1 Métodos de refatorização parcial I e II
Alguns melhoramentos tornam os métodos de refatorização parcial I e II mais
eficientes:
1) A matriz original é organizada sem levar em consideração as modificações futuras.
Nenhum nó é forçado para fora da organização direcionada pela esparsidade da matriz.
2) Somente os fatores alterados na matriz são atualizados, não importando a posição dos
elementos na mesma.
Se a matriz A é definida positiva e simétrica, a matriz U é transposta da matriz L, mas
não é simétrica; é idêntica em relação à estrutura esparsa.
A refatorização parcial pode ser aplicada a qualquer matriz A não singular, mas neste
capítulo considera-se que ela seja a matriz dos coeficientes de uma rede nodal.
64
5.2 Ordenação dos nós por grau mínimo
Se A é a matriz admitância de uma rede, a ordenação dos nós tem o propósito de
minimizar o aparecimento de elementos não nulos, que surgem nas matrizes L e U em
posições onde na matriz original A, existem elementos nulos: são os "fill-ins" [Tinney,85].
O processo de ordenação por grau mínimo consiste em enumerar os nós da rede em
ordem crescente de seus graus. O grau de um nó é dado pelo número de ligações que ele
possui. Isto é o mesmo que enumerar as linhas/colunas da matriz, de acordo com o número de
elementos não nulos fora da diagonal.
Após ordenar a matriz usando o método de grau mínimo, ela será organizada em
níveis em forma de L invertido. Cada um desses níveis será referido com linha/coluna
[Brandwajn,86],fig 9.
Elementos de U (linhas horizontais)
↓
Elementos de L
(linhas verticais) →
b
↑ Parte da matriz que será trabalhada
Linha/coluna que está sendo alterada
FIGURA 9 – Esquema de fatorização linha superior /coluna inferior
Ao se modificar a linha/coluna em negrito somente um subgrupo das linhas/colunas
subseqüentes será afetado.
65
Para utilização dos novos métodos, utiliza-se um esquema que permite um cálculo
eficiente do caminho de refatorização. Neste capítulo é usado o esquema linha superior/coluna
inferior.
É interessante observar que a alteração de uma linha/coluna afeta somente um
subgrupo de linhas/colunas subseqüentes. Isto pode ser visto no exemplo dado abaixo para
uma rede de doze nós (FIG. 10).
4
1
9
7
6
10
11
12
3
8
5
2
FIGURA 10 – Rede nodal com 12 nós
Pode-se formar uma tabela e um grafo onde se verifica o caminho, isto é, a seqüência
que cada nó tem na rede (Tabela abaixo).
O grafo do caminho é fornecido pela tabela como pode ser conseguido, também,
através da matriz L. O grafo tem um sentido do nó de menor numeração para o de maior
numeração. Quando o nó não é conectado diretamente ao nó seguinte, usa-se o "fillin"[Tinney,85].
66
•

 •





•


•
•

 •

•


•
 •

•

•


8
•
•
•



9
•
•
•


10 
•
•
o •


11 
•
• •
• 
12 
•
• •
• o •
1
2
3
4
5
6
7
• elemento original
o elemento novo − fill − ins
FIGURA 11 – Estrutura esparsa da matriz L
Tabela de caminhos
Nó Pr óximo Nó
1
2
3
4
5
6
4
5
8
9
8
9
Nó Pr óximo Nó
7
8
9
10
11
12
10
11
10
12
12
0
FIGURA 12 – Tabela de caminhos referentes à rede nodal da FIG. 10
6
1
2
4
5
9
8
3
7
10
11
12
FIGURA 13 – Grafo do caminho com 12 nós (árvore)
67
Considerando, como exemplo, a alteração dos elementos na linha/coluna 7, os fatores
da matriz afetados podem ser encontrados diretamente a partir da matriz L (FIG. 11). Na
verdade, os fatores modificados estão localizados nas linhas/colunas 10, 11, 12.
As linhas/colunas afetadas podem, também, ser encontradas a partir do caminho do
grafo da matriz (FIG. 13). O caminho consiste de nós encontrados durante o traçado do
caminho, partindo de um nó até o último nó em ordem crescente.
Quando mais de uma linha/coluna é modificada, as linhas/colunas afetadas são
originadas pela união dos caminhos. Por exemplo: sejam as alterações nas linhas/colunas 6 e
1. Os fatores modificados estarão localizados nas linhas/colunas 4, 9, 10 , 11, 12. As outras
linhas/colunas permanecerão inalteradas.
5.3 Método de refatorização parcial I
O método de refatorização parcial I trabalha todas as linhas/colunas no caminho
composto:
Primeiro passo: identificar todas as linhas/colunas no caminho composto;
Segundo passo: encontrar o caminho composto para essas linhas/colunas, podendo assim
saber quais serão as linhas/colunas subseqüentes que serão alteradas;
Terceiro passo: trabalhar apenas com a submatriz onde se encontram as linhas/colunas que
serão modificadas.
Pode se perceber a vantagem que se consegue neste método em relação ao método de
compensação. Faz-se antes uma ordenação da matriz antes de fatorá-la, para se minimizar ao
máximo os "fill-ins", ao mesmo tempo que se identifica a submatriz que será formada pelas
linhas/colunas que serão modificadas.
68
5.4 Método de refatorização parcial II
O método de refatorização parcial II é uma variante do método de Bennett, no qual o
caminho de fatorização é utilizado para identificar as linhas/colunas que devem ser
atualizadas. É importante também ordenar a matriz A para minimizar os "fill-ins" e, para que
as matrizes L e U tenham o maior número de elementos nulos possíveis.
Ao se atualizarem os fatores L D U da matriz modificada, trabalha-se apenas as
linhas/colunas que serão atualizadas devido à modificação de uma ou mais linha/coluna.
5.5 Exemplo: (método de refatorização parcial I)
Considera-se uma rede de energia elétrica com 11 nós, (FIG. 14), onde a ordenação,
não foi efetuada.
5
4
7
6
3
2
1
8
10
9
11
FIGURA 14 – Rede de energia elétrica com 11 nós onde não foi feita uma ordenação
prévia dos mesmos
69
•


•

•


L = •
•

•







•


• •

o •


• •

• •


•
o •

•
• •


o •
•

•
• 

• • •
• elemento original
o elemento novo ( fill − ins )
FIGURA 15 – Estrutura da matriz L conseguida ao se fatorar a matriz A da rede nodal
acima, apresentando 3 fill-ins
1
2
10
3
4
5
6
7
8
9
11
FIGURA 16 – Grafo do caminho sem ordenação (árvore de 11 nós)
70
Com a ordenação de grau mínimo tem-se a ordenação mostrada na FIG. 16. Pode-se
verificar que o número de fill-ins diminuiu de três para um.
1
4
7
3
11
9
8
10
6
5
2
FIGURA 17 – Rede de energia elétrica com 11 nós onde foi feita
a ordenação de grau mínimo

•

 •




•


•
•



 •
•


•

 •

•
•


•




• • •


•
• •
•
• 


• •
• • • o •

• elemento original
o elemento novo ( fill − in )
FIGURA 18 – Estrutura da matriz L ao se fatorar a matriz A, após a ordenação
observando o grau mínimo. Neste caso aparece apenas um fill-in
71
6
3
2
1
7
8
5
10
4
9
11
FIGURA 19 – Grafo após se fazer uma ordenação de grau mínimo (árvore com 11 nós)
Pode-se representar por um sistema a rede de energia elétrica considerada acima após
a ordenação. Atribuindo-se valores às admitâncias e às correntes, considerando como
incógnitas as tensões, tem-se:
− x4
4 x1
− 2 x7
− x5
4 x2
− 2 x6
− 2 x10
6 x3
− x1
3 x4
− x2
− 2 x2
− x10
− x10
4 x5
6 x6
− 2 x1
4 x7
4 x8
− x7
− 2 x3
− x3
− x5
− x4
− x11
− x11
− x6
− x7
E, portanto, tem-se a equação matricial A x = b onde:
− x8
− x8
− x8
− x9
− x9
− x10
6 x9
6 x10
− 2 x9
− x11
− x11
=1
=1
=3
=1
=2
=3
=0
=1
− 2 x11 = 2
=1
6 x11 = 0
72
0
0 −1 0
0 −2 0
0
0
0 
 4
1 
0

1 
4
0
0 −1 − 2 0
0
0
0
0 

 
0
 3
0
6
0
0
0
0
0
0 − 2 − 1


 
0
3 0
0
0
0
0
0 − 1
−1 0
1 
 0 −1 0
 2
0
4
0
0
0
0 −1 0 


 
A=  0 −2 0
0
0
6
0
0
0 − 1 0  e b =  3
− 2 0
0 
0
0
0
0
4
0 − 1 0 − 1


 
0
0
0
0
0
0
4 − 1 − 1 − 1
0
1 


 
0
0
0
0
0 −1 −1 6
0 − 2
0
 2
0

1 
0 − 2 0 −1 −1 0 −1 0
6
0


 
0 −1 −1 0
0 −1 −1 − 2 0
6 
0
0 
Para exemplificar suponha-se que foi feita uma alteração na linha/coluna de número 7.
Observando as FIG. 17 ou 18 pode-se ver que esta alteração irá modificar apenas as
linhas/colunas 9 e 11. Isto permite trabalhar apenas na submatriz que envolve estas
linhas/colunas. Decompõe-se a matriz A em L U por blocos.
0
 4
0
4

0
0

−1 0
A11 = 
 0 −1

 0 −2
− 2 0

0
 0
0
0

0

0
A12 = 
0

0
− 1

− 1
0
0
−2
0
−1
−1
0
−1
0
0
6
0
0
0
0
0
3
8

0
0 − 2 0
−1 0

0
0 − 1 − 2 0 0

0
0
0
0 0
1

3 0
0
0 0 −1  8
, A11 = 
0
4
0
0 0
0


0
0
6
0 0

0
0
0
0
4 0


0
0
0
0 4
3
16

0

0
0
12
37
1
8
0
0
1
6
0
3
16
0
0
0
3
37
4
37
0
0
0
0
0
3
8
0
0
0
0
0
0
3
37
15
74
0
0
1
16
10
37
1
37
1
16
0
0
11
32
0
0
0
0
0
0
3
37
4
37
0
0
0

0

0

0 

0

0


0

0

1

4
0
0 
− 1
0 0 0 − 1 − 1
 6 0 − 2
0 0 0

− 1


, A21 = 0 0 − 2 0 − 1 − 1 0 − 1 e A22 =  0 6 0 

0
− 2 0 6 
0 0 − 1 − 1 0 0 − 1 − 1

0
− 1

− 1
73
 3
− 16

A21. A11−1 =  0

− 5
 16
0
−
7
37
1
3
1
−
6
−
0
 19
 32
1
A21. A11−1. A12 = 
4
 21
 32
−
0
1
16
0
−
0
−
7
16
−
0
11
37
−
0
17
74
11
32
0
−
0
13
32
1
− 
4
1
− 
4
1
− 
4
1
85 
− 
4
32
2023
7
− 
444
12 
7
455 
−
12
96 
1
21 
 173

 32
4
32

 1
641 7
, A22 − A21. A11−1. A12 =  −
444 12 
 4
7
121 
− 85

 32
12
96 
−
A x = b e A = L U em blocos então L U x = b. Fazendo U x = y, tem-se L y = b.
Cálculo de y:

 3
−
 16
 0

 5
−
 16
0
−
7
37
0
0
1
3
1
−
6
I8
1
−
16
−
0
−
0
−
7
16
11
37
0
−
0
17
74
0
11
−
32
0
−
13
32
1
−
4
1
−
4
1
−
4
0



I3 




 y1  1 
 y  1 
 2  
 y3   3 
   
 y 4  1 
 y5   2 
   
 y6  =  3
 y  0
 7  
 y8  1 
   
 y9   2 
 y10  1 
   
 y11  0
Tem-se:
y1 = 1, y 2 = 1, y3 = 3, y 4 = 1, y5 = 2, y6 = 3, y7 = 0, y8 = 1, y9 =
39
551
3
, y10 =
e y11 =
16
148
2
Cálculo de x:
 A11



U x = y, então tem-se : 
0




173
32
1
−
4
85
−
32
A12
1
−
4
2023
444
7
−
12

85 
− 
32 
7
− 
12 
455 

96 
 X 1  Y1 
 X  = Y 
 2  2
74
1 
1 
 
 39 
 3
 16 
 
 551 
1
onde Y1 =   e Y2 =  
2
148 
 
 3 
 3
 2 
0
 
1 
Como
A11. X 1 + A12 . X 2 = Y1 e B22 . X 2 = Y2 ,então :
 173
 32

B22 . X 2 =  − 1
 4
− 85
 32
matriz
1
85 
 39 
− 
 16 
4
32

 551 
2023
7
 , para calcular X 2 decompõe-se a
−  .X 2 = 
444
12 
148 
7
455 
 3 
−

 2 
12
96 
−
B22 em LoU o . Pode-se escrever então LoU o X 2 = Y2 e fazendo
U o X 2 = z , Lo z = Y2 .
 39 
 16 
 551
0
0
 1




o
L z = − 0,0462
1
0 z = 148  ,
 3 
 − 0,4913 − 0,1554 1
 2 




o
U X2 =
2,4375
logo z =  3,8355 
3.2935
5,4066 − 0,25 − 2,6563
2,4375
 0

4,5447 − 0,7061 X 2 =  3,8355  ,

 0
2,2935
0
3,3248 
1
x10 = 0,9978 fazendo os arredondamentos tem-se X 2 = 1
1
x11 = 0,9837
x9= 0,9906
A11−1 . X 1 = Y1 − A12 . X 2
A11−1 . A11 . X 1 = A11−1 (Y1 − A12 . X 2 ) ,
X 1 = A11−1 (Y11 − A12 . X 2 )
então:
75
3
8

0

0

1

X1 =  8
0


0

3
16

0

0
0
12
37
1
8
0
0
1
6
0
3
16
0
0
0
3
37
4
37
0
0
0
0
0
3
8
0
0
0
0
0
0
1
37
1
37
0
0
1
16
10
37
15
37
1
16
0
0
11
32
0
0
0
0
0
0
3
37
4
37
0
0
0

0

0

0 

0
(
0


0

0

1

4
1   0
1   0
  
3  0
  
1  −  0
2  0
  
3  0
0   − 1
  
1  − 1
0
0
1

1
0
0

1
− 2 − 1
 1

0 − 1  
1
.1 ) =   Temos,


1
−1 0
 1

−1 0 
1

1
0 −1


− 1 − 1
1
portanto: x1 = x2 = x3 = ... = x9 = x10 = x11 = 1 , que é a solução do sistema dado.
Mostra-se neste capítulo que ao se alterar uma ou mais linhas/coluna de uma matriz são
afetados somente um subgrupo de linhas/colunas subseqüentes e, também, a vantagem
de ordenar uma matriz antes de fatorá-la em L U, pois proporciona menos
preenchimentos(“fill-ins”) das posições de elementos nulos na matriz A que aparecem
nas matrizes L e U, quando se efetua a decomposição.
CONCLUSÃO
O método de compensação é apropriado às aplicações onde o número de mudanças é
pequeno, as modificações não são permanentes e as equações modificadas não precisam ser
resolvidas repetidamente.
O método da refatorização simples refatora somente a submatriz que contém os
elementos da matriz modificada e neste método, se os elementos modificados estiverem no
topo da matriz, não existe vantagem em usá-lo.
O método de refatorização simples, com arranjo especial, força os elementos para a
parte inferior da matriz, porém, pode alterar seriamente a esparsidade da matriz e restringe-se
às aplicações onde a posição dos elementos da matriz modificada pode ser prevista
antecipadamente.
O método de Bennett atualiza os fatores L D U da matriz modifica e a vantagem é que
não precisa armazenar a inversa da matriz modifica a cada modificação feita, basta apenas
armazenar a inversa uma única vez. Pode-se evitar a inversa completa da matriz modificada e
chega-se aos fatores L D U da matriz modificada através dos fatores L D U da matriz inicial.
Os métodos de refatorização parcial I e II são significativamente mais rápidos que os
métodos anteriores. A eficiência deriva dos conceitos de caminho recentemente desenvolvido.
O método de refatorização parcial I refatora seletivamente um subgrupo de linhas/colunas da
matriz modificada, isto é, somente o subgrupo que sofre modificações ao se alterar uma ou
mais linha/colunas. O método de refatorização parcial II é o de Bennett modificado que utiliza
o caminho para alterar seletivamente fatores matriciais, portanto, os dois últimos métodos são
mais usados.
REFERÊNCIAS BIBLIOGRÁFICA
[Alsaç, 83] O.Alsaç ,B. Stott &W.F. Tinney . “ Sparsity-0riented Compensation Mehods For
Modified Network Solutions”. IEEE Transactions on Power Apparatus and Systems ,vol.Pas102 , N.5, May 1983.
[Bennett, 65] Bennett, John M. "Triangular Factors of Modified Matrices", Numerische
Mathematik. 1965-pp.217-221.
[Betancourt, 86] Betancourt, Ramon and Alvarado, Fernando L. ,“Parallel inversion of sparse
matrices” – IEEE Transactions on Power Systems, vol. PWRS – 1 – Feb-1986 – pp.74-81.
[Betancourt, 88] Betancourt, Ramon, “An efficient heuristic ordering algorithm for partial
matrix refactorization” , IEEE Transactions on Power systems, vol. , August, 1988.
[Brandwajn, 86] Brandwajn,Vladimir & Chan, M. Sherman ."Partial Matrix Refactorization"IEEE Transactions on Power Systems,vol.pWRS-1, February 1986- pp.193-199.
[Dierker, 86] Dierker, Paul F. and Voxman, William L., “Discrete Mathematic”, Harcourt
Brace Jovanovich, International Edition, 1986.
[Duff ,86] Duff, J. F., Erisman, A. M. and Reid, J. K., “Direct Methods for Sparse Matrices”,
Oxford University Press, Oxford, 1986.
[George, 81] George, A. and Liw, J. W. H., “Computer Solution of Large Sparse Positive
Definite Systems”, Prendice-Hall, Englewood Clifs, N. J.,1981.
[Golumbic, 80] Golumbic, Martin Chales, “Algorithmic Graph Teory and Perfect Graphs”,
Academic Press, 1980.
[Gustavson, 72] Gustavson, F. G., “Some Basic Techiniques for Solving Sparse Systems of
Equations in Sparse Matrix and their Applications”, Rose, D. J. and Willowghby, R. A., eds.,
Plenum Press, New York, 1972, pp. 41-52.
[Leon, 98] Leon, Steven J., “Linear Álgebra with Applications”, Prentice-Hall, Englewood
Clifs, N. J., 1998.
[Monticelli, 83] Monticelli,Alcir José. “Fluxo de Carga em Rede de Energia Elétrica”.Ed.
Edgard Blücher Ltda –São Paulo. 1983.
[Monticelli,99] A. B. Alves,E.N. Asada and A. Monticelli. “Critical Evaluation of Direct and
Iterave Methods for Solving Ax = b Systems im Power Flow Calculations and Contigency
Analysis”. IEEE Transactions on Power Systems,Vol.14.No.2, May 1999.
[Morozowski, 81] Morozowski, Marciano Filho, “Matrizes Esparsas em Redes de Potência”,
Técnicas de Operação- Livros Técnicos e Científicos Editora S/A, 1981.
[Sato, 63] Sato, N. & Tinney, W. F., “Techniques for exploiting the sparsity of the network
admit New York,Dec.1963.
78
[Szwarcfiter, 83] Szwarcfiter, Jayme Luiz, “Grafos e algoritmos computacionais”, Editora
Campos Ltda., Segunda Edição, 1983.
[Tinney,67] Tinney, W. F. and Walker, J. W., “Direct Solutions of Sparse Network Equation
by Optimally Ordered Triangular Factorization”, Proceedings of the Institute of Electrical and
Electronics Engineers, New York, 55 (11):18.
[Tinney ,85] Tinney, W. F., Brandwajn, V. and Chan, S. M., “Sparse Vector Methods”, IEEE
Transactions on Power Apparatus and Systems, vol.: PAS-104, n. 2, Feb. 1985.
79
APÊNDICE I
a
0 
1
Processo detalhado para mostrar que L1  11
( 2)  U = A
0
A


 a 22
a
H =  32
 ...

an 2
... a 2 n 
... a3n 
... ... 

... a nn 
a 23
a33
...
an3
a 21 
a 
G =  31  , F = [a12
 ... 
 
 a n1 
a13 ... a1n ]
a 21a12

 a 22 − a
11

a31a12

GF
a −
=  32
H−
a11
a11 
...

a a
a n 2 − n1 12
a11

a
L1  11
0
a 21a13
a11
a31a13
a33 −
a11
...
a a
a n 3 − n1 13
a11
a 23 −
a 21a1n 
a11 

a a
... a3n − 31 1n 
( 2)
a11  = A

...
...
a n1a1n 

... a nn =
a11 
... a 2 n −
0 
=
A (2 ) 
1 0 0
l
 21 1 0
= l31 0 1

 ... ... ...
l n1 0 0

...
...
...
...
...
0
0 
0

...
1 
 a11

l 21a11


= l31a11

 ...
l a
 n1 11
a11

0


0

0
0

0
a a
a 22 − 21 12
a11
a a
a32 − 31 12
a11
...
a a
a n 2 − n1 12
a11
0
a a
a 22 − 21 12
a11
a a
a32 − 31 12
a11
...
a a
a n 2 − n1 12
a11
0
a a
a 23 − 21 13
a11
a a
a33 − 31 13
a11
...
a a
a n 3 − n1 13
a11
0
a a
a 23 − 21 13
a11
a a
a33 − 31 13
a11
...
a a
a n 3 − n1 13
a11
0

a a 
... a 2 n − 21 1n 
a11 
a a 
... a3n − 31 1n  =
a11

...
...

a a
... a nn − n1 1n 
a11 
...
0

a 21a1n 
... a 2 n −

a11 
a a 
... a3n − 31 1n 
a11

...
...

a a
... a nn − n1 1n 
a11 
...
81
a
L1  11
0
0  1
1  a11
( 2)  U = L 
A 
0
u13 ... u1n 
0 ... 0 
1 ... 0  = A

... ... ... 
0 0 1 
 1 u12
0 1
0 
0 0
A( 2)  
... ...
 0 0
a11u12
 a11

a21a12
l21a11 l21a11u12 + a22 −
a11

a31a12

= l31a11 l31a11u12 − a32 −
a11

...
...

ln1a11 ln1a11u12 − a3n + an1a12

a11
...
a11u13
a a
l21a11u13 + a23 − 21 13
a11
a31a13
l31a11u13 + a33 −
a11
...
a a
ln1a11u13 + an 3 − n1 13
a11
...
...
...
...
Pode-se verificar que:
l21 a11 = a21 ⇒ l21 =
a21
a11
a11u12 = a12 ⇒ u12 =
a12
a11
l31a11 = a31 ⇒ l31 =
a31
a11
a11u13 = a13 ⇒ u13 =
a13
a11
.
. . . . . . . .
a
ln1a11 = an1 ⇒ ln1 = n1
a11
. . . .
. . . . .
a
a11u1n = a1n ⇒ u1n = 1n
a11
entâo, tem − se :
a a
a a
a a
l21a11u12 = 21 12 , l21a11u13 = 21 13 , ... , ln1a11u1n = n1 1n ,
a11
a11
a11
conclue − se :
ai 1
a1 j
li 1 =
, u1 j =
a11
a11
e
li 1a11u1 j =
ai 1a1 j
a11

a21a1n 
l21a11u1n + a2 n −

a11 
a a 
l31a11u1n + a3n − 31 1n 
a11

...

a a
ln1a11u1n + ann − n1 1n 
a11 
a11u1n
82
APÊNDICE II
Implementação computacional do Método de Bennett
Linguagem Delphi, Borland do Brasil Ltda.
unit UFrmPrincipal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, RXDice, TimerLst, MPlayer, Menus,
XP_MainMenu;
const size = 15;
type Tmatrix = array[1..size,1..size] of double;
type lc = array[1..2] of integer;
type
TCounter = class(TThread)
private
hour,min,sec,msec: word;
protected
procedure Execute; override; // Método anulado
procedure contar;
public
constructor Create();
end;
type
Tprinti = class(TThread)
private
protected
procedure Execute; override; // Método anulado
procedure contar;
public
constructor Create();
end;
type
TFrmLDU = class(TForm)
Panel1: TPanel;
BitBtn1: TBitBtn;
Edit1: TEdit;
83
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Memo1: TMemo;
BitBtn2: TBitBtn;
Label7: TLabel;
Timer1: TTimer;
ttfXPMainMenu1: ttfXPMainMenu;
Arquivo1: TMenuItem;
Importao1: TMenuItem;
N1: TMenuItem;
Sair1: TMenuItem;
OpenDialog1: TOpenDialog;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Sair1Click(Sender: TObject);
procedure Importao1Click(Sender: TObject);
private
parathread: boolean;
function MAdicao(lina, cola, linb, colb: integer; ma, mb: TMatrix;
var linr, colr: integer; param: integer): TMatrix;
function MMult(lina, cola, linb, colb: integer; ma, mb: TMatrix;
var linr, colr: integer): TMatrix;
function MMultValor(lin, col: integer; m: TMatrix; var linr,
colr: integer; valor: double; param: integer): TMatrix;
function MTransposta(lin, col: integer; var linr, colr: integer;
m: TMatrix): TMatrix;
Function LeDados(matrix: string; dados: string; var linm, colm: integer; var m: tmatrix):
boolean;
function InsereEspaco(valor: integer): string;
{ Private declarations }
public
{ Public declarations }
end;
var
FrmLDU: TFrmLDU;
implementation
{$R *.dfm}
function TFrmLDU.InsereEspaco(valor: integer): string;
84
var i: integer;
s: string;
begin
s:= '';
for i:= 1 to valor do
s:= s + ' ';
result:= s;
end;
Function TFrmLDU.MMult(lina,cola,linb,colb: integer; ma, mb: TMatrix; var linr, colr:
integer): TMatrix;
var mr: TMatrix;
u, t, v: integer;
x: double;
begin
if cola <> linb then
exit;
linr:= lina;
colr:= colb;
for u:= 1 to lina do
for t:= 1 to colb do
begin
x:= 0;
for v:= 1 to cola do
x:= x + (ma[u,v] * mb[v,t]);
mr[u,t]:= x;
end;
result:= mr;
end;
function TFrmLDU.MTransposta(lin, col: integer; var linr,colr: integer; m: TMatrix):
TMatrix;
var mr: TMatrix;
i, j: integer;
begin
linr:= col;
colr:= lin;
for i:= 1 to linr do
for j:= 1 to colr do
mr[i,j]:= m[j,i];
result:= mr;
end;
Function TFrmLDU.MAdicao(lina, cola, linb, colb: integer; ma, mb: TMatrix; var linr, colr:
integer; param: integer): TMatrix;
var mr: TMatrix;
i, j: integer;
begin
if (lina <> linb) or (cola <> colb) then
exit;
85
linr:= lina;
colr:= colb;
for i:= 1 to lina do
for j:= 1 to cola do
if param = 1 then
mr[i,j]:= ma[i,j] + mb[i,j]
else
mr[i,j]:= ma[i,j] - mb[i,j];
result:= mr;
end;
Function TFrmLDU.MMultValor(lin, col: integer; m: TMatrix; var linr, colr: integer; valor:
double; param: integer): TMatrix;
var mr: TMatrix;
i, j: integer;
begin
linr:= lin;
colr:= col;
for i:= 1 to lin do
for j:= 1 to col do
if param = 1 then
mr[i,j]:= valor * m[i,j]
else
if param = 2 then
mr[i,j]:= m[i,j] / valor
else
if m[i,j] <> 0 then
mr[i,j]:= valor / m[i,j]
else
mr[i,j]:= 0;
result:= mr;
end;
Function TFrmLDU.LeDados(matrix: string; dados: string; var linm, colm: integer; var m:
tmatrix): boolean;
var i, x, j, verro: integer;
neg: boolean;
res: string;
begin
result:= false;
neg:= false;
x:= 1; j:= 1;
res:= '';
for i:= 1 to length(dados) do
begin
if dados[i] in ['0'..'9',',','.'] then
begin
res:= res + dados[i];
end
86
else
if (dados[i] = ';') then
begin
if neg then
begin
m[x,j]:= strtofloat('-' + res);
neg:= false;
end
else
m[x,j]:= strtofloat(res);
res:= '';
inc(j);
inc(x);
if x = 2 then
verro:= j
else
if j <> verro then
begin
result:= true;
showmessage('Matrix ' + matrix + ' inválida.');
exit;
end;
j:= 1;
end
else
if dados[i] = '-' then
neg:= true
else
if dados[i] = ' ' then
begin
if res <> '' then
begin
if neg then
begin
m[x,j]:= strtofloat('-' + res);
neg:= false;
end
else
m[x,j]:= strtofloat(res);
res:= '';
inc(j);
end;
end;
end;
if res <> '' then
begin
if neg then
begin
m[x,j]:= strtofloat('-' + res);
neg:= false;
end
87
else
m[x,j]:= strtofloat(res);
res:= '';
end;
linm:= x;
colm:= j;
end;
procedure TFrmLDU.BitBtn1Click(Sender: TObject);
const dist: integer = 7;
var l, d, u, l1, d1, u1, raux, raux1: tmatrix;
c, x, y, p, q, pt, qt: array[1..size] of Tmatrix;
lcl, lcd, lcu, lcl1, lcd1, lcu1: lc;
lcc, lcx, lcy, lcp, lcq, lcpt, lcqt: array[1..size] of lc;
i, j, a, f, g, laux, caux, laux1, caux1: integer;
resp, h: string;
begin
parathread:= false;
tcounter.Create;
if ledados('L',edit1.Text,lcl[1],lcl[2],l) then
exit;
if ledados('D',edit2.Text,lcd[1],lcd[2],d) then
exit;
if ledados('U',edit3.Text,lcu[1],lcu[2],u) then
exit;
if ledados('X',edit4.Text,lcx[1][1],lcx[1][2],x[1]) then
exit;
if ledados('C',edit5.Text,lcc[1][1],lcc[1][2],c[1]) then
exit;
if ledados('Y',edit6.Text,lcy[1][1],lcy[1][2],y[1]) then
exit;
//Cálculo de x2 e c2
i:= 1;
memo1.Lines.Clear;
memo1.Lines.Add('RESULTADO');
repeat
memo1.Lines.Add('------------------');
memo1.Lines.Add('Para I = ' + inttostr(i));
memo1.Lines.Add('------------------');
for j:= 1 to lcx[i][1] - 1 do
begin
raux:= MMultvalor(1,lcx[i][2],x[i],laux,caux,-l[i+j][i],1);
for a:= 1 to lcx[i][2] do
x[i+1][j][a]:= raux[1][a] + x[i][j+1][a];
lcx[i+1][1]:= j;
lcx[i+1][2]:= a - 1;
raux:= MMultvalor(1,lcy[i][2],y[i],laux,caux,-u[i][i+j],1);
for a:= 1 to lcy[i][2] do
y[i+1][j][a]:= raux[1][a] + y[i][j+1][a];
lcy[i+1][1]:= j;
lcy[i+1][2]:= a - 1;
88
end;
memo1.Lines.Add('X' + inttostr(i) + ' = ');
resp:= ' ';
for f:= 1 to lcx[i+1][1] do
begin
for g:= 1 to lcx[i+1][2] do
begin
resp:= resp + h + formatfloat('#,##0.##',(x[i+1][f][g]));
h:= insereespaco(10 - length(formatfloat('#,##0.##',(x[i+1][f][g]))));
end;
memo1.Lines.Add(resp);
resp:= ' ';
h:= '';
end;
memo1.Lines.Add('');
memo1.Lines.Add('Y' + inttostr(i) + ' = ');
resp:= ' ';
for f:= 1 to lcy[i+1][1] do
begin
for g:= 1 to lcy[i+1][2] do
begin
resp:= resp + h + formatfloat('#,##0.##',(y[i+1][f][g]));
h:= insereespaco(10 - length(formatfloat('#,##0.##',(y[i+1][f][g]))));
end;
memo1.Lines.Add(resp);
resp:= ' ';
h:= '';
end;
memo1.Lines.Add('');
// cálculo de l**1 e u*1*
for f:= 1 to lcl[1] do
for g:= 1 to lcl[2] do
if f = g then
begin
l1[f,g]:= 1;
u1[f,g]:= 1;
end;
pt[i]:= MMult(lcx[i][1],lcx[i][2],lcc[i][1],lcc[i][2],x[i],c[i],lcpt[i][1],lcpt[i][2]);
lcpt[i][1]:= 1;
p[i]:= MTransposta(lcpt[i][1],lcpt[i][2],lcp[i][1],lcp[i][2],pt[i]);
raux:= MMult(1,lcy[i][2],lcp[i][1],lcp[i][2],y[i],p[i],laux,caux);
d1[i][i]:= d[i][i] + raux[laux][caux];
raux:= MTransposta(lcc[i][1],lcc[i][2],laux,caux,c[i]);
qt[i]:= MMult(1,lcy[i][2],laux,caux,y[i],raux,lcqt[i][1],lcqt[i][2]);
q[i]:= MTransposta(lcqt[i][1],lcqt[i][2],lcq[i][1],lcq[i][2],qt[i]);
lcl1[1]:= lcl[1]; lcl1[2]:= lcl[2];
89
lcu1[1]:= lcu[1]; lcu1[2]:= lcu[2];
lcd1[1]:= lcd[1]; lcd1[2]:= lcd[2];
for j:= 1 to lcx[i][1] - 1 do
begin
raux:= MMult(j,lcx[i+1][2],lcq[i][1],lcq[i][2],x[i+1],q[i],laux,caux);
l1[i+j][i]:= l[i+j][i] + ((1 / d1[i][i]) * raux[laux][caux]);
raux:= MMult(j,lcy[i+1][2],lcp[i][1],lcp[i][2],y[i+1],p[i],laux,caux);
u1[i][i+j]:= u[i][i+j] + ((1 / d1[i][i]) * raux[laux][caux]);
end;
j:= 1;
memo1.Lines.Add('D*(' + inttostr(i) + ',' + inttostr(i) + ') = ');
resp:= ' ';
for f:= 1 to i do
begin
for g:= 1 to i do
begin
resp:= resp + h + formatfloat('#,##0.##',(d1[f][g]));
h:= insereespaco(10 - length(formatfloat('#,##0.##',(d1[f][g]))));
end;
memo1.Lines.Add(resp);
resp:= ' ';
h:= '';
end;
memo1.Lines.Add('');
memo1.Lines.Add('L*(*,' + inttostr(i) + ') = ');
resp:= ' ';
for f:= 1 to lcl1[2] do
begin
for g:= 1 to i do
begin
resp:= resp + h + formatfloat('#,##0.##',(l1[f][g]));
h:= insereespaco(10 - length(formatfloat('#,##0.##',(l1[f][g]))));
end;
memo1.Lines.Add(resp);
resp:= ' ';
h:= '';
end;
memo1.Lines.Add('');
memo1.Lines.Add('U*(*,' + inttostr(i) + ') = ');
resp:= ' ';
for f:= 1 to i do
begin
for g:= 1 to lcu1[2] do
begin
resp:= resp + h + formatfloat('#,##0.##',(u1[f][g]));
h:= insereespaco(10 - length(formatfloat('#,##0.##',(u1[f][g]))));
end;
memo1.Lines.Add(resp);
resp:= ' ';
h:= '';
90
end;
memo1.Lines.Add('');
//Cálculo de c i + j
raux:= MMult(lcq[i][1],lcq[i][2],lcpt[i][1],lcpt[i][2],q[i],pt[i],laux,caux);
raux1:= MMultvalor(laux,caux,raux,laux1,caux1,(1 / d1[i][i]),1);
c[i+j]:= MAdicao(lcc[i][1],lcc[i][2],laux1,caux1,c[i],raux1,lcc[i+j][1],lcc[i+j][2],2);
memo1.Lines.Add('C' + inttostr(i) + ' = ');
resp:= ' ';
for f:= 1 to lcc[i+j][1] do
begin
for g:= 1 to lcc[i+j][2] do
begin
resp:= resp + h + formatfloat('#,##0.##',(c[i+j][f][g]));
h:= insereespaco(10 - length(formatfloat('#,##0.##',(c[i+j][f][g]))));
end;
memo1.Lines.Add(resp);
resp:= ' ';
h:= '';
end;
memo1.Lines.Add('');
inc(i);
until i = lcx[1][1];
pt[i]:= MMult(lcx[i][1],lcx[i][2],lcc[i][1],lcc[i][2],x[i],c[i],lcpt[i][1],lcpt[i][2]);
lcpt[i][1]:= 1;
p[i]:= MTransposta(lcpt[i][1],lcpt[i][2],lcp[i][1],lcp[i][2],pt[i]);
raux:= MMult(1,lcy[i][2],lcp[i][1],lcp[i][2],y[i],p[i],laux,caux);
d1[i][i]:= d[i][i] + raux[laux][caux];
// close;
for i:= 1 to lcl1[1] do
for j:= 1 to lcl1[2] do
begin
if i = j then
begin
l1[i][j]:= 1;
u1[i][j]:= 1;
end;
if i > j then
begin
u1[i][j]:= 0;
d1[i][j]:= 0;
end;
if i < j then
begin
l1[i][j]:= 0;
d1[i][j]:= 0;
end;
end;
91
memo1.Lines.Add('-------------------------------');
memo1.Lines.Add('RESULTADO');
memo1.Lines.Add('L* = ');
resp:= ' ';
for i:= 1 to lcl1[1] do
begin
for j:= 1 to lcl1[1] do
begin
resp:= resp + h + formatfloat('#,##0.##',(l1[i][j]));
h:= insereespaco(10 - length(formatfloat('#,##0.##',(l1[i][j]))));
end;
memo1.Lines.Add(resp);
resp:= ' ';
h:= '';
end;
memo1.Lines.Add('');
memo1.Lines.Add('D* = ');
resp:= ' '; h:= '';
for i:= 1 to lcl1[1] do
begin
for j:= 1 to lcl1[1] do
begin
resp:= resp + h + formatfloat('#,##0.##',d1[i][j]);
h:= insereespaco(10 - length(formatfloat('#,##0.##',(d1[i][j]))));
end;
memo1.Lines.Add(resp);
resp:= ' ';
h:= '';
end;
memo1.Lines.Add('');
memo1.Lines.Add('U* = ');
resp:= ' '; h:= '';
for i:= 1 to lcl1[1] do
begin
for j:= 1 to lcl1[1] do
begin
resp:= resp + h + formatfloat('#,##0.##',u1[i][j]);
h:= insereespaco(10 - length(formatfloat('#,##0.##',(u1[i][j]))));
end;
memo1.Lines.Add(resp);
resp:= ' ';
h:= '';
end;
// timer1.Enabled:= false;
parathread:= true;
end;
procedure TFrmLDU.BitBtn2Click(Sender: TObject);
begin
TPRINTI.Create;
92
end;
procedure TCounter.Execute;
begin
contar;
end;
procedure TPRINTI.Execute;
begin
contar;
end;
procedure TCounter.contar;
begin
msec:= 0; min:= 0; sec:= 0; hour:= 0;
while not frmldu.parathread do
begin
inc(msec);
if msec = 1000 then
begin
msec:= 0;
inc(sec);
end;
if sec = 60 then
begin
sec:= 0;
inc(min);
end;
if min = 60 then
begin
min:= 0;
inc(hour);
end;
FrmLDU.Label7.Caption:=
formatdatetime('hh:nn:ss:zzz',encodetime(hour,min,sec,msec));
FrmLDU.Label7.Refresh;
end;
end;
procedure tprinti.contar;
begin
TRY
frmldu.Memo1.Lines.SaveToFile('LPT1');
EXCEPT
END;
end;
constructor TCounter.Create();
begin
inherited Create(True); { Chama o contrutor herdado. Ele irá temporariamente colocar o
thread em estado de espera para depois executá-lo. }
93
FreeOnTerminate := True; // Libera o objeto após terminar.
Priority := TpLower; { Configura sua prioridade na lista de processos do Sistema
operacional. }
Resume; // Inicia o Thread.
end;
constructor tprinti.Create();
begin
inherited Create(True); { Chama o contrutor herdado. Ele irá temporariamente colocar o
thread em estado de espera para depois executá-lo. }
FreeOnTerminate := True; // Libera o objeto após terminar.
Priority := TpLower; { Configura sua prioridade na lista de processos do Sistema
operacional. }
Resume; // Inicia o Thread.
end;
procedure TFrmLDU.Sair1Click(Sender: TObject);
begin
self.Close;
end;
procedure TFrmLDU.Importao1Click(Sender: TObject);
var f: textfile;
s: string;
begin
if opendialog1.Execute then
if opendialog1.FileName <> '' then
begin
assignfile(f,opendialog1.FileName);
reset(f);
Readln(F, S);
Edit1.Text := S;
Readln(F, S);
edit2.Text:= s;
Readln(F, S);
edit3.Text:= s;
Readln(F, S);
edit4.Text:= s;
Readln(F, S);
edit5.Text:= s;
Readln(F, S);
edit6.Text:= s;
end;
end;
end.
94
EXEMPLO:
0
 5 −2 −3 0
− 2 5
0 − 3 0 

Seja a matriz A =  − 3 0
5 − 1 − 1 , A = L D U


0
 0 − 3 −1 5
 0
0 −1 0
2 
 1
 2
− 5
 3
−
L= 5
 0


 0

0
0
1
0
2
7
5
−
7
−
1
13
20
7
−
20
−
0
2

1 − 5

0 1

U =
0 0

0 0

0 0
0
1
− 1 0 


X =0 1


0 0
 0 − 1
0 
5


0
0 
0


0
0
0 
 D=
0
1
0 




13
−
−1 
0
33


0
3
5
2
−
7
−
1
0
0
0
21
5
0
0
0
0
0
20
7
0
0
0
33
20
0
0
0

0 

5
−
0 
7

13
7
−
− 
7
20
− 13 
1

33 
0
1 
0
1 0
D=

0 1 
0
1
− 1 0 


Y =0 1


0 0
 0 − 1
0

0

0

0

46 

33 
95
Aplicação do programa no exemplo da página anterior:
RESULTADO
-----------------Para I = 1
-----------------X1 =
-0,5
0
0,6
1
0
0
0
-1
Y1 =
-0,5
0,6
0
0
0
1
0
-1
D*(1,1) =
6
L*(*,1) =
1
-0,58
-0,5
0
0
U*(*,1) =
1
C1 =
0,83
0
-0,58
0
1
-----------------Para I = 2
-----------------X2 =
0,45
1
-0,35
0
0
-1
-0,5
0
0
96
Y2 =
0,45
-0,35
0
1
0
-1
D*(2,2) =
6
0
0
4,41
L*(*,2) =
1
-0,58
-0,5
0
0
0
1
-0,33
-0,68
0
U*(*,2) =
1
0
-0,58
1
-0,5
-0,33
0
-0,68
0
0
0
-0,68
-0,49
0
0
-0,53
C2 =
0,79
0
0
1
-----------------Para I = 3
-----------------X3 =
-0,06
0,65
0,16
-0,65
Y3 =
-0,06
0,18
0,65
-0,61
D*(3,3) =
6
0
0
0
4,41
0
0
0
4,02
L*(*,3) =
1
-0,58
-0,5
0
0
0
1
-0,33
-0,68
0
0
0
1
-0,49
-0,5
U*(*,3) =
1
0
0
-0,58
1
0
-0,5
-0,33
1
97
C3 =
0,76
-0,09
-0,09
0,75
-----------------Para I = 4
-----------------X4 =
0,14
-0,4
Y4 =
0,15
-0,36
D*(4,4) =
6
0
0
0
0
4,41
0
0
0
0
4,02
0
0
0
0
1,98
L*(*,4) =
1
-0,58
-0,5
0
0
0
1
-0,33
-0,68
0
0
0
1
-0,49
-0,5
0
0
0
1
-0,5
U*(*,4) =
1
0
0
0
-0,58
1
0
0
-0,5
-0,33
1
0
0
-0,68
-0,49
1
0
0
-0,53
-0,49
0
0
0
1
-0,5
0
0
0
0
1
0
0
0
1,98
0
0
0
0
0
1,5
C4 =
0,76
-0,06
-0,06
0,63
------------------------------RESULTADO
L* =
1
0
0
-0,58
1
0
-0,5
-0,33
1
0
-0,68
-0,49
0
0
-0,5
D* =
6
0
0
0
0
0
4,41
0
0
0
0
0
4,02
0
0
98
U* =
1
0
0
0
0
-0,58
1
0
0
0
-0,5
-0,33
1
0
0
0
-0,68
-0,49
1
0
0
0
-0,53
-0,49
1
Download

dos métodos de refatorização de matrizes na resolução de sistemas