Sistemas lineares - métodos iteratiivos

Sistemas lineares - métodos iteratiivos

Descrevemos os métodos de Gaus-Jacobi, Gaus-Seidel e de relaxação para obtenção de soluções para sistemas lineares.

4acc58a03aa964e2f04b538836f2d468?s=128

Paulo Bordoni

July 17, 2013
Tweet

Transcript

  1. Sistemas lineares, métodos iterativos e Scipy Prof. Paulo R. G.

    Bordoni UFRJ
  2. A teoria sobre os métodos iterativos básicos está explicada no

    §3 do cap. 3 do livro texto Cálculo Numérico, aspectos teóricos e computacionais, de Ruggiero e Lopes.
  3. Entretanto, tem apenas interesse didático! O método mais simples de

    todos é o de Gauss-Jacobi. Ele é uma extensão do método do ponto-fixo para sistemas lineares.
  4. = Um sistema linear pode ser escrito na forma matricial.

    Ou ode ser escrito equação por equação.
  5. Separando o termo x 1 da 1ª equação, o x

    2 da 2ª (e assim por diante) e isolando x 1 na 1ª, x 2 na 2ª (e assim por diante), obtemos:
  6. = 11 ⋯ 0 ⋮ ⋱ ⋮ 0 ⋯ #

    = − e Se D e A# são as matrizes acima, então as equações indicadas pela Mestra ficam: = −1( − #)
  7. +1 = −1( − #) para = 0, 1, 2,

    … , com 0 dado A partir dessa identidade vetorial criamos um método iterativo do tipo ponto-fixo para aproximar a solução x do sistema linear Ax = b. É o método de Gauss-Jacobi.
  8. = 1,2, … , +1 ← 1 . =1 ≠

    , para Na prática, trabalhamos com cada equação separadamente.
  9. Professor, faça um exemplo, por gentileza. Eu me atrapalho bastante

    com somatórios. 50 + 21 + 2 = −1 0 + 31 − 2 = 0 0 − 21 + 42 = 5 Ok Loirinha. Vamos resolver o sistema linear abaixo pelo método de Gauss-Jacobi.
  10. 50 = −1 − 21 − 2 31 = 0

    − 0 + 2 42 = 5 − 0 + 2 1 É tudo muito simples, começamos isolando x 0 na 1ª equação, x 1 na 2ª e x 2 na 3ª. 0 = 1 5 (−1 − 21 − 2 ) 1 = 1 3 (0 − 0 + 2 ) 2 = 1 4 (5 − 0 + 21 )
  11. 0 +1 = 1 5 (−1 − 21 − 2

    ) 1 +1 = 1 3 (0 − 0 + 2 ) 2 +1 = 1 4 (5 − 0 + 21 ) E as equações de iteração ficam:
  12. 0 ← 1 5 (−1 − 21 − 2 )

    1 ← 1 3 (0 − 0 + 2 ) 2 ← 1 4 (5 − 0 + 21 ) Computacionalmente, usamos um vetor y para guardar os novos valores do vetor x. Fazemos isso usando uma função vetorial que recebe o vetor x e devolve o vetor y.
  13. Sendo muito prático Professora mostre-nos como se programa tudo isso.

    É prá já, Surfista. Eu mesmo vou fazer!
  14. Nos três exemplos a seguir utilizamos um programa que define

    as equações de iteração e chama um dos programas desse módulo. Eu e a Professora criamos o módulo sis_lin_iter para guardar os métodos iterativos que usaremos.
  15. Este é o programa do módulo.

  16. Este é o programa chamador. Ele importa o gauss_jabobi e

    define as equações de iteração.
  17. Muito lento, 54 iterações para um sistema 3x3 As 4

    primeiras e as 4 últimas iterações.
  18. Como eu disse, Surfista, o método de Gauss-Jacobi tem apenas

    interesse didático. Eis o resultado final.
  19. Sim Professor. Ao calcular o novo valor da variável x

    k utilizamos todos os novos valores das variáveis x 0 , x 1 , ..., x k-1 . O método de Gauss-Seidel é uma modificação esperta do método de Gauss-Jacobi.
  20. Ele é praticamente igual ao método de Gauss-Jacobi. Só que,

    ao calcular o novo x 10 , por exemplo, usamos os valores de x 0 , x 1 , ... , x 9 , que acabamos de calcular!
  21. Não entendi! Vocês podem explicar melhor? 50 + 21 +

    2 = −1 0 + 31 − 2 = 0 0 − 21 + 42 = 5 Ok Loirinha. Vou mostrar como fica no mesmo sistema linear que usei para o Gauss-Jacobi
  22. 0 ← 1 5 (−1 − 21 − 2 )

    1 ← 1 3 (0 − 0 + 2 ) 2 ← 1 4 (5 − 0 + 21 ) Veja só como a ideia é simples:
  23. Compare esta linha de código com a mesma no método

    de Gauss-Jacobi.
  24. Compare esta iterEqs com a do método de Gauss-Jacobi.

  25. Melhorou bastante. Agora são 30 iterações. Novamente, as 4 primeiras

    e as 4 últimas iterações.
  26. Reduzimos em 44% (≅ 1-30/54) o número de iterações, apenas

    com a “modificação esperta”
  27. Sim Professor. Vou mostrar a ideia na próxima transparência. O

    método de Gauss-Seidel com fator de relaxação é uma modificação do próprio método de Gauss-Seidel.
  28. Na expressão acima, fator de ponderação é o ω (a

    letra grega ômega minúscula) Para calcular o novo xi usamos uma média ponderada entre os antigos.
  29. u v ω u + (1-ω) v A ideia da

    ponderação. Quando = 1 temos o próprio método de Gauss-Seidel. Quando 0 < < 1 falamos em sub-relaxação e quando > 1 falamos em sobre-relaxação.
  30. O fator de ponderação ω ótimo é calculado da forma

    abaixo.
  31. O método implementado.

  32. Continuação.

  33. Chamando o método.

  34. Novamente, as 4 primeiras e as 4 últimas iterações.

  35. Reduzimos ainda mais o número de iterações.

  36. Tchau, até a próxima aula!