dos mÉtodos de refatorizaÇÃo de matrizes na … · resoluÇÃo de sistemas matriciais ......
TRANSCRIPT
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
matriz jacobiana, J, do modelo linear de rede de energia elétrica
∆∆
=
∆∆
θV
JQP
, derivado da
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 1−A .
• 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
bAAAAIAAx ].).([ 11111 −−−−− ∆∆+−= 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 1−A 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 tYCX na matriz
1)( −∆+ AA chegou à identidade 11111 ][)( −−−−− +=+ AYXAYCXAYCXA ttt .
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 tYCXA + em
••• UDL 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* “fill-
ins“ é 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 = [ ]bA / as chamadas transformações elementares sobre as linhas, a saber:
a) ijT , trocar de posição as linhas i e j;
b) )(λijT , 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 = )( ija seja
diagonalmente dominante ),...,1,(,1
njaan
jiiijjj => ∑
≠=
.
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 = nxnija )(
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 )1( −− kjka às linhas j = k+1, ..., n, ou seja,
calculam-se:
)()1()1()( . kki
kjk
kjk
kjk aaaa −− −= : j ,i = k+1,..., n ;
)()1()1()( . kj
kjh
kj
kj babb −− −=
Isto resulta na eliminação de kx das (n-k ) equações subseqüentes à k-ésima.
3) Fazendo k←k + 1 e indo para 2.
4) Substituindo os valores dos ix (i = k+1, ..., n), já calculados na k-ésima equação e
resolvendo para x k . Isto equivale a se calcular: i
n
ki
kki
kk
kkk xab
ax ∑
+=
−=1
)()((1 )
5) Fazendo 1−← kk . 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.
=+−−=−+−=−+−=−−
11886286406421422
432
431
421
321
xxxxxxxxx
xxx
Pode-se escrever o sistema na forma matricial A x = b.
Como as operações de eliminação envolvem apenas os coeficientes ija ( i ,j = 1,2,3,4),
e os termos independentes ib ( i = 1,2,3,4), para fim de exposição, será suficiente trabalhar
com a matriz aumentada [ ]bA / .
[ ]bA / =
−−−−−−
−−
118860286040604210422
, Aplicando o algoritmo tem-se:
18
−−−−−−
−−
118860286040604210422
→)2();1( 3121 TT
−−−−−−−
−−
118860482401642010422
→)3();2( 4232 TT
−−−−−
−−
40200062010001642010422
→− )2(43T
−−−−−
−−
84000062010001642010422
Cálculo de x=
4
3
2
1
xxxx
: sendo
−==−−=−−=−−
8406201016421422
4
43
432
321
xxx
xxxxxx
=4x 51
44
4 −=ab i
ii xab
ax ∑
=
−=4
433
333 (1 )=
51
52
53
−=+−
=−= ∑=
)(1 4
322
222 i
ii xab
ax -
21 )(1 4
211
111 i
ii xab
ax ∑
=
−= = -52
1.4 Decomposição L U e L D ∗U .[ Monticelli,83]
A pode ser reduzida à forma triangular superior:
=
nnnnn
n
n
n
aaaa
aaaaaaaaaaaa
A
..................
...
...
...
321
3333231
2232221
1131211
( )
=→
)1()1(3
)1(2
)1(3
)1(33
)1(32
)1(2
)1(23
)1(22
1131211
1
...0...............
...0
...0
...
nnnn
n
n
n
aaa
aaaaaaaaaa
A
=→
=→
)(
)2(3
)2(33
)1(2
)1(23
)1(22
1131211
)(
)2()2(3
)2(3
)2(33
)1(2
)1(23
)1(22
1131211
)2(
...000...............
...00
...0
...
....
...00...............
...00
...0
...
nnn
n
n
n
n
nnn
n
n
n
a
aaaaaaaaa
A
aa
aaaaaaaaa
A
)(nA = U
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 ijl 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: .2,1 ,..., nEEE Então, UAEEEEn =123... e como as matrizes elementares são
invertíveis, tem-se: UEEEEA n )........( 113
12
11
−−−−= , logo A = L U.
Dada a fatoração L U de uma matriz A, é possível prosseguir e fatorar U em um
produto ∗UD , onde D é a diagonal e ∗U é triangular superior, com todos os elementos da
diagonal iguais a 1.
=∗
1...000...............
...100
...10
...1
...000...............0...000...000...00
33
3
22
2
22
23
11
1
11
13
11
12
33
22
11
uuuu
uu
uu
uu
uu
u
uu
U
UDn
n
n
nn
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 ijl , i<j são
os simétricos dos multiplicadoresλ que aparecem nas operações ( )λijT ; 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:
Supõe-se que na equação linear A x = b, A é matriz simétrica ( isto é A= tA ).
Se A = L D ∗U = =tA ttLDU
∗, resulta tLU =∗ ,de modo que A= L D tL .
Por exemplo,
−−−−−
=342482224
A =
−
−
− 100311021
211
300090004
131
21
0121
001
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:
L=
1...........................0...0010...00010...000010...000001
4321
424241
3231
21
nnnn llll
lllll
l
,U =
nn
n
n
n
n
u
uuuuuuuuuuuuuu
...0000........................
...000
...00
...0
...
444
33433
2242322
114131211
Para resolver um sistema A x = b, faz-se as seguintes considerações:
A = L U; L y = b; U x = y toma-se y =
ny
yy
.
.
.2
1
e calcula-se y usando a fórmula k
j
kjkjj ylby ∑
−
=
−=1
1
,
22
e tomando-se x =
nx
xx
.
.
.2
1
, calcula-se x,
usando a fórmula x j = )(1
1k
n
jkjkj
jjxub
u ∑+=
−
1.5 Exemplo
−−−−−−
−−
1886086046042
0422
4
3
2
1
xxxx
=
1201
→
−−−−−−−
−−
→
−−−−−−
−−
=)3()2(
1886082406420
0422
)2()1(
1886086046042
0422
42
32
31
21
TT
TTA
UT =
−−−−
−−
→−
−−−−−
−−
400002010006420
0422
)2(
020002016006420
0422
43
−−−
−=
1230012200110001
: LEntão
L y = b, tem-se:
−−−
−
1230012200110001
4
3
2
1
yyyy
=
1201
logo y =
−8611
23
U x = y , tem-se:
−−−−
−−
400002010006420
0422
4
3
2
1
xxxx
=
−8611
logo, x =
−
−
−
−
51512152
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:
1010010001
434241
3231
21
lllll
l
44
33
22
11
000000000000
dd
dd
1000100
101
34
2423
141312
uuuuuu
4
3
2
1
xxxx
=
4
3
2
1
bbbb
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 Coluna 2 Coluna 3 Coluna 4
11
1)1(1 d
by =
22
)1(2)2(
2 dyy =
33
)2(3)3(
3 dy
y = 44
)3(4)4(
4 dyy =
44
)3(4)4(
4 dyy =
1212)1(
2 blby −= )1(232
)1(3
)2(3 ylyy −= )2(
343)2(
4)3(
4 ylyy −=
24
1313)1(
3 blby −= )1(243
)1(4
)2(4 ylyy −=
1414)1(
4 blby −=
A solução do sistema L D y = b é y=
)4(4
)3(3
)2(2
)1(1
yyyy
De fato, tem-se:
1) 1111 byd = )1(1
11
11 y
dby ==
2) 222211121 bydydl =+ ; 111212222 ydlbyd = ; )2(2
22
)1(2
22
)1(1212
22
1112122 y
dy
dylb
dydlby ==
−=
−=
3) 332223211131 dydlydl ++ y 3 = b 3 , )1(232
)1(3
)1(2321313333 ylyylblbyd −=−−=
)3(3
33
)2(3
33
)1(232
)1(32
3 ydy
dyly
y ==−
=
4) 4444333432224211141 bydydlydlydl =+++
333432224211132414444 ydlydlydllbyd −−−=
( )2342
)1(2421414444 ylylblbyd −−−=
)2(342
)1(242
)1(4444 ylylyyd −−=
)2(342
)2(4444 ylyyd −=
)3(4444 yyd =
( )( )4
444
34
4 ydyy ==
Agora, resolve-se o sistema U∗ x = y , usando a substituição por linhas.
25
1000100
101
34
2423
141312
uuuuuu
4
3
2
1
xxxx
=
4
3
2
1
yyyy
4
3
2
1
yyyy
linha 4 : 44 yx =
linha 3 : 43433 xuyx −=
linha2: 42431222 xuxuyx −−= linha1: 41431321211 xuxuxuyx −−−=
1.7 Exemplo
Seja o sistema
=+−−=−+−=−+−=−−
11886286406421422
432
431
421
321
xxxxxxxxx
xxx
O sistema pode ser colocado na forma de uma equação matricial A x = b.
Decompondo A em L D U∗ :
=
−−
−−
−
−−−
−
1201
100021003210
0211
400000100000200002
1230012200110001
4
3
2
1
xxxx
Calcula-se primeiro y, resolvendo o sistema L D y = b(por colunas de cima para baixo)
=
−
−−−
−
1201
400000100000200002
1230012200110001
4
3
2
1
yyyy
coluna 1 ) 21)1(
1 =y ; 11.10)1(2 =+=y ; 41.22)1(
3 =+=y ; 11.01)1(4 =+=y
coluna 2) ( )212
2 =y ; 61.24)2(3 =+=y ; ( ) 41.312
4 =+=y
coluna 3) 53
106)3(
3 −=−
=y ; 86.24)3(4 =−=y
26
coluna 4 ) 51
408)4(
4 −=−
=y
Resolve-se o sistema U∗ x = y para encontrar o x, que é a solução final:
−
−=
−−
−−
5153
2121
100021003210
0211
4
3
2
1
xxxx
tem-se:
51
4 −=x ; 51)
51(2
53
3 −=−−−=x ; 21)
51(3)
51(2
21
2 −=−+−+=x
52)
21(2)
21(
21
1 −=−+−+=x .
Então a solução é: t
x
−−−−=
51
51
21
52
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 ija onde i = j. Se um nó é ligado a outro, tem-se a admitância mútua
representada também por ija , mas com ji ≠ . 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 ki vv ,..., , sendo ki vv = 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
Figura 1 – Grafo de uma rede de energia elétrica com cinco nós
=
XXXXXXX
XXXXXXXXXX
A
000
000
00
FIGURA 2 – Matriz associada ao grafo da figura 1
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.
1 2
3
4
5
5 2
3 4
1
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 )( AA ∆+ 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 tYMMA ∆=∆ ,
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).
A =
555452
45444342
443331
25242221
131211
000
000
00
yyyyyyy
yyyyyyy
yyy
FIGURA 4 – Rede de energia elétrica com modificação de um ramo (1 - 4)
=∆A [ ][ ]
∆∆−
∆−∆
=−+∆
−
+
000000000000000000000
01001
01
001
11
11
1
yy
yy
y
5 1
4
1y∆
2
3
32
A + A∆ =
∆+∆−
∆−∆+
555452
4514143421
343331
25242221
11312111
00
000
0
yyyyyyyyy
yyyyyyy
yyyyy
Observa-se que a admitância entre os nós i e j muda de 1y∆ , adicionando 1y∆ a iiy e a
jjy e subtraindo-o de ijy e jiy .
Consideram-se dois ramos modificados (FIG. 5):
1 2 5
3 4
FIGURA 5 – Rede de energia elétrica com modificações de dois ramos (1-4) e (3-5)
tYMMy
yA ∆=
−+
−+
∆
∆
−−
+
+
=∆10100
010010
0
100110
0001
2
1
∆∆−∆∆−
∆−∆
∆−∆
=∆
22
11
22
11
000000
00000000000
yyyy
yy
yy
A
Logo, a matriz com dois ramos modificados será:
2y∆ 2y∆
1y∆
33
A + A∆ =
∆+∆−∆+∆−
∆−∆+
∆−∆+
25554252
4514443421
23423331
25242221
11312111
0
00
0
yyyyyyyyyyy
yyyyyyyyy
yyyyy
Observa-se que os ∆y são adicionados a 55443311 ,, eyyyy e subtraídos de
53,354114 ,, yyyy 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:
∆∆−
∆−∆
=
∆∆−∆−∆
=∆
000000000000000000000
0100000001
..
0010000001
11
11
11
11
yy
yy
yyyy
A
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
∆∆−∆−∆
∆∆−∆−∆
=∆
10000001000100000001
.
0000
0000
.
10000010010000000001
22
22
11
11
yyyy
yyyy
A
∆∆−∆∆−
∆−∆
∆−∆
=∆
22
11
22
11
000000
00000000000
yyyy
yy
yy
A
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
∆−∆
−=
∆∆−
∆−∆
00000000000000000000000
100000100100100'00010
00001
000000000000000000000 11
11
11 yy
yy
yy
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∗ .
∆ A =
−
∆
−1000001000001000001001001
.
000000000000000000000000
.
1000001001001000001000001 1y
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 1)( −∆+ AA .
Tem-se:
1111 ).()( −−−− ∆+=∆+ AAIAAA
e desenvolvendo-se formalmente em série de potências,
...).().(.).( 3121111 +∆−∆+∆−=∆+ −−−−− AAAAAAIAAI
Portanto,
=∆+ −1)( AA = [ ]...).().(..).( 312111111 +∆−∆+∆−=∆+ −−−−−−− AAAAAAIAAAIA =
= [ ]...).()(. 3121111 −∆+∆−∆− −−−−− AAAAAAAA =
= [ ] =∆+∆−∆+∆−− −−−−−− 13121111 .....)().().(. AAAAAAAAIAA
= 11111 ..).( −−−−− ∆∆+− AAAAIAA ,
então, [ ]bAAAAIAAx ..).( 11111 −−−−− ∆∆+−=
Se tYMMA ∆=∆ , então, 111111 ..)()( −−−−−− ∆∆+−=∆+ AYMMAYMMIAAAA tt
Simplificando, mais a identidade acima, toma-se:
C= YMAYMI t ∆∆+ −− .)( 11 , donde:
CMAYMIY t ).( 1−∆+=∆ , logo:
36
ttt
t
t
t
YMMAYMMIMCM
setemeYMAYMMIMC
dondeCMAYMMIYM
CMAYMMMYM
∆∆+=
−∆∆+=
∆+=∆
∆+=∆
−−
−−
−
−
11
11
1
1
)(
:,)(
:,.).(
).(
Então, tem-se que: 1111 ....)( −−−− −=∆+ AMCMAAAA t
Pondo :XMMAMZ
MAXtt ==
=−
−
1
1.
Vem: YZYIC ∆∆+= −1).( ,
Após a modificação a solução é: bAMCMAAx t )....( 111 −−− −= .
Pode-se escrever também: bACMMIAx t )...( 11 −− −= . Se A = LU, vem 111 . −−− = LUA ,
então:
bLUMCMLIUx
bLUMCMLLUx
bAMCMILUx
t
t
t
.)....(
)......(
)....(
1111
11111
111
−−−−
−−−−−
−−−
−=
−=
−=
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.
FIGURA 6 – Estrutura da matriz admitância nodal: rede com cinco nós
FIGURA 7 – Estrutura da matriz admitância nodal: rede de cinco nós, com a conexão
dos nós 4 e 5
2 4
5 3 1
4 2
5 3 1
38
5432154321
XXXXX
XXXXXXX
XXX
5432154321
XXXXXXXXXXX
XXXXXX
Estrutura da matriz admitância: A Estrutura da matriz admitância: AA ∆+
2.4 Exemplo
Considerando-se as estruturas das figuras 6 e 7 dá-se o exemplo seguinte, atribuindo
valores numéricos;
−−
=
−−−
−−−−−
−−
32
060
302000513021603
0306300336
5
4
3
2
1
xxxxx
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 nm ≤ . É
interessante observar que se têm várias combinações possíveis, principalmente se n é um
número grande.
A=
−−−
−−−−−
−−
302000513021603
0306300336
e decompondo A em L U, tem-se:
39
L=
−−
−−
−−
−
121
2100
0121
320
00131
21
000121
00001
e 1−L =
121
43
127
32
0121
65
32
00131
32
000121
00001
−−−
−−
−−
=
2300001200022400
0323
250
00336
U e
=−
32000031
21000
21
41
4100
187
125
121
920
94
31
61
91
61
1U
Considera-se, por exemplo, [ ]1=∆Y fazendo uma ligação do nó 4 ao nó 5, e
como foi visto acima a matriz de conexão é
−
=
11000
M e, como [ ] YZYIC ∆∆+= −1 , tem-se:
[ ]
=
−
−== −
32
11000
32
31
21
187
94
31
32
21
1811
95
21
21
43
127
32
187
1811
127
10889
2719
94
95
32
2719
2723
110001MAMZ t
[ ] [ ] [ ]
=
+= −
531)
32.11( 1C
40
−
−=
53
53000
53
53000
000000000000000
tMCM .
E:
,])([ 11111 bLUMCMLIUx −−−−− −= sendo que x é o vetor das tensões e b o vetor das correntes.
Resolvendo-a por partes, tem-se:
−
−=
−
−
=−
103
103000
53
53000
000000000000000
53
53000
53
53000
000000000000000
121
43
127
32
0121
65
32
00131
32
000121
00001
1 tMCML
−
−=
−
−
=−−
101
203000
51
103000
000000000000000
32000031
21000
21
41
4100
187
125
121
920
94
31
61
91
61
103
103000
53
53000
000000000000000
11 UMCML t
=− −−
109
203000
51
107000
001000001000001
11 UMCMLI t
( )111 −−− − UMCMLIU t =
41
=
109
103000
51
107000
001000001000001
32000031
21000
21
41
4100
187
125
121
920
94
51
61
91
61
53
101000
52
52000
21
41
4100
3013
207
121
920
157
103
61
91
61
=
∆+=− −−−−−
53
52
21
3013
157
52
53
21
3017
158
21
21
43
127
32
3013
3017
127
180143
4531
157
158
32
4531
4538
121
43
127
32
0121
65
32
00131
32
000121
00001
53
101000
52
52000
21
41
4100
3013
207
121
920
157
103
61
91
61
)()( 11111 AALUMCMLIU t
Agora, pode-se calcular as tensões, usando a equação:
=
−−
=
∆+=
−=−
−−−−
0113725
32
060
53
52
21
3013
157
52
53
21
3017
158
21
21
43
127
32
3013
3017
127
180143
4531
157
158
32
4531
4538
)(
})({1
1111
x
bAAx
bLUMCMLIUx t
42
As tensões serão, portanto: 01,1,37,
25
54321 ===== xexxxx
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: bLUMCMLIUx t 1111 )( −−−− −= .
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 ,)( bxAA =∆+ chegou-se à
fórmula bAAAAIAAx ]).([ 11111 −−−−− ∆∆+−= 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
1−A 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.
Seja
=
66656362
565551
444342
363433
26242221
151211
00000
00000000
000
yyyyyyy
yyyyyyyyyy
yyy
A
FIGURA 8 – Rede referente à matriz A da rede nodal modificada
1 2 4
5 6 3
y∆
44
Seja B
=
6656
5655
44
00
00
yyyy
y a submatriz de A que contém os
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.
[ ] [ ]
∆∆−
∆−∆=−∆
−=∆
yy
yyyB
0000
0101
101
e tem-se portanto:
∆+∆−
∆−∆+=∆+
yyyyyy
yyyBB
6665
5655
44
00
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:
=
2221
1211
AAAA
A onde:
A é n x n, invertível, 11A é r x r, invertível, 12A é r x (n-r) e 21A é (n-r) x (n-r).
Prova-se que:
121
112122
1211
11121
,|0
______|
|______0|
AAAACondeC
AA
IAA
ILUA
r
r−
−
−=
==
Demonstração
Tem-se:
45
:A
CAAAA
AA
C
AA
IAA
I
r
r
=
+=
−−12
1112121
12111211
11121 |
________________|
|0__|__
|
|__|__0|
donde: 121
112122 AAAAC −−=
Supõe-se que:
=∆+
2221
1211
BAAA
AA , ou seja, modifica-se apenas o bloco 22A
Então
=∆+
− D
AA
IAA
IAA
r
r
|0__|__
|
|__|__0| 1211
11121
Onde: 121
112122 AAABD −−=
isto é, ••=∆+ ULAA com
== ••
D
AAUeLL
|0__|__
| 1211
De byAA =∆+ )( vem byUL =• . Pondo z = yU • , vem L z = b.
Assim, para resolver byAA =∆+ )( , acha-se A= L U ( em bloco ) e resolve-
se L z = b para achar z. Achando-se z , resolve-se zyU =• =
2
1
ZZ
, onde
1Z é r x1 e 2Z é (n-r) x 1.
=•
D
AAU
|0______
| 1211
e 211
112122 AAABD −−=
Se
=
2
1
___Y
Yy onde 1Y é r x 1 e, 2Y é (n-r) x 1. Então, zyU =• dá:
==+
22
1212111
zDYzYAYA
. Após achar , 2Y tem-se )( 21211
111 YAzAY −= − ,
46
Em 22 ZYD = , faz-se wYUresolvendoYacharsepodewcalculado
ZweLwYUULD
=−
===
22
22
,
,o
oooo
3.3 Exemplo
Seja a resolução do sistema byAA =∆+ )( onde foram feitas modificações apenas
no bloco 22A .
Seja
−−−
−−−−−
−−
=
302000513021603
0306300336
A =
2221
1211
AAAA
, onde:
=
−−−
=
−−−=
−−
−−=
3005
200130
,21
0300
,603063336
22211211 AeAAA
Tem-se:
;
41
121
61
121
41
61
61
61
31
111
=−A
−−−
−−−=−
21
61
21
21
65
32
11121AA e
=−
1113
121
1121 AAA
Considera-se que a modificação foi a ligação do nó 4 ao nó 5, onde 1=∆y , então
−−−−−−−−
−−−−
=∆+
412001613021603
0306300336
)( AA , com
−
−−=
4116
22B
decompondo AA ∆+ em ••UL (em blocos) pode-se escrever a equação:
byUL =•• , mas como LL =• tem-se byLU =• e fazendo zyU =• ,vem L z = b.
47
Cálculo de z, na equação L z = b;
−−
=
−−−
−−−
32
060
1021
61
21
0121
65
32
001000001000001
5
4
3
2
1
zzzzz
então
−
=
23060
z
Como zyU =• , passa-se ao cálculo de y , onde :
121
112122
1211
|0______
|AAABD
D
AAU −• −=
=
−
=
−−
−−−−−−−
−−
=•
23060
32|00023|000
____|______21|63
03|36300|336
5
4
3
2
1
yyyyy
yU
D 22 ZY = , fatorando D em oo UL , pode-se resolver a equação 2ZyUL =oo e wyU =o
−=
−= 1
32
01
35023
oo LU
2ZwL =o
−
=
−=
23
132
01
2
12 w
wZ ,
03
2
1
=
=ww
wyU =o
=
−03
5023
5
4
yy
01
5
4
==
yy
)( 21211
111 YAZAY −= −
=
−−−−
=
13735
)01
210300
060
(
41
121
61
121
41
61
61
61
31
3
2
1
yyy
,
portanto, a solução será: 01,1,37,
35
54321 ===== yeyyyy
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 restringe-
se 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 ijl ( i < j ) onde ija correspondente de A é nulo. Estes elementos ijl 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 0≠ija implica que jia 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:
111111 )()( −−−−−− ∆∆+−=∆+ AAAAIAAAA . Com a substituição de tXCYporA∆ , chega-se a
outra identidade, efetuando as operações abaixo:
[ ]
[ ]
[ ]
[ ] 111111
11111111
1111111
111111
111111
11111
1
)(
][
)(
)()(
)(
)(
−−−−−−
−−−−−−−−
−−−−−−−
−−−−−−
−−−−−−
−−−−−
−
+−
=+−
=+−
=+−
=+−
=+−
=+
AYXAYCXAA
AYXXAYCAA
AYAYXCAA
AYAYXCAA
AYAXCYIXCAA
AXCYAXCYIAA
XCYA
tt
t
tt
tt
tt
tt
t
51
Pode-se ver como fica a inversa de uma matriz modificada quando acrescenta-se à
matriz o termo tXCY . 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 tXCY , é desejável também ser capaz de modificar L D U, de modo a se obter a
decomposição L • D •U • de tXCYA+ .
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:
→iL representa a matriz obtida da matriz unidade I, pela substituição da i-ésima coluna de I
pela i-ésima coluna de L.
→iU representa a matriz obtida da matriz unidade I, pela substituição da i-ésima linha de I
pela i-ésima linha de U.
→∗iK é a i-ésima linha de K
→∗ iK é a i-ésima coluna de K
Também são válidas as propriedades:
A) ∑=
−+=n
in
in ILIL
1
)(
De fato, tem-se:
52
=
=
==
10000...............0...1000...0100...001
...,,
1...00...............0...100...0100...001
,
1...00...............0...100...010...001
2
322
1
31
211 n
nn
L
l
lL
l
ll
L
Logo:
=−∑=
0..................0...00...000...000
)(
321
3231
21
1
nnn
n
in
i
lll
lll
IL e, portanto: ( )∑=
−+=n
in
in ILIL
1
B) in
i LIL −=− 2)( 1 ,
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( nI ).
Tem-se:
=
+
+
10...0...00........................00...0...0000...1...0000...01...00........................00...00...1000...00...01
.
,
,2
.1
jn
jj
jj
j
l
ll
L
Portanto:
njjjjjnnjj IlElEL )()...( ,1,1, ++= , onde )( ijij lE é a matriz elementar obtida de nI somando à
linha i a linha j multiplicada por ijl .
53
Donde
−
−−
−−=
+
+++
−
10...0...00........................00...0...0000...1...0000...01...00........................00...00...1000...00...01
)()...()(
,
,2
,1.1,1
1
jn
Jj
jjnnjnjjjjj
j
l
ll
IlElEL = jn LI −2
Exemplo: para j = 1
11
1
31
21
1
31
21
1
)(
1...00...............0...100...010...001
0...00...............0...100...010...001
2...000...............0...2000...0200...002
2
−=
−
−−
=
−
=−
L
l
ll
L
ll
LI
nn
n
Valem também as propriedades:
C) ∑=
−+=n
in
in IUIU
1
)(
D) in
i UIU −=− 2)( 1
Seja A uma matriz de ordem n fatorada em um produto L D U∗ .
=
nnnnn
n
n
n
aaaa
aaaaaaaaaaaa
A
..................
...
...
...
321
3333231
2232221
1131211
, ,
..................0...10...010...001
321
3231
21
=
nnnnn llll
lll
L
=
55
33
22
11
0000...............000000000000
d
dd
d
D e
=∗
1...000...............
...100
...10
...1
3
223
11312
n
n
n
uuuuuu
U
54
Fazendo: 1111 ad = ,
obtém-se
== ∗∗
1
31
21
111
1
.
.
.
1
1
nl
ll
Aa
L e [ ]nuuuAa
U 11312111
1 ...11== ∗∗ .
Além disso, se A é particionada em submatrizes tem-se
=
HGFa
A 11
Então,
−=−∗−GF
aH
aUAL
11
111111 10
0)()( e tem-se ainda:
1
11
111 10
0∗
−= UGFa
H
aLA
Referindo-se A como GFa
HAseescreveA11
)2()1( 1, −=− .
Então:
( )
=
1...000...............
...100
...10
...1
00
1..................0...10...010...001
3
223
11312
)2(11
321
3231
211
n
n
n
nnn
uuuuuu
Aa
lll
lll
A
As operações acima repetidas em 22)2(
2)2(
2)2( , deULfornecemA ∗∗ .
Com repetições adicionais, completa-se o processo e determina-se L D U∗ .
55
4.2 Prova do processo
Tem-se:
=
−−−−−−−−−−
−−−−−−
−−−−−−
=∗
−− 1
112
)2(
11
1
1
211
)2(111
|0
...|1
|0
0|
||.|.|.||
0|1
00
n
n
n
n I
uu
A
a
l
I
lU
Aa
L
+
−−−−−−−−
=
−−−−−−−−
−−−−
=
−
|.|.|.|.||
...|
|0|
...|
||.|.|.||
0|1
)2(
21
11211
)2(
11211
1
1
21
AK
a
aaa
A
aaa
l
I
l
n
n
n
n
Onde GFa
aaa
aaa
aaa
aaa
alal
alalK
nnn
n
nnn
n
11
11
11
11
121
11
121
11
1221
11121
1211221 1
............
...
............
...=
=
= pois
[ ]n
n
aaFe
a
a
G 112
2
21
......
=
= . Portanto GFa
AH11
)2( 1+= e
GFa
HA11
)2( 1−= . Assim ,
−−−−=
−
−−−−=∗ −−
)2(
11
11
111111
|0|
0|
1|0
|0|
)()(A
a
GFa
H
aUAL
56
4.3 Exemplo
−−−
−==
9721074
642)1(AA . Decompondo A no produto L D U∗ tem-se :
−=
131012001
L ,
−−
=∗
100210321
U e
=
300010002
D
Toma-se:
211 =d ,
−=
−== ••
12
1
24
2
211
111
11 A
aL e
[ ] [ ]321642211
111
1 −=−== •• Aa
U
[ ]
)2(
11 3321
54128
971071,
97107
1282416
log;24
64,2
AGFa
HH
GFoGeFHGF
A
=
−−
=
−
−−
−
−=−
−
−=
−
−=
−=−=
=
[ ] [ ] [ ] [ ]63321 )2(1122 −=−==−=== GFeHGFad
)3()2(
11
3631 AGFa
H ==+−=−
[ ]2131 )2(
1)2(
1 −=
= •• UL então:
57
=
−−
=
−= ∗
300010002
100210321
,131012001
eDUL
No procedimento com a matriz modificada tXCYA + , a primeira linha e a primeira
coluna levam imediatamente a ••
••• 1111 , UedL , que são a primeira coluna de •L , o primeiro
termo da matriz •D e a primeira linha de •U , considerando-se que •••=+ UDLXCYA t .
Fazendo-se BYCXA t =+ , tem-se:
=
•
)2(11)1(
00
BdB .
Como é possível obter L D U de A conhecendo-se )()2()1( ,...,, nAAA , o mesmo
pode ser feito para ••• UeDL , da matriz A + X C tY = B.
Exemplo:
Para i = 1
=
=
−
•
−
•
1
1
1
1
01
)(,01
)(nn I
UI
Lβ
α
( )
+=
•−•−•
tYCXAdUBL
)(00)( )2()2()2()2(
111)1(1
Se XC = D, YC t = E , então:
∑ ∑∑= ==
==m
k
m
jjkjk
m
k
tkk
t CXYYDDY1 1
111
1111)( =∑∑= =
m
j
m
kjkjk CXY
1 111 =
∑=
m
kjj
tjkk XCY
1,11 )( = ( )111
11
ttj
m
jj YCXXE =∑
=
;
tttt XCYddquesetemdacomoeXCYad •••
••• +=−=+= 1111111111111111
Por conveniência computacional, incluem-se os vetores:
58
tiititiii
iitititii
CYqouYCq
CXpouXCp
)()()(
)()()(
)()(1
)()(1
)()(
)()(1
)(1
)()(
••
••
==
==
4.4 Algoritmo
,1
;)()1(
11
;)1(
;)1(
;
;
1
;)()(
,;
;
;)(
1
0,0,,,
1
,,1
,,
,,1
,,
,11
,11,1
,11
,11,1
11
1
11
00111
processooretornaii
CCpqd
CC
injinj
jij
UUpYd
UU
LLqXd
LL
YYYYXY
XXXXLX
j
qqCYq
fimnini
DdpYDd
ppCXp
i
qpYYXXCCseDefine
iitii
ii
iji
jiijiiii
jii
jiijii
ijiijiii
jii
ijiiji
ij
ij
ij
ijii
ij
ij
ij
ij
iiji
ij
iitiiti
iiiiii
iiii
iiiiti
→+↓
→−=
↓↑←←←←←←
+−=+−<
→+
→=
→+=
→+−=
→+−=
→→→→→→→→→→=
→=
↓
↓
=<→→→→→→→→→→
→+=
→=
→=
=====−
++
+•+
+•+
•+
+•+
+•+
•+
•++••+•+
+•
•++••+•+
+•
−•
•
−•
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
XMYéistoMY tt === ,, .
4.5 Exemplo
Sejam as matrizes
−−−
==
==
−==
−−
=
=
−=
−−−
−=
1626101758
,1132
,6830
21
100210321
,300010002
,131012001
,972
1074642
)1()1()1( YYCCXX
UDLA
[ ] [ ] [ ][ ] [ ] [ ]
[ ] [ ] [ ][ ] [ ] [ ]
−
=
=
−=−+−=
=−+−−=
=+−=
=−+=
+−=
+−=
•
•
•
•
•+•++•
•+•++•
1201
4712
121626583
011017582
4768211
1230212
)2()2(
)2(2
)2(1
)2(2
)2(1
)(,1
)(1,
)1(
)(,1
)(1,
)1(
)2()2(
YX
Y
Y
X
X
YYUY
XXLX
YeXdeCálculo
ij
ijii
ij
ij
iiji
ij
Cálculo de: ••
•• 11 UeL
60
[ ]
[ ]
[ ]
[ ]
−=
−=
−=
−+−=
=
+=
=
+=
−=
+−=
••
••
•
•
•
•
310
9221
928
9131
310
54
.12913
922
54
01912
928
31
.47911
913
31
.12912
11
13
12
31
21
UL
U
U
L
L
[ ]
[ ]
[ ]
[ ] [ ] [ ][ ] [ ] [ ]1012012
1147123
93
914
93
914
96
922
93
914
01)(
938925
938
925
96
93
922
914
12)(
96
93
922
914
5431
91
1132
,,,,
)3(
)3(
)2()2(
)2()2(
)2(
)3()3(22
)2()2()2(
=−+=
=+−=
−=
−=
−
−=
=
=
−−=
−−=
−
=
Y
X
pp
C
YeXdqpCdeCálculo
t
t
61
[ ]
[ ]
−=
=
−=
+−=
=
−+=
••
••
•
•
••
••
171510
34113
10
1715
938925
103492
34113
93
914
313493
22
23
32
22
UL
U
L
UeLdeCálculo
[ ]
[ ]
[ ]1758
3410
3411
103
3410
3424
,3410
3424
3410
3424
343
3414
10)(
34143411
,3414
3411
3410
343
3424
3414
11)(
3410
343
3424
3414
938
925
93
914
349
96
93
922
914
,,
33
)3()3(
)3()3(
)3(
33)3()3()3(
=
−+=
−=
−=
−
−=
=
=
−−=
−−=
−−
−−=
d
pp
C
deqpCdeCálculo
t
t
Tem-se: ••• UDL =
−
−
−
1001715103
109221
75800
09
340009
134
113928
019
13001
Pode-se verificar que •••=+ UDLYCXA t
62
Nste capítulo, mostra-se que John M. Bennett, substituindo A∆ por tYCX na
matriz 1)( −∆+ AA , chegou à identidade 1111111 ][)( −−−−−−− +=+ AYXAYCXAYCXA tt .
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 tYCXA + em ••• UDL a partir de L D U da matriz A. É
possível evitar a inversa da matriz modificada tYCXA + 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).
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 "fill-
in"[Tinney,85].
6
11
2
1 4 9
7
10 12
3
8 5
66
insfillnovoelementooriginalelemento
−−•o
•••••••••
••••••
•••••
••••
•••
••
o
o
121110987654321
FIGURA 11 – Estrutura esparsa da matriz L
Tabela de caminhos
01296121185121094109831185210741
PrPr NóóximoNóNóóximoNó
FIGURA 12 – Tabela de caminhos referentes à rede nodal da FIG. 10
FIGURA 13 – Grafo do caminho com 12 nós (árvore)
1
4
9
10
12
2
5
8
3 6
7
11
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.
FIGURA 14 – Rede de energia elétrica com 11 nós onde não foi feita uma ordenação
prévia dos mesmos
7
4 1
8
2 9
10 11
5 6 3
69
•••••
••••••
••••••
••••
••••
•
=
o
o
o
L )( insfillnovoelemento
originalelemento−
•o
FIGURA 15 – Estrutura da matriz L conseguida ao se fatorar a matriz A da rede nodal
acima, apresentando 3 fill-ins
FIGURA 16 – Grafo do caminho sem ordenação (árvore de 11 nós)
1 2
5
8
9
10
11
3
4
6
7
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.
FIGURA 17 – Rede de energia elétrica com 11 nós onde foi feita
a ordenação de grau mínimo
•••••••••••
••••
••••
••••
••
•
o
)( infillnovoelemento
originalelemento−
•o
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
2
1 4 3
7
9
11 10 6
8 5
71
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:
062162226140423622413326124124
1198743
108653
11987
111098
11971
1062
1052
1141
11103
652
741
=−−−−−=−−−−=−−−=−−−=−−−=−−=−−=−−=−−=−−=−−
xxxxxxxxxxx
xxxxxxxxxxxx
xxxxxx
xxxxxx
xxxxxx
E, portanto, tem-se a equação matricial A x = b onde:
6 3 2 1 7 8
5
10 4
9
11
72
=
−−−−−−−−−
−−−−−−−−−
−−−−
−−−−
−−−−
=
01210321311
6021100110006010110200206110000001114000000010104000002
01000600020010000400101000000300112000000600
0000021004000002001004
beA
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.
=
−−−
−
−−−−
= −
410000000
0321100
16100
163
007415
37100
3740
00373
371000
3730
016100
8300
81
000006100
00374
37300
37120
016300
8100
83
,
4000000004000002006000200004001000003001000006000021004002001004
11111 AA
−
−=
−−−−−−−−−−
=
−−−−−
−−
−−−
=602060206
110011001011020011000000
,
111101
010010100120
000000
222112 AeAA
73
−−−−−
−−−−−
−−−−
=−
41
321300
167
610
165
410
7417
37110
31
3770
41
321100
16100
163
. 11121 AA
−−
−−
−−
=−
= −−
96455
127
3285
127
4442023
41
3285
41
32173
..,
96121
127
3221
127
444641
41
3221
41
3219
.. 121
112122121
1121 AAAAAAA
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:
=
−−−−−
−−−−−
−−−−
01210321311
41
321300
167
610
165
410
7417
37110
31
3770
41
321100
16100
163
0
11
10
9
8
7
6
5
4
3
2
1
3
8
yyyyyyyyyyy
I
I
Tem-se:
23
148551,
1639,1,0,3,2,1,3,1,1 1110987654321 =========== yeyyyyyyyyyy
Cálculo de x:
U x = y, então tem-se :
=
−−
−−
−−
2
1
2
1
1211
96455
127
3285
127
4442023
410
3285
41
32173
YY
XX
AA
74
onde
=
10321311
1Y e
=
23
1485511639
2Y
Como 1212111 .. YXAXA =+ e 2222. YXB = ,então :
222.XB =
=
−−
−−
−−
23
1485511639
.
96455
127
3285
127
4442023
41
3285
41
32173
2X , para calcular 2X decompõe-se a
matriz 22B em ooUL . Pode-se escrever então 22 YXUL =oo e fazendo
zXU =2o , 2YzL =o .
=
−−−=
23
1485511639
11554,04913,0010462,0001
zzLo , logo
=
2935.38355,34375,2
z
=2XU o
=
−−−
2935,28355,34375,2
3248,3007061,05447,406563,225,04066,5
2X ,
9837,09978,0
9906,0
11
10
9
==
=
xxx
fazendo os arredondamentos tem-se
=
111
2X
).(
).(..
..
212111
111
21211
111111
11
212111
11
XAYAX
XAYAXAA
XAYXA
−=
−=
−=
−
−−
−
,
então:
75
=
−−−−−
−−
−−−
−
=
11111111
)111
.
111101
010010100120
000000
10321311
(
410000000
0321100
16100
163
00371
371500
3740
00371
371000
3730
016100
8300
81
000006100
00374
37300
37120
016300
8100
83
1X Temos,
portanto: 1... 11109321 ======= xxxxxx , 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.Pas-102 , 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
Processo detalhado para mostrar que AUA
aL =
1)2(
111
00
[ ]
)2(
11
11
11
1313
11
1212
11
1313
11
133133
11
123132
11
1212
11
132123
11
122122
11
11312
1
31
21
32
33332
22322
...............
...
...
...,...
...............
...
...
A
aaaa
aaaa
aaaa
aaaa
aaaa
aaaa
aaa
aa
aaa
aaaa
aGFH
aaaF
a
aa
G
aaa
aaaaaa
H
nnnn
nn
nn
nn
nn
n
n
nnnn
n
n
=
=−−
−−−
−−−
=−
=
=
=
( )
−−−
−−−
−−−
=
=
−−−
−−−
−−−
=
=
11
11
11
1313
11
1212111
11
1313
11
133133
11
1231321131
11
1212
11
132123
11
1221221121
11
11
11
11
1313
11
1212
11
1313
11
133133
11
123132
11
1212
11
132123
11
122122
11
1
31
21
2111
..................
...
...
0...00
...0............0
...0
...0
0...00
1...00...............0...100...010...001
00
aaaa
aaaa
aaaaal
aaa
aa
aaa
aaa
aal
aaaa
aaaa
aaaaal
a
aaaa
aaaa
aaaa
aaa
aa
aaa
aaa
a
aaaa
aaaa
aaaa
a
l
ll
Aa
L
nnnn
nn
nnn
nn
nn
nnnn
nn
nn
nn
nn
n
81
=
1)2(
111
00
UA
aL A
uuu
Aa
L
n
=
10000...............0...1000...010
...1
00
11312
)2(111
−+−++−
−+−+−−
−+−+−+
=
11
111111
11
131313111
11
121312111111
11
131311131
11
133133131131
11
1231321211311131
11
121211121
11
132123131121
11
1221221211211121
1111311121111
..................
...
...
...
aaaaual
aaaaual
aaaaualal
aaaaual
aaaaual
aaaaualal
aaaaual
aaaaual
aaaaualal
uauauaa
nnnnnn
nnn
nnnn
nnn
nnn
n
Pode-se verificar que:
11
111111
11
11
11
11
11
111111
11
1321131121
11
1221121121
11
111111
11
111111
11
1313131311
11
3131311131
11
1212121211
11
2121211121
,
:
,,...,,
:,
..................
aaa
ualeaa
uaa
l
seconcluea
aauala
aauala
aaual
setementâo
aauaua
aalaal
aauaua
aalaal
aauaua
aalaal
jiji
jj
ii
nnnn
nnnn
nnnn
===
−
===
−
=⇒==⇒=
=⇒==⇒=
=⇒==⇒=
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:
Seja a matriz A =
−−−
−−−−−
−−
201000513011503
0305200325
, A = L D U
=
−−−
−−
−−
−
=
33460000
02033000
0072000
0005210
00005
13313
20700
012013
750
00172
53
000152
00001
DL
−
−−
−−
−−
=
1000033131000207
713100
075
7210
0053
521
U
−
−=
=
−
−=
1000100101
1001
1000100101
YDX
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 0,6 1 0 0 0 -1 D*(1,1) = 6 L*(*,1) = 1 -0,58 -0,5 0 0 U*(*,1) = 1 -0,58 -0,5 0 0 C1 = 0,83 0 0 1 ------------------ Para I = 2 ------------------ X2 = 0,45 1 -0,35 0 0 -1
96
Y2 = 0,45 1 -0,35 0 0 -1 D*(2,2) = 6 0 0 4,41 L*(*,2) = 1 0 -0,58 1 -0,5 -0,33 0 -0,68 0 0 U*(*,2) = 1 -0,58 -0,5 0 0 0 1 -0,33 -0,68 0 C2 = 0,79 0 0 1 ------------------ Para I = 3 ------------------ X3 = -0,06 0,65 0,16 -0,65 Y3 = -0,06 0,65 0,18 -0,61 D*(3,3) = 6 0 0 0 4,41 0 0 0 4,02 L*(*,3) = 1 0 0 -0,58 1 0 -0,5 -0,33 1 0 -0,68 -0,49 0 0 -0,5 U*(*,3) = 1 -0,58 -0,5 0 0 0 1 -0,33 -0,68 0 0 0 1 -0,49 -0,53
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 0 0 -0,58 1 0 0 -0,5 -0,33 1 0 0 -0,68 -0,49 1 0 0 -0,5 -0,5 U*(*,4) = 1 -0,58 -0,5 0 0 0 1 -0,33 -0,68 0 0 0 1 -0,49 -0,53 0 0 0 1 -0,49 C4 = 0,76 -0,06 -0,06 0,63 ------------------------------- RESULTADO L* = 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,5 -0,5 1 D* = 6 0 0 0 0 0 4,41 0 0 0 0 0 4,02 0 0 0 0 0 1,98 0 0 0 0 0 1,5
98
U* = 1 -0,58 -0,5 0 0 0 1 -0,33 -0,68 0 0 0 1 -0,49 -0,53 0 0 0 1 -0,49 0 0 0 0 1