CCI-22 Matemática Computacional CCI

Transcrição

CCI-22 Matemática Computacional CCI
CCI-22
Matemática Computacional
CCI-22
3) Raízes de Sistemas Lineares
Carlos Alberto Alonso Sanches
Eliminação de Gauss, Gauss-Jordan,
Decomposição LU, Gauss-Jacobi, Gauss-Seidel
CCICCI-22
CCICCI-22
Introdução
Introdução
Métodos diretos
Métodos diretos
Regra de Cramer
Regra de Cramer
Eliminação de Gauss
Eliminação de Gauss
Gauss-Jordan
Gauss-Jordan
Decomposição LU
Decomposição LU
Métodos iterativos
Métodos iterativos
Gauss-Jacobi
Gauss-Jacobi
Gauss-Seidel
Gauss-Seidel
Considerações finais
Considerações finais
Métodos de resoluç
resolução
Para a resolução de um sistema linear de
equações, há dois grupos de métodos:
Métodos diretos: a solução é obtida através da
aplicação de um número finito de operações
aritméticas
Regra de Cramer
Eliminação de Gauss e de Gauss-Jordan
Decomposição LU
Métodos iterativos: a solução é obtida através de
uma sequência de aproximações sucessivas, até se
alcançar uma resposta que satisfaça a precisão
exigida
Gauss-Jacobi
Gauss-Seidel
Exemplo
Sistemas de Equaç
Equações Lineares
Forma geral:
onde:
a11x1 + a12 x2 + ... + a1n xn = b1
aij são os coeficientes
xi são as incógnitas
bi são os termos independentes
n é a ordem do sistema
a 21x1 + a 22 x2 + ... + a 2 n xn = b2
M
an 1x1 + an 2 x2 + ... + ann xn = bn
Forma matricial:
Ax = b
 a11 a12
a
a
A =  21 22
 M
M

 an1 an 2
onde:
L a1n 
L a2n 
O M 

L ann 
 x1 
x 
x =  2
M
 
xn 
b1 
b 
b =  2
M
 
bn 
Cálculo das forç
forças em uma treliç
treliça
Forma geral:
1
Fh
3
2
4
4
5
1
2x1 + 4x2 − 5x3 = 5
4x1 + 1x2 − 5x3 = 2
2x1 + 4x2 + 5x3 = −1
2
Um exemplo:
7
6
3
F1
6
8
9
11
13
15
14
10
5
8
12
7
F2
16
17
10
9
Fh
F3
Condições de equilíbrio:
Forma matricial:
2 4 − 5  x1   5 
4 1 − 5.x  =  2 

  2  
2 4 5  x3  − 1
Na junção 2:
∑ Fx = −f1cos
1
4245
4
3° + f4 + f5 cos
1
4245
4
3° = 0

a
a

∑ Fx = − a f1 + f4 + a f5 = 0

∑ Fy = − a f1 − f3 − a f5 = 0

Na junção 3:
∑ Fx = − f2 + f6 = 0

