Upgrade to Pro — share decks privately, control downloads, hide ads and more …

1ª prova de Cáclulo Numérico, corrigida

1ª prova de Cáclulo Numérico, corrigida

A prova e sua correção.

Paulo Bordoni

May 30, 2015
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. Esta 1º prova envolve apenas questões teóricas, conforme prometi. Ela

    deverá ser devolvida até às 08:00 de 3ª feira, 26/05 e poderá ser feita em duplas.
  2. 1. Todo o material envolvendo a resposta deverá ser colocado

    numa pasta nomeada Prova_CalcNum_Fulano_Cicrano e zipada. 2. A pasta deverá conter uma sub-pasta para cada questão. Em cada sub- pasta: 1. Os dados da questão. 2. A solução da questão em PDF, MANUSCRITA e ESCANEADA. 3. Na mensagem de encaminhamento da lista, o ASSUNTO deverá conter: Prova 1 – Calc.Num. 2015/1. 4. O TEXTO DA MENSAGEM de encaminhamento deverá conter o nome completo (Fulano e Cicrano), o DRE e o e-mail de você e seu parceiro. ATENÇÃO: A solução da prova deve ser encaminhada para o [email protected] Não vejo motivo para a exigência 2.2 !
  3. Sim Mestra, porquê entregar a resposta manuscrita e escaneada? Por

    dois motivos, minha filha: • Para dificultar o “corte e cola”. • Por que tua letra te identifica.
  4. A 1ª questão não poderia ser outra: Definir Cálculo Numérico.

    Justificar e comentar detalhadamente os aspectos envolvidos na definição. Acrescentem ao texto um resumo do artigo “The definition of numerical analysis” da autoria de Lloyd N. Trefethen. O artigo está no Site do Mestre, na aba Leituras adicionais.
  5. A 2ª questão explora a aritmética finita do IEEE 754,

    algoritmos e a matemática do contínuo. Ela envolve a definição de derivada de uma função : (, ) → ℝ: = lim ℎ→0 + ℎ − ℎ
  6. 1. Receber as expressões () e () que permitem calcular

    o valor em = de uma função f e da sua derivada Df. 2. Receber um valor real 0 < ℎ < 1 para gerar uma sequência ℎ = ℎ, = 1, …, tal que lim →∞ ℎ = 0 . 3. Definir a sequência de quocientes de Newton = ( + ℎ − ())/ℎ que aproximam , isto é, lim →∞ = () . 4. Receber um inteiro > 0 e calcular os valores ℎ , e , = 1, … , , sendo = − () . 5. Apresentar a tabela desses valores. O Mestre fez um programa para:
  7. 2 Nesta parte estão as entradas do programa: 1. A

    expressão () da função f. 2. A expressão () da derivada da função f. 3. O valor = onde calcular () e (). 4. O valor de h. 5. O número N de elementos das três sequências (ℎ ), ( ), ( ) .
  8. 3 Aqui gero as sequências (ℎ ), ( ), (

    ) e construo uma tabela para exibi-las.
  9. Este programa será executado quatro vezes para = , =

    1 e: 1. Precisão simples e ℎ = 1/2. 2. Precisão simples e ℎ = 1/10. 3. Precisão dupla e ℎ = 1/2. 4. Precisão dupla e ℎ = 1/10. Observe que cada execução corresponde a um algoritmo distinto.
  10. Nesta 1ª parte do programa definimos = e escolhemos =

    1. Ela se repete nos 4 algoritmos.
  11. As entradas do Algoritmo 1: • ℎ = 1/2, •

    float 32 nos cálculos, • = 30. Os resultados estão na transparência a seguir.
  12. Observe no Algoritmo 1 que: 1. Para = 1 até

    = 12, o valor de indica convergência, com 12 = 2.71850 … 0, e o erro decaindo até 12 = 0.000468, 2. Para = 12 até = 17 o valor de estaciona em = 2.71850 … 0, com o mesmo erro anterior, 3. Depois, para = 17 até = 26 o valor de cresce, até 26 = 16. , 4. De = 27 em diante o valor de é o mesmo, = 0.0 … 0 e = 2.718281 … = e . Questão 1: explicar detalhadamente tal comportamento.
  13. As entradas do 2º algoritmo: • ℎ = 1/10, •

    cálculos com float 32 • = 15. Os resultados estão na transparência a seguir.
  14. Observe no Algoritmo 2 que: 1. Para = 1 até

    = 5, o valor de indica convergência, com 5 = 2.7179 …, e o erro decaindo até 0.0003..., 2. Para = 6 e = 7 o erro aumenta: 6 = 0.1 e 7 = 0.3, 3. Depois, para = 8 em diante, = 0.0 … 0 e = 2.718281 … = e. Questão 2: comparar esses resultados com os do Algoritmo 1 e justificar as diferenças.
  15. As entradas do 3º algoritmo: • ℎ = 1/2, •

    cálculos com float 64, • = 30. Os resultados estão na transparência a seguir.
  16. Observe no Algoritmo 3 que: 1. Para = 1 até

    = 12, o valor de indica convergência, com 12 = 2.718951 …, e o erro decaindo até 12 = 0.0006700, de forma muito semelhante ao Algoritmo 1, 2. Para = 13 em diante, o valor de cresce cada vez mais e o valor do erro também. Questão 3: comparar esse comportamento com o do Algoritmo 1 e explicar as diferenças/semelhanças.
  17. As entradas do 4º algoritmo: • ℎ = 1/10, •

    float 64 nos cálculos, • = 15. Os resultados estão na transparência a seguir.
  18. • No algoritmo 4 o cancelamento catastrófico aparece de forma

    muito mais pronunciada (10−3 ↗ 107) pq. ℎ = 0.1 apresenta erro no 24 bit que se propagará. • Já no algoritmo 3 temos ℎ = 0.5 que possui representação exata, algo que reduzirá a propagação do erro Mestre, qual a diferença entre os algoritmos 3 e 4?
  19. Questão 4: comparar esses resultados com os do Algoritmo 2

    e explicar a grande discrepância de comportamento entre ambos. Observe no Algoritmo 4 que: 1. Para = 1 até = 4, o valor de indica convergência, com 4 = 2.7192, e o erro decaindo até 0.00096..., 2. Depois, para = 5 em diante, e o erro crescem de forma ilimitada.
  20. Espero respostas bem definidas baseadas na aritmética finita do IEEE

    754, nos números de condicionamento dos cálculos envolvidos e na estabilidade/instabilidade dos algoritmos envolvidos.
  21. 1. A entrada de dados (input): a. Nos algoritmos 1

    e 3, ℎ = 0.5. b. Nos algoritmos 2 e 4, ℎ = 0.1. 2. A discretização usada nos cálculos: a. Nos algoritmos 1 e 2, usamos 32. b. Nos algoritmos 3 e 4, usamos 64. Vamos dividir o problema em várias partes. Lembrem-se, um algoritmo é uma composição de funções elementares. Portanto 4 algoritmos distintos!
  22. Vamos começar analisando as potências 0.5 e 0.1, primeiramente em

    32. Mestra, já sabemos que 0.5 e suas potências inteiras são representadas exatamente na IEEE 754. Sabemos também que 0.1 não possui representação exata na IEEE 754.
  23. Claro Mestre, pois o passo h tende a zero com

    potências de 0.5 ou 0.1. Para visualizar os resultados da nossa análise de forma clara, faremos gráficos em escala mono-log ou log-log.
  24. Este programa calcula as o produto das potências 0.5 e

    2 para = 1, … 30 em 32. Se as potências forem representadas exatamente em 32 teremos = 1.0 − 0.5 ∗ 2 = 0.
  25. Este programa calcula as o produto das potências 0.1 e

    10 para = 1, … , 18 em 32. Se as potências 0.1 forem representadas exatamente em 32 teremos = 1.0 − 0.1 ∗ 10 = 0.
  26. Já para ℎ = 0.1 nenhuma das diferenças = 1.

    − 0.1 ∗ 10, = 1, … 15, se anula. Dito de outra forma, as potências 0.1 apresentam erro na 8ª ou 7ª casa decimal de sua representação 32 754.
  27. Para ℎ = 0.1, na representação 64 754 o erro

    se apresenta na 16ª ou 15ª casa decimal.
  28. Para ℎ = 0.5, na representação 32 754 a diferença

    + ℎ − () Passa a ser nula qdo. = 27.
  29. Para ℎ = 0.5, na representação 64 754 a diferença

    + ℎ − () ≠ 0 até para. = 50.
  30. Região de convergência do método ↘ 2.7192 e ↘ 0.001

    Região estacionária = 2.71875 e ≈ 0.005 Região onde domina o cancelamento catastrófico. Região onde h é tão pequeno que 1. +ℎ = 1.
  31. Região de convergência do método ↘ 2.7196 e ↘ 0.001

    Região onde h é tão pequeno que 1. +ℎ = 1. Região onde domina o cancelamento catastrófico.
  32. Região de convergência do método ↘ 2.7191 e ↘ 0.0008

    Região onde domina o cancelamento catastrófico.
  33. 2 É verdade, Loirinha, você estava atenta! Caso fosse float

    64 teríamos outros 2 algoritmos, com resultados diferentes. Veja a seguir: Mestre, você viu que no programa A está em float 32.
  34. Região de convergência do método ↘ 2.718281 … e ↘

    0.000000051 … Região estacionária = 2.71828186 … e ≈ 0.000000036 … Região onde domina o cancelamento catastrófico. passa a crescer.
  35. Região de convergência do método ↘ 2.718281 … e ↘

    0.0000000066 … Região onde domina o cancelamento catastrófico. passa a crescer.
  36. Qual foi a lição que você apreendeu aqui, Loirinha ?

    Que basta um valor em precisão diferente para obtermos resultados totalmente diferentes. Nos meus projetos de engenharia, terei que por tudo em float 64 para garantir resultados corretos!