74
Introdução aos Métodos Numéricos Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho

Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Introdução aos Métodos Numéricos

Instituto de Computação UFFDepartamento de Ciência da Computação

Otton Teixeira da Silveira Filho

Page 2: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Conteúdo específico

● Sistemas de Equações Lineares. Métodos Iterativos

Page 3: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Conteúdo temático

● Método de Gauss-Seidel

Page 4: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel

Método de Gauss-Seidel

Partiremos novamente do sistema original usando a decomposição aditiva que apresentamos, ou seja,

e reescrevendo como

A x⃗=b⃗⇒ ( D+M+N ) x⃗=b⃗

( D+N ) x⃗=−M x⃗+b⃗

Page 5: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel

Suporemos que a matriz associada ao sistema está arrumada de tal forma que a matriz D + N tenha inversa. Então podemos escrever

A matriz é denominada Matriz de Gauss-Seidel

x⃗=−( D+N )−1 M x⃗+( D+N )

−1 b⃗

−( D+N )−1 M

Page 6: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel

Podemos escrever este método como

mas não o faremos pois há uma maneira mais interessante de escrevê-lo.

x⃗ i+1=−( D+N )−1 M x⃗ i+ ( D+N )

−1 b⃗

Page 7: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel

Podemos escrever este método como

mas não o faremos pois há uma maneira mais interessante de escrevê-lo.

Retornemos uma pouco...

x⃗ i+1=−( D+N )−1 M x⃗ i+ ( D+N )

−1 b⃗

Page 8: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel

Partiremos novamente do sistema original usando a decomposição aditiva que apresentamos, ou seja,

e reescrevendo:

A x⃗=b⃗⇒ ( D+M+N ) x⃗=b⃗

( D+N ) x⃗=−M x⃗+b⃗

Page 9: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel

Aplicaremos a fórmula iterativa diretamente aqui, ou seja,

e daí ( D+N ) x⃗i+1=−M x⃗ i+b⃗

D x⃗ i+1=−N x⃗ i+1−M x⃗i+ b⃗

Page 10: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel

Supondo novamente existir uma ordenação do sistema tal que D tenha inversa, teremos

que descreve a iteração que define o Gauss-Seidel

x⃗ i+1=−D−1 N x⃗ i+1−D−1 M x⃗i+D−1 b⃗

Page 11: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel

Gauss-Seidel

dado . x⃗0

x⃗ i+1=−D−1 N x⃗ i+1−D−1 M x⃗i+D−1 b⃗

Page 12: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Métodos iterativos

Compare as fórmulas de

Gauss-Jacobi

Gauss-Seidel

Observe que a matriz e o vetor operadores são “os mesmos“ mas usados de forma diferente

x⃗ i+1=−D−1 N x⃗ i+1−D−1 M x⃗i+D−1 b⃗

x⃗ i+1=−D−1 ( M+N ) x⃗ i+D−1 b⃗

Page 13: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Métodos iterativos

Assim, podemos usar o mesmo algoritmo de construção de montagem mas dividindo a matriz resultante em sua parte triangular estritamente superior e estritamente inferior

Page 14: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel

Vamos ao pseudocódigo de Gauss-Seidel

Page 15: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel

“Arrumação“ da matriz

para i←1até ndiag←aii

para j ←1até naij←−aij /diag

bi←bi /diagaii←0

Page 16: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel

Laço de repetição do Método de Gauss-Seidel

para k←1até niteracoespara i ←1até n

s←0para j ←1até n

s← s+aij x j

x i←s+bi

Page 17: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel

Laço de repetição do Método de Gauss-Seidel

Observe que não temos a necessidade de um vetor auxiliar

para k←1até niteracoespara i ←1até n

s←0para j ←1até n

s← s+aij x j

x i←s+bi

Page 18: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel

No cálculo manual usaremos um esquema mais “humano“

É apenas um esquema, nem o melhor, nem o pior

