Introdução aos Métodos...
Transcript of Introdução aos Métodos...
Introdução aos Métodos Numéricos
Instituto de Computação UFFDepartamento de Ciência da Computação
Otton Teixeira da Silveira Filho
Métodos iterativos – Convergência
Raio espectral de uma matriz
O raio espectral de uma matriz é definido por
onde são os autovalores da matriz referenciada
ρ=máx i|λi|
λi
Métodos iterativos – Convergência
Convergência dos Métodos Estacionários
● Um método estacionário convergirá para qualquer vetor inicial se e somente se o raio espectral da matriz associada ao método for menor que 1.
Métodos iterativos – Convergência
Convergência dos Métodos Estacionários
● Um método estacionário convergirá para qualquer vetor inicial se e somente se o raio espectral da matriz associada ao método for menor que 1.
● Se a matriz associada a um método tiver raio espectral diferente de outra associada a outro método, então a que tiver menor raio espectral convergirá mais rápido
Métodos iterativos – Convergência
As matrizes associadas aos métodos que vimos são
● Matriz de Gauss-Jacobi:
● Matriz de Gauss-Seidel:
−D−1 ( M+N )
−( D+N )−1 M
Métodos iterativos – Convergência
Este critério é preciso mas é difícil de verificar em várias situações, pois o problema de determinar autovalores é em geral de custo mais alto do que fazer alguns passos dos métodos iterativos
Métodos iterativos – Convergência
No entanto, existem vários critérios suficientes mas não necessários.
Métodos iterativos – Convergência
No entanto, existem vários critérios suficientes mas não necessários.
Apresentaremos aqui apenas um
Métodos iterativos – Convergência
No entanto, existem vários critérios suficientes mas não necessários.
Apresentaremos aqui apenas um
Mas façamos antes algumas definições
Métodos iterativos – Convergência
Matriz de Diagonal Dominante
Seja A uma matriz de componentes aij. Então se
diremos que A é uma matriz de diagonal dominante
|aii|≥ ∑j=1 ; j≠i
n
|aij|
Métodos iterativos – Convergência
Matriz de Diagonal Estritamente Dominante
Seja A uma matriz de componentes aij. Então se
diremos que A é uma matriz de diagonal estritamente dominante
|aii|> ∑j=1; j≠i
n
|aij|
Métodos iterativos – Convergência
A matriz abaixo é de diagonal dominante pois
(9 −1 3 42 8 2 −2
−2 3 7 13 2 2 7
) ;|−1|+|3|+|4|=8<9|2|+|2|+|−2|=6<8|−2|+|3|+|1|=6<7|3|+|2|+|2|=7=7
Métodos iterativos – Convergência
A matriz abaixo é de diagonal dominante pois
mas não é de diagonal estritamente dominante pois na última linha temos uma igualdade
(9 −1 3 42 8 2 −2
−2 3 7 13 2 2 7
) ;|−1|+|3|+|4|=8<9|2|+|2|+|−2|=6<8|−2|+|3|+|1|=6<7|3|+|2|+|2|=7=7
Métodos iterativos – Convergência
A matriz abaixo não é de diagonal dominante pois
(2 8 2 −29 −1 3 4
−2 3 7 13 2 2 7
) ;|8|+|2|+|−2|=12>2|9|+|3|+|4|=16>1|−2|+|3|+|1|=6<7|3|+|2|+|2|=7=7
Métodos iterativos – Convergência
A matriz abaixo não é de diagonal dominante pois
embora seja a matriz anterior com as duas primeiras linhas trocadas
(2 8 2 −29 −1 3 4
−2 3 7 13 2 2 7
) ;|8|+|2|+|−2|=12>2|9|+|3|+|4|=16>1|−2|+|3|+|1|=6<7|3|+|2|+|2|=7=7
Métodos iterativos – Convergência
Esta observação é importante pois a solução de um sistema de equações lineares é invariante sob trocas de linhas, ou seja, talvez seja possível fazer com que a matriz de um sistema pode ser de diagonal dominante por permuta de linhas.
Métodos iterativos – Convergência
Um critério suficiente mas não necessário
Seja A uma matriz de componentes aij associada a um sistema de equações lineares. Se a matriz for de diagonal dominante sendo estritamente dominante em pelo menos uma linha, então
● Os métodos de Gauss-Jacobi e Gauss-Seidel convergirão
● O método de Gauss-Seidel convergirá mais rápido
Métodos iterativos – Convergência
Atenção!
O fato de Gauss-Seidel convergir mais rápido que Gauss-Jacobi nas condições aqui apresentadas, significa que ele executará mais rápido num computador convencional.
Se você implementar Gauss-Jacobi num código/máquina paralela, poderemos ter um código com Gauss-Jacobi sendo mais rápido.
Métodos iterativos – Convergência
Observe que a matriz do primeiro sistema que resolvemos é de diagonal estritamente dominante dando garantida de convergência
(8 1 0 −11 9 1 0
−1 2 10 00 1 1 12
) x⃗=(13/2−8−35
)
Métodos iterativos – Convergência
Reforçando: O fato da matriz de um sistema não cumprir o critério da diagonal dominante não significa que os métodos aqui vistos divergirão!
Métodos iterativos – Convergência
Reforçando: O fato da matriz de um sistema não cumprir o critério da diagonal dominante não significa que os métodos aqui vistos divergirão!
O critério é apenas suficiente
Métodos iterativos – Convergência
Exercício: Faça alguns passos usando Gauss-Seidel para obter uma solução aproximada do sistema abaixo.
Observe que a matriz não satisfaz o critério dado mas Gauss-Seidel convergirá. Solução:
(9 1 1 31 9 1 31 1 9 36 3 3 9
) x⃗=(12616812663
)
x⃗T=(15,
814
,15,−594 )
Métodos iterativos – Convergência
Outro exemplo disto foi apresentado pelo matemático Lothar Collatz: A matriz abaixo também não é de diagonal dominante
Qualquer sistema criado com esta matriz fará com que Gauss-Jacobi convirja e Gauss-Seidel divirja
(1 2 −21 1 12 2 1 )
Métodos iterativos – Convergência
Uma grande quantidade de sistemas de equações lineares que surgem em problemas de tecnologia, ciência e engenharia tem suas matrizes com diagonal dominante
Métodos Iterativos – Mais um exemplo
Um exemplo mais “geométrico“
Resolveremos o sistema abaixo por Gauss-Seidel
com o vetor inicial .
(3 21 2 ) x⃗=( 45 )
x⃗0=( 1−1 )
Métodos Iterativos – Mais um exemplo
Montando o método de Gauss-Seidel
com o vetor inicial .
x⃗ i+1=( 0 0−1/2 0 ) x⃗i+1+ (0 −2/3
0 0 ) x⃗i+(4 /35 /2 )
x⃗0=( 1−1 )
Métodos Iterativos – Mais um exemplo
Calculando teremos
e a solução é
x⃗0=( 1−1 ) ; x⃗1=( 2
1,5 ) ; x⃗2=(0,332,33 ) ; x⃗3=(−0,22
2,6 11 ) ; x⃗4=(−0,407 4072,703703 )
x⃗= ( −0,52,75 )
Métodos Iterativos – Mais um exemplo
Este sistema foi criado para ter convergência particularmente lenta para que pudéssemos ver o processo de convergência evoluindo graficamente.
Métodos Iterativos – Outro exemplo
Determine a solução do sistema abaixo usando Gauss-Seidel. Pare quando o critério der um valor menor que 0,01. Sabe-se que a norma do máximo da solução é menor ou igual a 2.
(7 3 0 −1
−2 9 2 03 2 10 11 2 0 8
) x⃗= (80
−34
)
Métodos Iterativos – Outro exemplo
Preparando a matriz e o vetor
(7 3 0 −1
−2 9 2 03 2 10 11 2 0 8
)⇒ (0 3/7 0/7 −1 /7
−2 /9 0 2/9 0 /93 /10 2 /10 0 1/101 /8 2/8 0 0
)⇒ (0 −3/7 0 1/7
2 /9 0 −2/9 0−3/10 −1/5 0 −1 /10−1/8 −1 /4 0 0
)
(80
−34
)⇒ (8 /70 /9
−3 /104 /8
)⇒ (8 /70
−3/101/2
)
Métodos Iterativos – Outro exemplo
Montando o método
x⃗i+1=(
0 0 0 02 /9 0 0 0
−3 /10 −1/5 0 0−1/8 −1/4 0 0
) x⃗i+1+(0 −3 /7 0 1/70 0 −2/9 00 0 0 −1 /100 0 0 0
) x⃗i+(8/70
−3 /101/2
)
(0 −3 /7 0 1 /7
2 /9 0 −2/9 0−3 /10 −1/5 0 −1 /10−1/8 −1/ 4 0 0
);(8 /70
−3 /101 /2
)
Métodos Iterativos – Outro exemplo
Usaremos o seguinte vetor inicial que é compatível com a informação dada
x⃗0= (1
−101
)
Métodos Iterativos – Outro exemplo
Usaremos o seguinte vetor inicial que é compatível com a informação dada
mas existem muitas outras possibilidades.
x⃗0= (1
−101
)
Métodos Iterativos – Outro exemplo
Usaremos o seguinte vetor inicial que é compatível com a informação dada
mas existem muitas outras possibilidades. Use sempre algo simples...
x⃗0= (1
−101
)
Métodos Iterativos – Outro exemplo
No intuito de facilitar a compreenção do algorítmo, colocaremos em negrito os valores calculados durante o passo do método.
Métodos Iterativos – Outro exemplo
x⃗ i+1=(0 0 0 0
2/9 0 0 0−3/10 −1/5 0 0−1/8 −1/4 0 0
) x⃗ i+1+(0 −3 /7 0 1/70 0 −2/9 00 0 0 −1/100 0 0 0
) x⃗ i+(8/70
−3/101/2
); x⃗0=(1
−101
)
x⃗1=([0]+[−3 /7×(−1)+0×0+1/7×1]+8/7
[2/9×12 / 7 ]+[−2 /9×0+0×1]+0[−3 /10×12 /7−1/5×8 / 21 ]+[−1 /10×1]−3 /10
[−1/8×12/ 7−1 /4×8 / 21+0×(−104 /105 )]+[0]+1/2)=(
12 /78 /21
−104 / 1054 /21
)=(1,7142850,380952
−0,9904760,190476
)
Métodos Iterativos – Outro exemplo
x⃗ i+1=(0 0 0 0
2/9 0 0 0−3/10 −1/5 0 0−1/8 −1/4 0 0
) x⃗ i+1+(0 −3 /7 0 1/70 0 −2/9 00 0 0 −1/100 0 0 0
) x⃗ i+(8/70
−3/101/2
); x⃗0=(1
−101
)
x⃗1=([0]+[−3 /7×(−1)+0×0+1/7×1]+8/7
[2/9×12 / 7 ]+[−2 /9×0+0×1]+0[−3 /10×12 /7−1/5×8 / 21 ]+[−1 /10×1]−3 /10
[−1/8×12/ 7−1 /4×8 / 21+0×(−104 /105 )]+[0]+1/2)=(
12 /78 /21
−104 / 1054 /21
)=(1,7142850,380952
−0,9904760,190476
)x⃗2=(
[0 ]+[−3 /7×8/21+0×(−104 /105)+1/7×4 /21]+8/7[2 /9×148 /147 ]+[−2/9×(−104 /105)+0×4 /21 ]+0
[−3 /10×148 /147−1 /5×2936 /6615]+[−1/10×4 /21 ]−3/10[−1/8×148 /147−1/4×2936 /6615+0×(−46957 / 66150)]+[0 ]+1/2
)=(148 / 147
2936 / 6615−46957 /66150
1741 /6615)=(
1,0068020,443839
−0,7098560,263189
)
Métodos Iterativos – Outro exemplo
Avaliemos a evolução dos vetores obtidos
x⃗2− x⃗1=(1,0068020,443839
−0,7098560,263189
)−(1,7142850,380952
−0,9904760,190476
)≈(−0,707483
0,0628870,280620,072713
)⇒‖x⃗2− x⃗1‖max≈0,707483
‖x⃗1‖max=1,714285⇒
‖x⃗2− x⃗1‖max
‖x⃗1‖max
≈0,4126
Métodos Iterativos – Outro exemplo
Continuando...
x⃗ i+1=(0 0 0 0
2/9 0 0 0−3/10 −1/5 0 0−1/8 −1/4 0 0
) x⃗ i+1+(0 −3 /7 0 1/70 0 −2/9 00 0 0 −1/100 0 0 0
) x⃗ i+(8/70
−3/101/2
); x⃗2=(1,0068020,443839
−0,7098560,263189
)
x⃗3=([0 ]+[−3 /7×(1,006802)+0×(−0,709856 )+1/7×0,263189 ]+8 /7
[2 /9×0,990238 ]+[−2/9×(−0,709856)+0×0,263189 ]+0[−3 /10×0,990238−1/5×0,377798 ]+[−1/10×0,263189 ]−3 /10[−1/8×0,990238−1/ 4×0,377798+0×(−0,698949)]+[0 ]+1 /2
)=(0,9902380,377798
−0,6989490,281770
)
Métodos Iterativos – Outro exemplo
Continuando...
x⃗ i+1=(0 0 0 0
2/9 0 0 0−3/10 −1/5 0 0−1/8 −1/4 0 0
) x⃗ i+1+(0 −3 /7 0 1/70 0 −2/9 00 0 0 −1/100 0 0 0
) x⃗ i+(8/70
−3/101/2
); x⃗2=(1,0068020,443839
−0,7098560,263189
)
x⃗3=([0 ]+[−3 /7×(1,006802)+0×(−0,709856 )+1/7×0,263189 ]+8 /7
[2 /9×0,990238 ]+[−2/9×(−0,709856)+0×0,263189 ]+0[−3 /10×0,990238−1/5×0,377798 ]+[−1/10×0,263189 ]−3 /10[−1/8×0,990238−1/ 4×0,377798+0×(−0,698949)]+[0 ]+1 /2
)=(0,9902380,377798
−0,6989490,281770
)x⃗3− x⃗2=(
0,9902380,377798
−0,6989490,281770
)−(1,0068020,443839
−0,7098560,263189
)≈(−0,016564−0,0660410,0109070,018581
)⇒‖x⃗3− x⃗2‖max≈0,06604
‖x⃗2‖max=1,006802 ⇒‖x⃗3− x⃗2‖max
‖x⃗2‖max
≈0,06559
Métodos Iterativos – Outro exemplo
E continuando...
x⃗ i+1=(0 0 0 0
2/9 0 0 0−3/10 −1/5 0 0−1/8 −1/4 0 0
) x⃗ i+1+(0 −3 /7 0 1 /70 0 −2/9 00 0 0 −1 /100 0 0 0
) x⃗ i+(8 /7
0−3 /10
1/2); x⃗3=(
0,9902380,377798
−0,6989490,281770
)
x⃗4=([0]+[−3 /7×0,377798+0×(−0,698949 )+1 /7×0,281770 ]+8/7
[2 /9×1,021196 ]+[−2/9×(−0,698949 )+0×0,281770 ]+0[−3/10×1,021196−1/5×0,382254 ]+[−1/10×0,281770 ]−3/10[−1 /8×1,021196−1/4×0,382254+0×(−0,710986 )]+[0]+1/2
)=(1,0211960,382254
−0,7109860,276787
)
Métodos Iterativos – Outro exemplo
E continuando...
x⃗ i+1=(0 0 0 0
2/9 0 0 0−3/10 −1/5 0 0−1/8 −1/4 0 0
) x⃗ i+1+(0 −3 /7 0 1 /70 0 −2/9 00 0 0 −1 /100 0 0 0
) x⃗ i+(8 /7
0−3 /10
1/2); x⃗3=(
0,9902380,377798
−0,6989490,281770
)
x⃗4=([0]+[−3 /7×0,377798+0×(−0,698949 )+1 /7×0,281770 ]+8/7
[2 /9×1,021196 ]+[−2/9×(−0,698949 )+0×0,281770 ]+0[−3/10×1,021196−1/5×0,382254 ]+[−1/10×0,281770 ]−3/10[−1 /8×1,021196−1/4×0,382254+0×(−0,710986 )]+[0]+1/2
)=(1,0211960,382254
−0,7109860,276787
)x⃗4−x⃗3=(
1,0211960,382254
−0,7109860,276787
)−(0,9902380,377798
−0,6989490,281770
)≈(0,0309580,004456
−0,012037−0,004983
)⇒‖x⃗4− x⃗3‖max≈0,030958
‖x⃗3‖max=0,990238⇒‖x⃗4− x⃗3‖max
‖x⃗3‖max
≈0,0312
Métodos Iterativos – Outro exemplo
E mais ainda...
x⃗ i+1=(0 0 0 0
2/9 0 0 0−3/10 −1/5 0 0−1/8 −1/4 0 0
) x⃗ i+1+(0 −3 /7 0 1/70 0 −2/9 00 0 0 −1/100 0 0 0
) x⃗ i+(8/70
−3/101/2
); x⃗4=(1,0211960,382254
−0,7109860,276787
)
x⃗5=([0]+[−3/7×0,382254 +0×(−0,710986 )+1 /7×0,276787 ]+8/7
[2 /9×1,018575 ]+[−2 /9×(−0,710986 )+0×0,276787 ]+0[−3 /10×1,018575−1 /5×0,384346 ]+[−1/10×0,276787 ]−3/10[−1/8×1,018575−1/4×0,384346+0×(−0,710120 )]+[0]+1/2
)=(1,0185750,384346
−0,7101200,276591
)
Métodos Iterativos – Outro exemplo
E mais ainda...
x⃗ i+1=(0 0 0 0
2/9 0 0 0−3/10 −1/5 0 0−1/8 −1/4 0 0
) x⃗ i+1+(0 −3 /7 0 1/70 0 −2/9 00 0 0 −1/100 0 0 0
) x⃗ i+(8/70
−3/101/2
); x⃗4=(1,0211960,382254
−0,7109860,276787
)
x⃗5=([0]+[−3/7×0,382254 +0×(−0,710986 )+1 /7×0,276787 ]+8/7
[2 /9×1,018575 ]+[−2 /9×(−0,710986 )+0×0,276787 ]+0[−3 /10×1,018575−1 /5×0,384346 ]+[−1/10×0,276787 ]−3/10[−1/8×1,018575−1/4×0,384346+0×(−0,710120 )]+[0]+1/2
)=(1,0185750,384346
−0,7101200,276591
)x⃗5− x⃗4=(
1,0185750,384346
−0,7101200,276591
)−(1,0211960,382254
−0,7109860,276787
)≈(0,0026210,0020920,000866
−0,000196)⇒‖x⃗5− x⃗4‖max≈0,00262
‖x⃗4‖max=1,021196 ⇒‖x⃗5− x⃗4‖max
‖x⃗4‖max
≈0,00256