∑ Fy = − F1 + f3 = 0
Idem para demais junções
Gerará um sistema de ordem 17
CCICCI-22
Introdução
Métodos diretos
Regra de Cramer
Eliminação de Gauss
Regra de Cramer
A aplicação da regra de Cramer, em um
sistema de ordem n, exige o cálculo de quantos
determinantes?
n para os numeradores e 1 para o denominador
Gauss-Jordan
Decomposição LU
Métodos iterativos
Gauss-Jacobi
Gauss-Seidel
Considerações finais
Tempo de processamento
Tempo de processamento
Número m de multiplicações, no caso de 17
equações:
= 18 ( 17m + 17 ( 16m + 16 ( 15m + 15 ( 14m +
14 (.... ( 3m + 3 ( 2m )....)))))
multiplicações
18 det17 = 18 ( 17m + 17 det16 )
= 18 ( 17m + 17 ( 16m + 16 det15 ))
= 18 ( 17m + 17 ( 16m + 16 ( 15m + 15 det14 )))
= 18 ( 17m + 17 ( 16m + 16 ( 15m + 15 ( 14m +
14 (.... ( 3m + 3 ( 2m )....)))))
= m(
Lembrando:
+
+
+
:
+
+
2 x 3 x 4 x 5 x
3 x 4 x 5 x
4 x 5 x
5 x
....
....
....
....
x
x
x
x
17
17
17
17
x
x
x
x
18
18
18
18
+
+
+
+
:
16 x 17 x 18 +
17 x 18 )
= 18! (1 + (1/2!) + (1/3!) + ... + (1/16!) ) multiplicações
≈ 9,6 x 1015 multiplicações
Tempo de processamento
CCICCI-22
Quantidade de multiplicações: ≈ 9,6 x 1015
Introdução
Utilizando um supercomputador atual:
Métodos diretos
1011 multiplicações por segundo
Regra de Cramer
Tempo gasto: 9,6 x 104 s ≈ 1 dia
Eliminação de Gauss
Se o sistema fosse de ordem 20, exigiria
cerca de 28 anos de processamento nesse
mesmo computador!
Um algoritmo bem mais eficiente é o
Método da Eliminação de Gauss, que gasta
tempo O(n3)
Método da Eliminaç
Eliminação de Gauss
Objetivo
Transformação do sistema linear a ser resolvido
em um sistema linear triangular
Operações válidas:
Troca da ordem das linhas
Troca da ordem das colunas (com exceção dos
termos independentes)
Multiplicação de uma equação por um número real
não nulo
Substituição de uma equação por uma combinação
linear entre ela mesma e outra equação
Gauss-Jordan
Decomposição LU
Métodos iterativos
Gauss-Jacobi
Gauss-Seidel
Considerações finais
Sistemas Lineares Triangulares
Triangular superior:
 a11 0
a
 21 a22
A = a31 a32

M
 M
 an1 an 2
0
0
a33
M
an 3
K 0
K 0 
K 0

O M 
K ann 
Triangular inferior:
a11 a12 a13
0 a
a23
22

A=0
0 a33

M
M
 M
 0
0
0
K a1n 
K a2n 
K a3n 

O M 
K ann 
Resoluç
Resolução de um sistema triangular
Exemplo:
3x1 + 4x2 − 5x3
x2
+ x3
4x3
+ x4
− 2x4
= −10
= −1
− 5x4
2x4
= 3
= 2
Passos
Considere a matriz aumentada [Ab]:
a11 a12
a a
[Ab] =  21 22
M
M

an1 an2
Passos da resolução:
Continuar analogamente para linhas Lj , 2 < j ≤ n
3x1 + 4 ⋅ (−1) − 5 ⋅ 2 + 1 = −10
x1 = 1
Passo i, 1 < i < n: anular os coeficientes de xi nas linhas
Li+1 a Ln
Exemplo 1
Exemplo 1
2x1 + 3x2 − x3 = 5
2x1 − 3x2 + x3 = −1
L3 = L3 − m31 ⋅ L1, m31 =
2
3 −1 5 
− 2 − 1 − 7
0 − 6 2 − 6
2 3 − 1 5 
[Ab] = 4 4 − 3 3 
2 − 3 1 − 1
4x1 + 4x2 − 3x3 = 3
L2 = L2 − m21 ⋅ L1, m21 =
Linha Ln
Se Lk não existir, então o sistema não tem solução
3x1 + 4x2 − 5x3 + x4 = −10
x2 = −1
Linha L2
Substituir a linha L2 pela combinação linear:
a
L2 − m21 ⋅ L1, onde m21 = 21
a11
Se a11 = 0, trocar L1 com Lk, onde ak1 ≠ 0
4x3 − 5 ⋅ 1 = 3
x3 = 2
x2 + x3 − 2x4 = −1
x2 + 2 − 2 ⋅ 1 = −1
Linha L1
Passo 1: anular os coeficientes de x1 nas linhas L2 a Ln
4x3 − 5x4 = 3
2
x4 = = 1
2
K a1n b1 
K a2n b2 
O M M

an3 ann bn 
a21
=2
a11
L2 = [0 − 2 − 1 − 7]
a31
=1
a11
L 3 = [2
−3
1
− 1] − 1 ⋅ [2
L 3 = [0
−6
2
− 6]
2
L2 = [4 4 − 3 3] − 2 ⋅ [2 3 − 1 5]
3 −1 5 
− 2 − 1 − 7
0 − 6 2 − 6
[Ab] = 0
[Ab] = 0
L3 = L3 − m32 ⋅ L2 , m32 =
a32
=3
a22
L3 = [0 − 6 2 − 6] − 3 ⋅ [0 − 2 − 1 − 7]
3
−1
5]
L3 = [0 0 5 15]
2
3 −1 5 
− 2 − 1 − 7
0 0 5 15 
[Ab] = 0
5x3 = 15 ⇒ x3 = 3

− 2x2 − x3 = −7 ⇒ −2x2 − 3 = −7 ⇒ x2 = 2
2x + 3 ⋅ x − x = 5 ⇒ 2x +6 − 3 = 5 ⇒ 2x = 2 ⇒ x = 1
2
3
1
1
1
 1
Exemplo 2
x1 + 4x2 + 52x3 = 57
27x1 + 110x2 − 3x3 = 134
22x1 + 2x2 + 14x3 = 38
Exemplo 2
4
52 57 
1

[Ab] = 27 110 − 3 134
22 2 14 38 
Nos cálculos a seguir, consideraremos F(10,3,-5,5):
L2 = L2 − m21 ⋅ L1 = [27 110 − 3 134] − (27 / 1) ⋅ [1 4 52 57]
L2 = [0 2 − 1400 − 1410]
L3 = L3 − m31 ⋅ L1 = [22 2 14 38] − (22 / 1) ⋅ [1 4 52 57]
L3 = [0 − 86 − 1130 − 1210]
52
57 
1 4
[Ab] = 0 2 − 1400 − 1410
0 − 86 − 1130 − 1210
Pivoteamentos parcial e completo
Pivôs pequenos geram multiplicadores grandes, que
aumentam os erros de arredondamento...
Uma simples alteração no método de Gauss é escolher
como pivô o elemento de maior módulo:
em cada coluna (pivoteamento parcial)
dentre todos os elementos possíveis no processo de eliminação
(pivoteamento completo): exige um maior esforço
computacional
Voltemos a resolver o exemplo anterior com precisão
de 3 casas decimais, mas com pivoteamento parcial:
4 52 57 
1
27 110 − 3 134


22 2 14 38 
27 110 − 3 134
1
4 52 57 

22 2 14 38 
52
57 
1 4

[Ab] = 0 2 − 1400 − 1410
0 − 86 − 1130 − 1210
L3 = L3 − m32 ⋅ L2 = [0 − 86 − 1130 − 1210] − (− 86 / 2) ⋅ [0 2 − 1400 − 1410]
L3 = [0 0 − 61300 − 61800]
52
57 
1 4
[Ab] = 0 2 − 1400
− 1410 
0 0 − 61300 − 61800 
x3 = -61800/(-61300) = 1,01
x2 = [-1410 – (-1400)⋅1,01]/2 = 0,0
x1 = [57 - 52⋅1,01 - 4⋅0,0]/1 = 4,5
No entanto, a solução exata é:
x1 = 1
x2 = 1
x3 = 1
Exemplo 2 com pivoteamento parcial
L2 = L2 − m21 ⋅ L1 = [1 4 52 57] − (1/ 27) ⋅ [27 110 − 3 134]
L2 = [0 − 0,07 52,1 52]
L3 = L3 − m31 ⋅ L1 = [22 2 14 38] − (22 / 27) ⋅ [27 110 − 3 134]
L3 = [0 − 87,6 16.5 − 71]
− 3 134
27 110
 0 − 0.07 52,1 52 


 0 − 87,6 16,5 − 71
− 3 134
27 110
 0 − 87,6 16,5 − 71


 0 − 0,07 52,1 52 
L3 = L3 −m32 ⋅ L2 = [0 −0,07 52,1 52] −(0,07/ 87,6)⋅ [0 −87,6 16,5 −71]
L3 = [0 0 52,1 52,1]
− 3 134
27 110
 0 − 87,6 16,5 − 71


 0
0
52,1 52,1
x3 = 52,1/52,1 = 1
x2 = [-71-16,5⋅1]/(-87,6) = 0,999
x1 = [134 – (-3)⋅1 – 110⋅0,999]/27 = 1,00
Exercí
Exercício
CCICCI-22
Considere o sistema linear abaixo:
Introdução
Métodos diretos
0,0002x1 + 2x2 = 5
2x1 + 2x2 = 6
Regra de Cramer
Utilizando aritmética de três dígitos decimais,
resolva-o através da eliminação de Gauss:
sem pivoteamento parcial
com pivoteamento parcial
Eliminação de Gauss
Gauss-Jordan
Decomposição LU
Métodos iterativos
Confira os resultados encontrados
Gauss-Jacobi
Gauss-Seidel
Considerações finais
Método de GaussGauss-Jordan
Exemplo
Consiste em efetuar operações sobre as
equações do sistema com a finalidade de
transformá-lo em um sistema diagonal
equivalente, isto é, são nulos todos os
coeficientes aik, quando i≠k
0
a11 0
0 a
0
22

A =  0 0 a33

M
M
M
 0 0
0
K
K
L
O
K
0
0 
0

K
ann 
x1 + 5x2 + x3 = 1
5x1 + 2x2 + 3x3 = 2
1 5 1 1 
2 3 2 
2 3 2 4 
[Ab] = 5
2x1 + 3x2 + 2x3 = 4
5 2 3 2 
1 5 1 1 


2 3 2 4 
L2 = L2 − m21 ⋅ L1 = [1 5 1 1] − (1 / 5) ⋅ [5 2 3 2]
L2 = [0 4,6 0,4 0,6]
L3 = L3 − m31 ⋅ L1 = [2 3 2 4] − (2 / 5) ⋅ [5 2 3 2]
L3 = [0 2,2 0,8 3,2]
3
1 
5 2

[Ab] = 0 4,6 0,4 0,6
0 2,2 0,8 3,2 
Exemplo
Exemplo
5
2
3
1 
4,6
0
− 1,313
0 0 0,609 2,913 
5
2
3
1 
4,6 0,4 0,6
0 2,2 0,8 3,2
[Ab] = 0
[Ab] = 0
L3 = L3 − m32 ⋅ L2 = [0 2,2 0,8 3,2] − (2,2 / 4,6) ⋅ [0 4,6 0,4 0,6]
L3 = [0 0 0,609 2,913]
L1 = [5 0 3 1,571]
5
2
3
1 
4,6 0,4
0,6 
0 0 0,609 2,913
[Ab] = 0
L2 = L2 − m23 ⋅ L3 = [0 4,6 0,4 0,6] − (0,4 / 0,609) ⋅ [0 0 0,609 2,913]
L2 = [0 4,6 0 −1,313]
Outra aplicaç
aplicação
[A|I]
L1 = [5 0 3 1,571] − (3 / 0,609) ⋅ [0 0 0,609 2,913]
L1 = [5 0 0 − 12,78]
0
− 12,78
5 0
[Ab] = 0 4,6 0 − 1,313 
0 0 0,609 2,913 
A solução é:
x1 = -2,556
x2 = -0,2854
x3 = 4,783
Refinamento por resí
resíduos
Uma variação do método de Gauss-Jordan
pode ser utilizada para se encontrar a inversa
de uma matriz A quadrada de ordem n
Basta transformar a matriz A na
correspondente matriz identidade, aplicando
essas mesmas operações em uma matriz
identidade de ordem n
Gauss-Jordan
L1 = [5 2 3 1] − (2 / 4,6) ⋅ [0 4,6 0 − 1,313]
[I|A-1]
Se x(1) for encontrado como solução do sistema
Ax = b, então o erro dessa solução é x – x(1)
Multiplicando o erro por A:
A(x- x(1)) = Ax – Ax(1) = b – b(1) = r(1)
resíduo
O resíduo pode ser utilizado para se encontrar
uma solução melhorada x(2):
x(2) = x(1) + δ(1), onde δ(1) é um vetor de correção
Ax(2) = b ⇔ A(x(1) + δ(1)) = b ⇔ Aδ(1) = b - Ax(1) = r(1)
δ(1) é solução do sistema Aδ = r(1)
Esses cálculos permitem um processo de
refinamento da solução do sistema Ax = b
Exemplo
Exemplo
Vamos refinar o sistema abaixo:
Cálculo do vetor de correção δ(1):
8,7x1 + 3,0x2 + 9,3x3 + 11,0x4 = 16,4
3,0
 8,7
24 ,5 − 8,8

 53,3 − 8,8

 21,0 − 81,0
24,5x1 − 8,8x2 +11,5x3 − 45,1x4 = −49,7
53,3x1 − 8,8x2 −23,5x3 +11,4x4 = −80,8
21,0x1 − 81,0x2 −13,2x3 + 21,5x4 = −106,3
Solução:
Através do método de Gauss, podemos
encontrar a solução abaixo:
x (1 ) = [ 0,97
1,98
− 0,97
Cálculo do resíduo:
r (1 ) = b − Ax (1 )
1,00 ]T
 0,042 
 0,214 

=
 0,594 


 − 0,594 
9,3
11,0   δ 1   0,042 
 
11,5
− 45,1   δ 2   0,214 
=
− 23,5 11,4   δ 3   0,594 
  

− 13,2 21,5   δ 4   − 0,594 
δ
Não está
bom...
 0,0295 


(1 ) =  0,0195 
 − 0,0294 


 0,0000 
Solução melhorada:
x
Exemplo
(2 )
=x
(1 )
+δ
(1 )
 1,0000 
 2,0000 

=
 − 0,9999 


 1,0000 
Melhor aproximaç
aproximação
Novo resíduo:
r ( 2 ) = b − Ax ( 2 )
Cálculo do novo
vetor de correção:
 − 0,009 
 − 0,011 

=
 0,024 


 0,013 
δ
 1,0000 
Outra
 2,0000 
(3)

x =
solução
 − 1,0000 


melhorada:
1,0000


(2 )
=
Melhor que
o anterior
 − 0,0002 
 − 0,0002 


 − 0,0007 


 0,0000 
Novo
resíduo:
Dado um sistema Ax = b, sejam y e z duas aproximações
da solução exata x. Como saber qual delas é a melhor?
A estratégia mais lógica parece ser comparar os
respectivos resíduos: o menor seria da melhor solução
Infelizmente, isso nem sempre é verdade...
Exemplo:
0,24x1 + 0,36x2 + 0,12x3 = 0,84

0,12x1 + 0,16x2 + 0,24x3 = 0,52
0,15x + 0,21x + 0,25x = 0,64
1
2
3

r (3 )
0 
0 
=  
0 
 
0 
 25 
y = − 14
 − 1 
− 3
z =  4 
 0 
0,00
ryy = 0,00
0,08
 0,12 
rzz = 0,24
0,25
− 3
x =  4 
 1 
Conclusão: nem sempre a aproximação de menor
resíduo é a melhor ou a mais exata
Se a busca por resíduos menores não garante melhores
soluções, como saber se o processo de refinamento por
resíduos funciona?
Condicionamento de problemas
Um problema é dito mal condicionado se pequenas
alterações nos dados de entrada ocasionam grandes
erros no resultado final
Exemplo:
0,992x + 0,873y = 0,119

0,481x + 0,421y = 0,060
Solução: x=1 e y=-1
Suponha que os valores desse sistema sejam obtidos
experimentalmente, e por isso os termos independentes
possam variar de ±0,001:
Valor perturbado
0,992x + 0,873y = 0,120

0,481x + 0,421y = 0,060
Solução: x=0,815 e y=-0,789
Outro exemplo
Considere os seguintes sistemas:
x + 3y = 11
(a)

1,5x + 4,501y = 16,503 (b)
(a)
x + 3y = 11

1,5x + 4,501y = 16,500 (c)
Solução: x=2 e y=3
Solução: x=10,28 e y=0,24
y
(a)
(b)
(c)
Erro na entrada: (|0,119-0,120|/|0,119|) ≈ 0,8%
x
Erro no resultado: (|1,0-0,815|/|1,0|) ≈ 18,5%
Métricas de condicionamento
Há métricas para o condicionamento de sistemas
lineares, baseadas em normas de vetores e matrizes
(vide Cláudio & Marins)
No entanto, esses cálculos são difíceis...
Também é possível identificar o condicionamento de um
sistema linear apenas com o uso dos refinamentos:
Se os resíduos r(1), r(2), ..., r(n) são pequenos, mas as correções
δ(1), δ(2), ..., δ(n) são grandes, então o sistema é mal condicionado
Para sistemas bem condicionados, bastam no máximo dois
refinamentos (ou seja, δ(2) é muito pequeno)
Ao longo desse processo, os resíduos e as correções
devem ser calculados com precisão dupla
Exemplo
Considere o sistema abaixo em F(10,5,-98,100):
2,4759x1 +1,6235x2 + 4,6231x3 = 0,064700

1,4725x1 + 0,95890x2 −1,3253x3 = 1,0473
2,6951x + 2,8965x −1,4794x = −0,67890
1
2
3

 1,8406
x(1) =  −2,0717
−0,24419

Primeiro refinamento em F(10,10,-98,100):
 0,0648   0,064821801
r ((11)) = b − Ax ((11)) =  1,0473  −  1,047355377
 − 0,6789   − 0,678823304
Resolução de
Aδ(1) = r(1):
− 0,0000042282
δ((11)) =  0,000025110 
 − 0,000057765 
  − 0,000121801
 =  − 0,000055377
 
  − 0,000076696




Resíduos
pequenos
Solução melhorada
x(2) = x(1) + δ(1):
Correções
pequenas
 1,8405 
x((22)) =  − 2,0717 
− 0,24419
CCICCI-22
Uma outra forma de ver...
Introdução
Consideremos o sistema de 3 equações Ax = b:
 a11 a12 a13 
A = a21 a22 a23  = A(0 )
a31 a32 a33 
Métodos diretos
Regra de Cramer
Eliminação de Gauss
(1 )
(1 )
a11(1 ) a12

a13

(1 )
(1 ) 
A =  0 a22 a23  = M( 0 ) .A( 0 ) ,
(1 )
(1 ) 
 0 a32
a33


(1 )
Decomposição LU
Métodos iterativos
Gauss-Seidel
(2 )
A
Considerações finais
Uma outra forma de ver...
(2)
(2 )
a11(2) a12

a13

(2)
(2 ) 
=  0 a22 a23  = M(1 ) .A(1 ) ,
(2 ) 
 0
0 a33


0
0
1
onde M(1 ) = 0
1
0 
0 − m32 1 
Decomposiç
Decomposição LU
Resumindo:
A comprovação anterior pode ser generalizada em um
teorema
A = A(0)
A(1) = M(0).A(0) = M(0).A
A(2) = M(1).A(1) = M(1).M(0).A
A = (M(1).M(0))-1.A(2)
A = (M(0))-1.(M(1))-1.A(2)
0
0
 1
m
0
 21 1
A = L.U = m31 m32 1

M
M
 M
mn1 mn2 mn3
0 0
 1

(M ) (M ) = m21 1 0
m31 m32 1
( 0 ) −1
Portanto:
0 0
 1
onde M( 0 ) = − m21 1 0
− m31 0 1 
Após a segunda fase da eliminação de Gauss:
Gauss-Jacobi
É fácil comprovar que:
b1 
b = b2 
b3 
Após a primeira fase da eliminação de Gauss:
Gauss-Jordan
 x1 
x = x2 
x3 
(1) −1
(2 )
0 0 a11( 2) a12
 1



(2 )
A = m21
1 0  0 a22

0
m31 m32 1   0
(2 )

a13
(2 ) 
a23
 = L.U
(2 ) 
a33 
K 0 u11 u12 u13
K 0  0 u22 u23
K 0 ⋅  0 0 u33
 
O 0  M
M
M
K 1   0 0 0
K u1n 
K u2n 
K u3n 

O M 
K unn 
Dada uma matriz quadrada de ordem n, seja Ak a matriz
constituída das primeiras k linhas e colunas de A.
Suponha que det(Ak) ≠ 0, 0 ≤ k ≤ n-1. Então:
Existe uma única matriz triangular inferior L=(mij), com mii = 1,
1 ≤ i ≤ n. Os demais são os multiplicadores da Eliminação de Gauss
Existe uma única matriz triangular superior U=(uij), tais que
L.U = A
det(A) = u11.u12. ... .unn
Decomposiç
Decomposição LU
Exemplo
Portanto, dados o sistema linear Ax = b e a
decomposição (ou fatoração) LU da matriz A, temos:
3x1 + 2x2 + 4x3 = 1
x1 + x2 + 2x3 = 2
Ax = b ⇔ (L.U)x = b
Chamando Ux = y, o sistema original passa a ser Ly = b,
ou seja, surgem dois sistemas triangulares
Por outro lado, é fácil verificar que y = L-1.b é o vetor b
acumulando as operações da Eliminação de Gauss
Por exemplo, no caso de um sistema com 3 equações:
Como L = (M(0))-1.(M(1))-1, então L-1 = M(1).M(0)
Portanto, y = M(1).M(0).b
Vantagem da decomposição A = L.U: uma vez calculadas
as matrizes L e U, resolvemos mais rapidamente
qualquer sistema com a matriz A. Isso é útil, por
exemplo, no refinamento por resíduos
Exemplo
4x1 + 3x2 − 2x3 = 3
 1 0 0
L =  1 / 3 1 0
4 / 3 1 1 
Ax = b
4 
3 2
U = 0 1 / 3 2 / 3
0 0 − 4 
LUx = b
y1 = 1
Ux = y
3 2 4
A = 1 1 2
4 3 2
4 
3 2
0 1 / 3 2 / 3 


0 1 / 3 − 10/ 3
 1 0 0
L =  1 / 3 1 0
4 / 3 1 1 
multiplicadores
2
4 
 3
1 / 3 1 / 3 2 / 3 


4 / 3 1 / 3 − 10/ 3
2
4 
 3
1 / 3 1 / 3 2 / 3


4 / 3 1 − 4 
4 
3 2

U = 0 1 / 3 2 / 3
0 0 − 4 
Outra aplicaç
aplicação
3x1 + 2x2 + 4x3 = 1
x1 + x2 + 2x3 = 2
Ly = b
4x1 + 3x2 + 2x3 = 3
1 / 3y1 + y2 = 2
4 / 3y1 + y2 + y3 = 3
3x1 + 2x2 + 4x3 = 1
1 / 3 x2 + 2 / 3 x3 = 5 / 3
− 4x3 = 0
 1 
y = 5 / 3
 0 
− 3
x =  5 
 0 
A decomposição LU também é útil no cálculo
da matriz inversa
Resolver o sistema AX = B, onde A, X e B são
matrizes de ordem n, é o mesmo que resolver
n sistemas Ax = b, onde x e b são vetores de
tamanho n
A inversa A-1 da matriz A pode ser
encontrada através da resolução do sistema
AX = I, onde I é a matriz identidade
Nesse caso, basta realizar uma única vez a
decomposição LU da matriz A, e depois
utilizá-la na resolução de n sistemas
Decomposiç
Decomposição LU com pivoteamento
É possível incorporar as estratégias de pivoteamento
parcial ou completo à decomposição LU
Uma matriz quadrada P de ordem n é uma matriz de
permutação se for obtida da correspondente matriz
identidade através de permutações em suas linhas ou
colunas
As eventuais permutações de linhas ou colunas na
matriz A(k), obtida em um passo intermediário da
Eliminação de Gauss, podem ser realizadas através da
multiplicação por uma matriz de permutação
Exemplo:
3 1 4
A(k) = 1 5 9
2 6 5
0 1 0 3 1 4 1 5 9
P.A(k) = 0 0 1 .1 5 9 = 2 6 5
1 0 0 2 6 5 3 1 4
Exemplo com pivoteamento parcial
0
−3 
 4
A(2) = 3 / 4 − 4 13/ 4
1 / 4 − 1 / 2 35/ 8
0
0
 1
L = 3/ 4
1
0
1 / 4 − 1 / 2 1 
Exemplo com pivoteamento parcial
3x1 − 4x2 + x3 = 9
x1 + 2x2 + 2x3 = 3
4x1 − 3x3 = −2
3 − 4 1 
A(0) = 1 2 2 
4 0 − 3
0
−3 
 4
1 0 0
A(1) = 1 / 4 2 11/ 4 P(1) = 0 0 1 


3 / 4 − 4 13/ 4
0 1 0
0 0 1  3 − 4 1  4 0 3
A' = P.A = 1 0 0.1 2 2  = 3 − 4 1
0 1 0 4 0 − 3 1 2 2
A’x = b’ ⇔ PAx = Pb ⇔ LUx = Pb
4 0 3
A'(0) = P(0).A(0) = 1 2 2
3 − 4 1 
−3 
0
 4
A'(1) = P(1).A(1) = 3 / 4 − 4 13/ 4
1 / 4 2 11/ 4
Exemplo com pivoteamento parcial
3x1 − 4x2 + x3 = 9
x1 + 2x2 + 2x3 = 3
4x1 − 3x3 = −2
−3 
4 0
U = 0 − 4 13/ 4
0 0 35/ 8
L.U = A’ = P.A, onde P = P(1).P(0):
0 0 1 
P(0) = 0 1 0
1 0 0
0
0
 1
L = 3 / 4
1
0
1 / 4 − 1 / 2 1 
Ax = b
Ly = Pb
Ux = y
−3 
4 0
U = 0 − 4 13/ 4
0 0 35/ 8
LUx = Pb
0
0  y1  0 0 1   9 
 1
3 / 4
1
0.y2  = 1 0 0. 3 

1 / 4 − 1 / 2 1  y3  0 1 0 − 2
− 3  x1   2 
4 0
0 − 4 13/ 4.x  =  21/ 2 

  2 

0 0 35/ 8 x3  35/ 4
 −2 
y =  21/ 2 
35/ 4
1
x = − 1
 2 
CCICCI-22
Introdução
Métodos iterativos
Como foi inicialmente comentado, os métodos iterativos
para resolução de sistemas lineares consistem em
encontrar uma sequência de aproximações sucessivas
Dada uma estimativa inicial x(0), calcula-se a sequência
x(1), x(2), x(3) ..., até que determinado critério de parada
seja satisfeito
O sistema Ax = b é transformado em x(k) = Cx(k-1) + g,
k>0, onde C é uma matriz e g um vetor
Possíveis critérios de parada:
Métodos diretos
Regra de Cramer
Eliminação de Gauss
Gauss-Jordan
Decomposição LU
Métodos iterativos
máximo erro absoluto ou relativo
número de iterações
Gauss-Jacobi
Gauss-Seidel
Principais métodos: Gauss-Jacobi e Gauss-Seidel
Considerações finais
CCICCI-22
Introdução
Método de GaussGauss-Jacobi
Considere o sistema linear em sua forma inicial:
Métodos diretos
a11 x1 + a12 x2 + ... + a1n xn = b1
Regra de Cramer
a21 x1 + a22 x2 + ... + a2n xn = b2
M
M
O M M
Eliminação de Gauss
Gauss-Jordan
an 1 x1 + an 2 x2 + ... + ann xn = bn
Decomposição LU
Métodos iterativos
Gauss-Jacobi
Gauss-Seidel
Considerações finais
Isolando a i-ésima incógnita na i-ésima equação:
x1 = (b1 - a12 x2 - ... - a1n x2)/a11
x2 = (b2 - a21 x1 - ... - a2n xn)/a22
...
xn = (bn - an1 x1 - ... - an,n-1 xn-1)/ann
Método de GaussGauss-Jacobi
Exemplo
Dessa forma, para x(k) = Cx(k-1) + g:
0

− a / a
21
22
C=

M

 − an1 / ann
− a12 / a11
0
M
− an 2 / ann
L − a1n / a11 
L − a2n / a22 

O
M

L
0

10x1 + 2x2 + x3 = 7
 b1 / a11 
b / a 
g =  2 22
 M 


bn / ann 
Exemplos de critérios de parada:
Erro absoluto: d(k) = maxi |x(k) – x(k-1)| < ε
Erro relativo: dr(k) = d(k)/(maxi |x(k)|) < ε
x1 + 5x2 + x3 = 8
2x1 + 3x2 + 10x3 = 6
− 2 / 10 − 1 / 10
 0
C = − 1 / 5
0
− 1 / 5 
− 1 / 5 − 3 / 10
0 
 0,7 
x(0) = − 1,6
 0,6 
ε = 0,05
7 / 10
g =  8 / 5 
6 / 10
 0,96 
x(1) = Cx(0) + g = − 1,86
 0,94 
|x1(1) – x1(0)| = 0,26
|x2(1) – x2(0)| = 0,26
dr(1) = 0,34/(max |xi(1)|) = 0,1828 > ε
|x3(1) – x3(0)| = 0,34
Exemplo
− 2 / 10 − 1 / 10
 0
0
− 1 / 5 
C = − 1 / 5
− 1 / 5 − 3 / 10
0 
0,978
x(2) = Cx(1) + g =  − 1,98
0,966
Crité
Critério das linhas
7 / 10
g =  8 / 5 
6 / 10
 0,96 
x(1) = − 1,86
 0,94 
dr(2) = 0,12/1,98 = 0,0606 > ε
Em um método iterativo, a convergência para a
solução exata não é garantida: é preciso que o
sistema satisfaça alguns requisitos
Há uma condição suficiente para a convergência
do Método de Gauss-Jacobi, conhecido como o
critério das linhas :
n
∑a
ij
 0,9994
x(3) = Cx(2) + g = − 1,9888
 0,9984
j=1
j ≠i
dr(3) = 0,0324/1,9888 = 0,0163 < ε
< aii , para i = 1,2,...,n
Exemplos
Demonstraç
Demonstração
Considere o exemplo anterior:
Sejam:
10x1 + 2x2 + x3 = 7
2+1 < 10
x1 + 5x2 + x3 = 8
2x1 + 3x2 + 10x3 = 6
1+1 < 5
x* = [x1, x2, ..., xn]T: a solução exata de Ax = b
Garantia de
convergência
2+3 < 10
1=1
x1 − 3x2 = −3
1<3
e(k) = x(k) – x*: o erro na k-ésima aproximação
Queremos garantir que limk→∞ e(k)i = 0, 1≤i≤n
Considere o exemplo abaixo:
x1 + x2 = 3
x(k) = [x(k)1, x(k)2, ..., x(k)n]T: a k-ésima aproximação de x*
No Método de Gauss-Jacobi, pode-se constatar que:
e(k+1)1 = -(a12e(k)2 + a13e(k)3 + ... + a1ne(k)n)/a11
Não há garantia
de convergência
e(k+1)2 = -(a21e(k)1 + a23e(k)3 + ... + a2ne(k)n)/a22
e(k+1)n = -(an1e(k)1 + an2e(k)2 + ... + an(n-1)e(k)n-1)/ann
No entanto, o método de Gauss-Jacobi converge neste sistema
para a solução exata x1 = x2 = 3/2. Verifique!
Isso mostra que o critério das linhas é suficiente, mas não
necessário
Sejam:
E(k) = máx1≤i≤n{|e(k)i|}
αi = (|ai1| + ... + |ai(i-1)| + |ai(i+1)| + ... + |ain|)/|aii|, 1≤i≤n
Quando o critério das linhas é satisfeito, αi < 1
Demonstraç
Demonstração (continuaç
(continuação)
Mais um exemplo
Quando k→∞, x(k)→x* é equivalente a E(k)→0
Considere o sistema a seguir:
Demonstraremos que
E(k+1)
≤
α.E(k),
onde α = máx1≤i≤n{αi}
Para 1 ≤ i ≤ n:
e(k+1)i = -(ai1e(k)1 + ... + ai(i-1)e(k)i-1 + ai(i+1)e(k)i+1 + ... + aine(k)n)/aii
|e(k+1)i|
(|ai1|.|e(k)1|
≤
|ain|.|e(k)n|)/|aii|
+ ... +
|ai(i-1)|.|e(k)i-1|
+
|ai(i+1)|.|e(k)i+1|
+ ... +
|e(k+1)i| ≤ (|ai1| + ... + |ai(i-1)| + |ai(i+1)| + ... + |ain|).E(k)/|aii|
|e(k+1)i| ≤ αi.E(k)
Portanto, E(k+1) ≤ α.E(k)
Consequentemente, E(k+1)/E(k) ≤ α
Como α<1, então E(k)→0 quando k→∞: há convergência!
x1 + 3x2 + x3 = −2
3+1 > 1
5x1 + 2x2 + 2x3 = 3
6x2 + 8x3 = −6
5+2 > 2
6<8
Não há garantia
de convergência
No entanto, uma permutação entre as duas primeiras linhas
garante a convergência:
5x1 + 2x2 + 2x3 = 3
2+2 < 5
x1 + 3x2 + x3 = −2
1+1 < 3
6x2 + 8x3 = −6
6<8
Garantia de
convergência
Quando o critério das linhas não for satisfeito, convém tentar
uma permutação de linhas e/ou colunas
CCICCI-22
Método de GaussGauss-Seidel
Introdução
Analogamente ao Método de Gauss-Jacobi,
calcula-se x(k) = Cx(k-1) + g:
Métodos diretos
Regra de Cramer
0

− a / a
C =  21 22

M

 − an1 / ann
Eliminação de Gauss
Gauss-Jordan
Decomposição LU
Métodos iterativos
 b1 / a11 
b / a 
g =  2 22
 M 


bn / ann 
valores calculados na mesma iteração: x1(k +1) ,..., xj(−k1+1)
Gauss-Seidel
valores da iteração anterior: xj(k+1) ,..., xn(k )
Considerações finais
Exemplo
Exemplo
5 x1 + x2 + x3 = 5
ε = 0,05
3x1 + 4 x2 + x3 = 6
3x1 + 3x 2 + 6 x3 = 0
= 1,5 − 0,75 x
(k )
3
− 0,25 x
x3( k +1 ) = − 0,5 x1( k +1 ) − 0,5 x2( k +1 )
x1(k +1 ) = 1 − 0,2x2(k ) − 0,2x3(k )
x2(k +1 ) = 1,5 − 0,75x1(k +1 ) − 0,25x3(k )
x3(k +1 ) = −0,5x1(k +1 ) − 0,5x2(k +1 )
x1(1 ) = 1 − 0 − 0 = 1
x1( k +1 ) = 1 − 0,2x2( k ) − 0,2x3( k )
( k +1 )
1
x(0)
0
= 0
0
Primeira iteração (k=0):
Processo iterativo:
x
L − a1n / a11 
L − a2n / a22 

O
M

0
L

No entanto, utiliza-se no cálculo de xj( k +1) :
Gauss-Jacobi
( k +1 )
2
− a12 / a11
0
M
− an 2 / ann
x2(1 ) = 1,5 − 0,75 .1 − 0 = 0,75
x3(1 ) = −0,5.1 − 0,5.0,75 = −0,875
 1 
x(1) =  0,75 
− 0,875
|x1(1) – x1(0)| = 1
|x2(1) – x2(0)| = 0,75
|x3(1) – x3(0)| = 0,875
dr(1) = 1/(max |xi(1)|) = 1 > ε
Exemplo
Exemplo
x1(k +1 ) = 1 − 0,2x2(k ) − 0,2x3(k )
x1(k +1 ) = 1 − 0,2x2(k ) − 0,2x3(k )
x2(k +1 ) = 1,5 − 0,75x1(k +1 ) − 0,25x3(k )
x2(k +1 ) = 1,5 − 0,75 x1(k +1 ) − 0,25 x3(k )
( k +1 )
3
x
( k +1 )
1
= −0,5x
( k +1 )
2
x3(k +1 ) = 0 − 0,5x1(k +1 ) − 0,5x2(k +1 )
− 0,5x
Segunda iteração (k=1):
(2)
1
x
(2)
2
x
= 1 − 0,2.0,75 − 0,2.( −0,875 ) = 1,025
= 1,5 − 0,75 .1,025 − 0,25 .( −0,875 ) = 0,95
x3( 2 ) = −0,5.1,025 − 0,5.0,95 = −0,9875
Terceira iteração (k=2):
 1,025 
x =  0,95 
− 0,9875
(2)
|x1(2) – x1(1)| = 0,025
|x2(2) – x2(1)| = 0,20
x1( 3 ) = 1 − 0,2.0,95 − 0,2.( −0,9875 ) = 1,0075
x2( 3 ) = 1,5 − 0,75 .1,0075 − 0,25 .( −0,9875 ) = 0,9912
x3( 3 ) = −0,5.1,0075 − 0,5.0,9912 = −0,9993
|x1(3) – x1(2)| = 0,0175
dr(2) = 0,2/(max |xi(2)|) = 0,1951 > ε
|x2(3) – x2(2)| = 0,0412
dr(3) = 0,0412/(max |xi(3)|) = 0,0409 < ε
|x3(2) – x3(1)| = 0,1125
|x3(3) – x3(2)| = 0,0118
Interpretaç
Interpretação geomé
geométrica
Crité
Critério de Sassenfeld
No caso de um sistema linear de ordem 2, é
possível visualizar a convergência do método:
Sejam os seguintes valores:
x2
x*
x1
Os pontos (x1(k+1), x2(k))
satisfazem a primeira equação,
enquanto os pontos (x1(k+1), x2(k+1))
satisfazem a segunda
No mesmo sistema, a
convergência pode não ocorrer...
x1
β1 =
βi =
1
aii
1 n
⋅ ∑ a1 j
a11 j=2
n
 i−1

⋅ ∑ aij ⋅ β j + ∑ aij 
 j=1
j=i+1

, para 1 < i ≤ n
β = max {βj}, 1 ≤ j ≤ n
x2
x*
 1,0075 
x(3) =  0,9912 
− 0,9993
Se β < 1, então o Método de Gauss-Seidel gera
uma sequência convergente, qualquer que seja
x(0)
Quanto menor for β, mais rápida será a convergência
Exemplo
2 x1 + x2 − 0,2 x3 + 0,2 x 4 = 0,4
0,6 x1 + 3x2 − 0,6 x3 − 0,3x 4 = − 7 ,8
− 0,1 x1 − 0,2 x 2 + x3 + 0,2 x 4 = 1,0
0,4 x1 + 1,2 x2 + 0,8 x3 + 4 x 4 = − 10 ,0
1
⋅ (1 + 0,2 + 0,2) = 0,7
2
1
β2 = ⋅ (0,6 ⋅ 0,7 + 0,6 + 0,3) = 0,44
3
1
β3 = ⋅ (0,1 ⋅ 0,7 + 0,2 ⋅ 0,44 + 0,2) = 0,358
1
1
β 4 = ⋅ (0,4 ⋅ 0,7 + 1,2 ⋅ 0,44 + 0,8 ⋅ 0,358) = 0,2736
4
β = 0,7 < 1
β1 =
Demonstraç
Demonstração (continuaç
(continuação)
Quando k→∞, x(k)→x* é equivalente a E(k)→0
Demonstraremos por indução em i (1≤i≤n) que E(k+1) ≤ β.E(k), onde
β = máx1≤i≤n{βi}
Base (i=1):
|e(k+1)1| ≤ (|a12|.|e(k)2| + |a13|.|e(k)3| + ... + |a1n|.|e(k)n|)/|a11|
|e(k+1)1| ≤ [(|a12| + |a13| + ... + |a1n|)/|a11|]. máx1≤i≤n{|e(k)i|}
|e(k+1)1| ≤ β1.E(k) ≤ β.E(k)
Hipótese: |e(k+1)i-1| ≤ βi-1.E(k) ≤ β.E(k)
Passo:
|e(k+1)i| ≤ (|ai1|.|e(k+1)1| + ... + |ai(i-1)|.|e(k+1)i-1| + |ai(i+1)|.|e(k)i+1| + ... +
|ain|.|e(k)n|)/|aii|
|e(k+1)i| ≤ (|ai1|.β1 + ... + |ai(i-1)|.βi-1 + |ai(i+1)| + ... + |ain|).E(k)/|aii|
|e(k+1)i| ≤ βi.E(k) ≤ β.E(k)
Portanto, E(k+1)/E(k) ≤ β
Como β<1, então E(k)→0 quando k→∞: há convergência!
Demonstraç
Demonstração
Sejam:
x* = [x1, x2, ..., xn]T: a solução exata de Ax = b
x(k) = [x(k)1, x(k)2, ..., x(k)n]T: a k-ésima aproximação de x*
e(k) = x(k) – x*: o erro na k-ésima aproximação
Queremos garantir que limk→∞ e(k)i = 0, 1≤i≤n
No Método de Gauss-Seidel, pode-se constatar que:
e(k+1)1 = -(a12e(k)2 + a13e(k)3 + ... + a1ne(k)n)/a11
e(k+1)2 = -(a21e(k+1)1 + a23e(k)3 + ... + a2ne(k)n)/a22
e(k+1)n = -(an1e(k+1)1 + an2e(k+1)2 + ... + an(n-1)e(k+1)n-1)/ann
Sejam:
E(k) = máx1≤i≤n{|e(k)i|}
β1 = (|a12| + |a13| + ... + |a1n|)/|a11|
βi = (β1.|ai1| + ... + βi-1.|ai(i-1)| + |ai(i+1)| + ... + |ain|)/|aii|, 1<i≤n
Exemplos
Considere o sistema abaixo, anteriormente visto:
x1 + x2 = 3
x1 − 3x2 = −3
β1 = 1 / 1 = 1
β2 = (1.1) / 3 = 1 / 3
β=1
Não há garantia
de convergência
No entanto, o Método de Gauss-Seidel converge neste sistema
para a solução exata x1 = x2 = 3/2. Verifique!
Isso mostra que o critério de Sassenfeld, como o critério das
linhas, é suficiente, mas não necessário
Considere outro sistema:
10x1 + x2 = 23
6x1 − 2x2 = 18
β1 = 1 / 10 = 0,1
β2 = (6.0,1) / 2 = 0,3
β = 0,3 < 1
Neste caso, o critério de Sassenfeld garante a convergência,
mas o critério das linhas, não...
CCICCI-22
Introdução
Métodos diretos
Regra de Cramer
Eliminação de Gauss
Gauss-Jordan
Decomposição LU
Métodos iterativos
Gauss-Jacobi
Gauss-Seidel
Considerações finais
Relaç
Relação entre os crité
critérios
Se um sistema satisfaz o critério das linhas, então
também satisfará o critério de Sassenfeld
Demonstração:
Seja α = máx1≤i≤n{αi} < 1,
onde αi = (|ai1| + ... + |ai(i-1)| + |ai(i+1)| + ... + |ain|)/|aii|
Vamos provar por indução em i que βi ≤ αi < 1, 1≤i≤n
Base (i=1):
β1 = (|a12| + |a13| + ... + |a1n|)/|a11| = α1 < 1
Hipótese: βi ≤ αi < 1, 1≤i<n
Passo (1≤i≤n):
βi = (β1.|ai1| + ... + βi-1.|ai(i-1)| + |ai(i+1)| + ... + |ain|)/|aii|
βi ≤ (|ai1| + ... + |ai(i-1)| + |ai(i+1)| + ... + |ain|)/|aii| = αi < 1
Portanto, α < 1 ⇒ β < 1
A volta nem sempre é verdadeira...
Consideraç
Considerações finais
Métodos diretos versus iterativos
Tanto o critério das linhas como o critério de
Sassenfeld são condições suficientes para a
convergência, mas não necessárias
Em sistemas esparsos (com grande número de
coeficientes nulos), o Método da Eliminação de
Gauss não é apropriado, pois não preserva esta
vantajosa qualidade. Nesses casos, convém
utilizar métodos iterativos
Os métodos iterativos são menos suscetíveis ao
acúmulo de erros de arredondamento
Convergência
Diretos: não faz sentido considerar essa questão,
pois calculam a solução exata
Iterativos: ocorre sob determinadas condições
Esparsidade da matriz de coeficientes
Diretos: alteram a estrutura da matriz
Iterativos: utilizam sempre a matriz inicial
Erros de arredondamento
Diretos: ocorrem a cada etapa e acumulam-se
Iterativos: somente os erros da última etapa
afetam a solução

Documentos relacionados

Sumário 1. Introdução 2. Método iterativo de Gauss

Sumário 1. Introdução 2. Método iterativo de Gauss Teorema 4..1 (Critério de Sassenfeld) Seja A = (aij ) uma matriz quadrada de ordem n. Sejam βi , i = 1, 2, ..., n dados por: β1 =

Leia mais