Page 19: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Partiremos para a construção do método

(8 1 0 −11 9 1 0

−1 2 10 00 1 1 12

) x⃗=(13/2−8−35

)

Page 20: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Dividamos todo o sistema pelos valores da diagonal

(8/8 1 /8 0 /8 −1 /81/9 9 /9 1/9 0/9

−1 /10 2/10 10 /10 0 /100 /12 1/12 1/12 12/12

) ; ((13 /2)/8−8 /9−3 /10

5 /12)

Page 21: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Zere a diagonal da matriz

(0 1 /8 0 −1/8

1/9 0 1/9 0−1 /10 1 /5 0 0

0 1 /12 1 /12 0) ; (

13 /16−8 /9−3 /10

5/12)

Page 22: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Troque o sinal dos valores da matriz

(0 −1/8 0 1/8

−1 /9 0 −1/9 01/10 −1 /5 0 00 −1 /12 −1 /12 0

) ; (13 /16−8 /9−3 /10

5 /12)

Page 23: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Método de Gauss-Seidel

x⃗i+1=(0 0 0 0

−1 /9 0 0 01/10 −1 /5 0 0

0 −1/12 −1/12 0) x⃗i+1+(

0 −1/8 0 1/80 0 −1/9 00 0 0 00 0 0 0

) x⃗i+(13 /16−8/9−3 /10

5 /12)

x⃗ i+1=−D−1 N x⃗ i+1−D−1 M x⃗i+D−1 b⃗

Page 24: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Usaremos o mesmo vetor que usamos no exemplo de Gauss-Jacobi, mesmo sabendo que é bem ruim como inicialização

x⃗0= (14

−35

)

Page 25: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Usaremos o mesmo vetor que usamos no exemplo de Gauss-Jacobi, mesmo sabendo que é bem ruim como inicialização

Para facilitar a compreenção, trabalharemos a passos de tartaruga calculando uma componente por vez

x⃗0= (14

−35

)

Page 26: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

ATENÇÃO!

Como é uma “versão em passos de tartaruga“ não é a que se usará em exercícios ou na prova nem é usado num cálculo real

É apenas usada para compreender alguns passos do algoritmo

Page 27: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Ao multiplicarmos a primeira linha da primeira matriz multiplicarmos a primeira matriz pelo vetor teremos um valor nulo e a segunda matriz por se faz diretamente

x⃗1=(0 0 0 0

−1 /9 0 0 01/10 −1 /5 0 0

0 −1/12 −1/12 0) x⃗1+(

0 −1/8 0 1/80 0 −1/9 00 0 0 00 0 0 0

) x⃗0+(13 /16−8 /9−3 /10

5/12)

x⃗1

x⃗0

x⃗0=(14

−35

)

Page 28: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Ao multiplicarmos a primeira linha da primeira matriz multiplicarmos a primeira matriz pelo vetor teremos um valor nulo e a segunda matriz por se faz diretamente

Deixando um pouco mais claro...

x⃗1=(0 0 0 0

−1 /9 0 0 01/10 −1 /5 0 0

0 −1/12 −1/12 0) x⃗1+(

0 −1/8 0 1/80 0 −1/9 00 0 0 00 0 0 0

) x⃗0+(13 /16−8 /9−3 /10

5/12)

x⃗1

x⃗0

x⃗0=(14

−35

)

Page 29: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

x⃗1=(0 0 0 0

−1 /9 0 0 01/10 −1 /5 0 0

0 −1/12 −1/12 0) x⃗1+(

0 −1/8 0 1/80 0 −1/9 00 0 0 00 0 0 0

) x⃗0+(13 /16−8/9−3 /105/12

)x⃗1=(

[0]+[−1/8×4+0×(−3)+1 /8×5]+13/16...

)=(15 /16

.

.

.)=(

0,9375...

)

x⃗0=(14

−35

)

Page 30: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

O primeiro par de colchetes indica o valor resultante do cálculo da primeira linha da primeira matriz pelo vetor x⃗1

Page 31: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

O primeiro par de colchetes indica o valor resultante do cálculo da primeira linha da primeira matriz pelo vetor

Claro que este cálculo sempre dará zero em todas as iterações

x⃗1

Page 32: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

O primeiro par de colchetes indica o valor resultante do cálculo da primeira linha da primeira matriz pelo vetor

Claro que este cálculo sempre dará zero em todas as iterações

O segundo colchete indica os cálculos para a segunda matriz

x⃗1

Page 33: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

O resultado deste cálculo nos dá a primeira componente de que marcaremos em negrito

Então podemos escrever

x⃗1

Page 34: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

x⃗1=(0 0 0 0

−1 /9 0 0 01/10 −1 /5 0 0

0 −1/12 −1/12 0) x⃗1+(

0 −1/8 0 1/80 0 −1/9 00 0 0 00 0 0 0

) x⃗0+(13 /16−8/9−3 /105/12

)x⃗1=(

[0]+[−1 /8×4+0×(−3)+1/8×5]+13 /16[−1/9×15 /16 ]+[−1/9×(−3)+0×5]−8 /9

.

.)=(

15 /16−95 /144

.

.)=(

0,9375−0,659722

.

.)

x⃗0=(14

−35

)

Page 35: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Métodos iterativos

Temos agora a primeira e a segunda componentes de

Da mesma forma que escreveremos antes

x⃗1

Page 36: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

x⃗1=(0 0 0 0

−1 /9 0 0 01/10 −1 /5 0 0

0 −1/12 −1/12 0) x⃗1+(

0 −1/8 0 1/80 0 −1/9 00 0 0 00 0 0 0

) x⃗0+(13 /16−8/9−3 /105/12

)x⃗1=(

[0]+[−1/8×4+0×(−3)+1/8×5 ]+13 /16[−1 /9×15 /16 ]+[−1/9×(−3)+0×5 ]−8 /9

[1 /10×15 /16−1/5×(−95 /144)]+[0×5 ]−3 /10.

)=(15 /16

−95 /144−107 /1440

.)=(

0,9375−0,6597 22−0,07430 55

.)

x⃗0=(14

−35

)

Page 37: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

x⃗1=(0 0 0 0

−1 /9 0 0 01/10 −1 /5 0 0

0 −1/12 −1/12 0) x⃗1+(

0 −1/8 0 1/80 0 −1/9 00 0 0 00 0 0 0

) x⃗0+(13 /16−8/9−3 /105/12

)x⃗1=(

[0 ]+[−1 /8×4+0×(−3)+1 /8×5 ]+13 /16[−1 /9×15 /16 ]+[−1 /9×(−3)+0×5 ]−8 /9

[1/10×15 /16−1 /5×(−95 /144)]+[0×5 ]−3 /10[0×15 /16−1 /12×(−95 /144)−1 /12×(−107 /1440)]+[0 ]+5 /12

)=(15 /16

−95 /144−107 /14408257 /17280

)=(0,9375

−0,6597 22−0,0743055

0,477835)

x⃗0=(14

−35

)

Page 38: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Sim, concordo, exagerei nas frações...

Page 39: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Repare que você pode compreender este algoritmo como algo da forma

“se eu tenho (uma componente nova) eu uso“

Page 40: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Façamos o próximo passo

Page 41: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

x⃗2=(0 0 0 0

−1 /9 0 0 01 /10 −1 /5 0 0

0 −1/12 −1 /12 0) x⃗2+(

0 −1 /8 0 1 /80 0 −1 /9 00 0 0 00 0 0 0

) x⃗1+ (13 /16−8 /9−3 /105 /12

)x⃗2=(

[0]+[−1/8×(−95 /144)+0×(−0,07430 22)+1 /8×0,477835 ]+13 /16...

)=(0,954694

.

.

.)

x⃗1=(15 /16

−95 /144−0,07430 22

0,477835)

Page 42: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

x⃗2=(0 0 0 0

−1 /9 0 0 01 /10 −1 /5 0 0

0 −1/12 −1 /12 0) x⃗2+(

0 −1 /8 0 1 /80 0 −1 /9 00 0 0 00 0 0 0

) x⃗1+ (13 /16−8 /9−3 /105 /12

)x⃗2=(

[0 ]+[−1 /8×(−95 /144)+0×(−0,07430 22)+1 /8×0,477835 ]+13/16[−1 /9×0,954694 ]+[−1/9×(−0,074305)+0×0,477835 ]−8 /9

.

.)=(

0,954694−0,986709

.

.)

x⃗1=(15 /16

−95 /144−0,07430 22

0,477835)

Page 43: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

x⃗2=(0 0 0 0

−1 /9 0 0 01 /10 −1 /5 0 0

0 −1/12 −1 /12 0) x⃗2+(

0 −1 /8 0 1 /80 0 −1 /9 00 0 0 00 0 0 0

) x⃗1+ (13 /16−8 /9−3 /105 /12

)x⃗2=(

[0 ]+[−1 /8×(−95 /144)+0×(−0,07430 22)+1 /8×0,477835 ]+13 /16[−1 /9×0,954694 ]+[−1/9×(−0,074305)+0×0,477835 ]−8 /9[1 /10×0,954694−1/5×(−0,986709)+0×0,477835−3 /10 ]

.)=(

0,954694−0,986709−0,007188

.)

x⃗1=(15 /16

−95 /144−0,07430 22

0,477835)

Page 44: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

x⃗2=(0 0 0 0

−1 /9 0 0 01 /10 −1 /5 0 0

0 −1/12 −1 /12 0) x⃗2+(

0 −1 /8 0 1 /80 0 −1 /9 00 0 0 00 0 0 0

) x⃗1+ (13 /16−8 /9−3 /105 /12

)x⃗2=(

[0 ]+[−1 /8×(−95 /144)+0×(−0,07430 22)+1 /8×0,477835 ]+13 /16[−1 /9×0,954694 ]+[−1/9×(−0,074305)+0×0,477835 ]−8 /9[1 /10×0,954694−1 /5×(−0,986709)+0×0,477835 ]−3 /10

[0×0,954694−1 /12×(−0,986709)−1 /12×(−0,007188)]+[0 ]+5 /12)=(

0,954694−0,986709−0,0071880,499491

)

x⃗1=(15 /16

−95 /144−0,07430 22

0,477835)

Page 45: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Avaliemos a evolução dos vetores obtidos

x⃗2− x⃗1=(0,954694

−0,986709 22−0,0071880,499491

)−(0,9375

−0,6597 22−0,0743050,477835

)≈(0,017194−0,21520,0671170,021656

)⇒‖x⃗2− x⃗1‖max≈0,2152

‖x⃗1‖max=0,9375⇒

‖x⃗2− x⃗1‖max

‖x⃗1‖max

≈0,2295

Page 46: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Observe que o valor obtido aqui é bem menor que no mesmo passo de aplicação de Gauss-Jacobi

Page 47: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Façamos mais um passo do método de Gauss-Seidel

Page 48: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

x⃗3=(0 0 0 0

−1 /9 0 0 01 /10 −1 /5 0 0

0 −1/12 −1 /12 0) x⃗3+(

0 −1 /8 0 1 /80 0 −1 /9 00 0 0 00 0 0 0

) x⃗2+(13 /16−8/9−3 /105 /12

)x⃗3=(

[0 ]+[−1 /8×(−0,954694)+0×(−0,007188)+1/8×0,499491 ]+13 /16...

)=(0,998275

.

.

.)

x⃗2=(0,954694

−0,986709−0,0071880,499491

)

Page 49: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

x⃗3=(0 0 0 0

−1 /9 0 0 01 /10 −1 /5 0 0

0 −1/12 −1 /12 0) x⃗3+(

0 −1 /8 0 1 /80 0 −1 /9 00 0 0 00 0 0 0

) x⃗2+(13 /16−8/9−3 /105 /12

)x⃗3=(

[0 ]+[−1 /8×(−0,954694)+0×(−0,007188)+1/8×0,499491 ]+13 /16[−1/9×0,998275 ]+[−1/9×(−0,007188)+0×0,499491]−8 /9

.

.)=(

0,998275−0,999009

.

.)

x⃗2=(0,954694

−0,986709−0,0071880,499491

)

Page 50: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

x⃗3=(0 0 0 0

−1 /9 0 0 01 /10 −1 /5 0 0

0 −1/12 −1 /12 0) x⃗3+(

0 −1 /8 0 1 /80 0 −1 /9 00 0 0 00 0 0 0

) x⃗2+(13 /16−8/9−3 /105 /12

)x⃗3=(

[0 ]+[−1 /8×(−0,954694)+0×(−0,007188)+1/8×0,499491 ]+13 /16[−1/9×0,998275 ]+[−1/9×(−0,007188)+0×0,499491]−8 /9[1 /10×0,998275−1/5×(−0,999009)+0×0,499491]−3 /10

.)=(

0,998275−0,999009−0,000370

.)

x⃗2=(0,954694

−0,986709−0,0071880,499491

)

Page 51: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

x⃗3=(0 0 0 0

−1 /9 0 0 01 /10 −1 /5 0 0

0 −1/12 −1 /12 0) x⃗3+(

0 −1 /8 0 1 /80 0 −1 /9 00 0 0 00 0 0 0

) x⃗2+(13 /16−8/9−3 /105 /12

)x⃗3=(

[0 ]+[−1 /8×(−0,954694)+0×(−0,007188)+1 /8×0,499491]+13 /16[−1 /9×0,998275 ]+[−1/9×(−0,007188)+0×0,499491]−8 /9[1/10×0,998275−1/5×(−0,999009)+0×0,499491 ]−3 /10

[0×0,998275−1/12×(−0,999009)−1 /12×(−0,000370)]+[0 ]+5 /12)=(

0,998275−0,999009−0,0003700,499948

)

x⃗2=(0,954694

−0,986709−0,0071880,499491

)

Page 52: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Avaliemos a evolução dos vetores

x⃗3− x⃗2=(0,998275

−0,999009−0,0003700,499948

)−(0,954694

−0,986709−0,0071880,499491

)≈ (0,0435

−0,01230,0068

0,000457)⇒‖x⃗3− x⃗2‖max≈0,0435

‖x⃗2‖max=0,986709⇒

‖x⃗3− x⃗2‖max

‖x⃗2‖max

≈0,0440

Page 53: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Novamente observe que o valor obtido aqui é bem menor que no mesmo passo de aplicação de Gauss-Jacobi

Page 54: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Vamos a mais uma iteração sem passo de tartaruga

Page 55: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

x⃗ 4=([0 ]+[−1/8×(−0,999009)+0×(−0,000370)+1 /8×0,499948 ]+13 /16

[−1 /9×0,999869 ]+[−1 /9×(−0,000370)+0×0,499948 ]−8 /9[1 /10×0,999869−1 /5×(−0,999944)+0×0,499948 ]−3 /10

[0×0,999869−1 /12×(−0,999944)−1/12×(−0,000024)]+[0]+5 /12)=(

0,999869−0,999944−0,0000240,4999973

)

x⃗3=(0,998275

−0,999009−0,0003700,499948

)x⃗ 4=(

0 0 0 0−1 /9 0 0 01/10 −1 /5 0 0

0 −1 /12 −1 /12 0) x⃗ 4+(

0 −1 /8 0 1 /80 0 −1/9 00 0 0 00 0 0 0

) x⃗3+ (13 /16−8 /9−3 /105 /12

)

Page 56: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Avaliemos a evolução dos vetores

x⃗4− x⃗3=(0,999869

−0,999944−0,0000240,4999973

)−(0,998275

−0,999009−0,0003700,499948

)≈ (0,0015

−0,0004−0,00030,00004

)⇒‖x⃗4− x⃗3‖max≈0,0015

‖x⃗3‖max≈0,999009⇒

‖x⃗ 4− x⃗3‖max

‖x⃗3‖max

≈0,0015

Page 57: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

A solução exata do sistema é

e observem a sequência de vetores

x⃗=(1

−10

1/2)

x⃗1=(0,9375

−0,6597 22−0,0743050,477835

) ; x⃗2=(0,954694

−0,986709−0,0071880,499491

) ; x⃗3= (0,998275

−0,999009−0,0003700,499948

) ; x⃗4= (0,999869

−0,999944−0,0000240,4999973

)

Page 58: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

e os valores da avaliação se aproximam de zero mais rapidamente

‖x⃗2− x⃗1‖max

‖x⃗1‖max

≈0,2295 ;‖x⃗3− x⃗2‖max

‖x⃗2‖max

≈0,0440 ;‖x⃗4− x⃗3‖max

‖x⃗3‖max

≈0,0015

Page 59: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Repare que cada componente de cada não pode ser calculada independentemente uma das outras como em Gauss-Jacobi portanto,

o algoritmo de Gauss-Seidel não é facilmente paralelizável.

Isto gera implicações que devem ser levadas em consideração quando da construção de códigos eficientes.

x i+1

Page 60: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Métodos iterativos

Em todos os exercícios até agora feito o custo computacional execedeu o custo computacional usando, por exemplo, fatoração LU

Porque então usar estes métodos iterativos?

Page 61: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Métodos iterativos

Um motivo já foi dito:

● Estes métodos são, quando convergem, numericamente estáveis

Outro motivo:

● Existem sistemas de interesse (em geral de ordem grande) que tem efetivamente custo computacional menor quando usados com métodos iterativos

Page 62: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Um Exemplo

Mais um exercício sem ser em passo de tartaruga...

Page 63: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Outro exemplo

Aplique no sistema abaixo o método de Gauss-Seidel até o critério de parada for menor que 0,01.

Temos a informação que a solução é próxima do vetor

(6 2 31 −4 21 2 4 ) x⃗=(

457 )

(002 )

Page 64: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Outro exemplo

Construindo a matriz e o vetor para Gauss-Seidel...

...e montando a fórmula

(6 2 31 −4 21 2 4 ) ; (

457 )⇒ (

0 2 /6 3/61 /−4 0 2 /−41 /4 2 /4 0 ) ; (

4 /65/−47 /4 )⇒ (

0 −1/3 −1/21/4 0 1/2

−1/4 −1/2 0 ) ; (2/3

−5/47 /4 )

x⃗i+1=(0 0 0

1 /4 0 0−1 /4 −1 /2 0 ) x⃗i+1+ (

0 −1/3 −1 /20 0 1 /20 0 0 ) x⃗i+ (

2 /3−5 /47 /4 )

Page 65: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Outro exemplo

Tendo

x⃗ i+1=(0 0 0

1/4 0 0−1 /4 −1/2 0 ) x⃗ i+1+(

0 −1 /3 −1 /20 0 1 /20 0 0 ) x⃗ i+ (

2/3−5 /47 /4 )

x0=(002 )

x⃗1=([0]+[−1 /3×0−1/2×2]+2/3[1/4×(−1 /3)]+[1/2×2]−5 /4

[−1/4×(−1 /3)−1/2×(−1 /3)]+[0 ]+7 /4 )=(−1/3−1/3

2 )=(−0, 33−0, 33

2 )

Page 66: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Outro exemplo

Qual o significado das primeiras componentes darem iguais e a última repetir o chute?

Page 67: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Outro exemplo

Qual o significado das primeiras componentes darem iguais e a última repetir o chute?

Nenhum...

Page 68: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Outro exemplo

Tendo

x⃗ i+1=(0 0 0

1/4 0 0−1 /4 −1/2 0 ) x⃗ i+1+(

0 −1 /3 −1 /20 0 1 /20 0 0 ) x⃗ i+ (

2/3−5 /47 /4 )

x1=(−1 /3−1 /3

2 )

x⃗2=([0]+[−1/3×(−1 /3)−1/2×(2)]+2/3

[1/4×(−2 /9)]+[1 /2×2]−5/4[−1 /4×(−2/9)−1/2×(−11/36)]+[0 ]+7 /4 )=(

−2 /9−11/3647 /24 )=(

−0,22−0,30 551,958 33 )

Page 69: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Outro exemplo

Avaliemos a evolução dos vetores

x⃗2− x⃗1=(−0, 22

−0,30 551,958 33 )−(

−0, 33−0, 33

2 )≈(0,11

0,0277−0,04166 )⇒‖x⃗2− x⃗1‖max≈0,1111

‖x⃗1‖max=2⇒

‖x⃗2− x⃗1‖max

‖x⃗1‖max

≈0,0555

Page 70: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Outro exemplo

Tendo

x⃗ i+1=(0 0 0

1/4 0 0−1 /4 −1/2 0 ) x⃗ i+1+(

0 −1 /3 −1 /20 0 1 /20 0 0 ) x⃗ i+ (

2/3−5 /47 /4 )

x2=(−2 /9

−11/3647 /24 )

x⃗3=([0 ]+[−1 /3×(−11 /36)−1/2×47 /24 ]+2 /3[1/4×(−91 /432)]+[1/2×47 /24 ]−5 /4

[−1 /4×(−91 /432)−1/2×(−559 /1728)]+[0]+7 /4 )=(−91/432

−559/17282263/1152 )≈ (

−0,210648−0,3234951,964409 )

Page 71: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Outro exemplo

Avaliemos a evolução dos vetores

x⃗3− x⃗2=(

−0,210648−0,3234951,964409 )−(

−0, 22−0,30 551,958 33 )≈ (

0,011574−0,0179390,006075 )⇒‖x⃗3− x⃗2‖max≈0,0179

‖x⃗2‖max=1,958333⇒

‖x⃗3− x⃗2‖max

‖x⃗2‖max

≈0,0091

Page 72: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Outro exemplo

Já atingimos o solicitado mas vamos a mais um passo só para treinar...

Page 73: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Outro exemplo

Tendo

x⃗ x+1=(0 0 0

1 /4 0 0−1 /4 −1 /2 0 ) x⃗ i+1+(

0 −1 /3 −1 /20 0 1 /20 0 0 ) x⃗i+(

2 /3−5 /47 /4 )

x⃗3=(−0,210648−0,3234951,964409 )

x⃗4=([0]+[−1/3×(−0,323495)−1 /2×1,964409 ]+2 /3

[1/4×(−0,207706)]+[1 /2×1,964409 ]−5 /4[−1/4×(−0,207706)−1/2×(−0,319721)]+[0 ]+7 /4 )≈(

−0,207706−0,3197211,961787 )

Page 74: Introdução aos Métodos Numéricos - Início - Instituto de ...otton/graduacao/introducaonumericos/...Gauss-Seidel Método de Gauss-Seidel Partiremos novamente do sistema original

Gauss-Seidel – Outro exemplo

Avaliemos a evolução dos vetores

x⃗4− x⃗3=(−0,207706−0,3197211,961787 )−(

−0,210648−0,3234951,964409 )≈(

0,0029420,003774

−0,002622 )⇒‖x⃗4− x⃗3‖max≈0,0037

‖x⃗3‖max=1,964409⇒

‖x⃗4− x⃗3‖max

‖x⃗3‖max

≈0,0018