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

Aproximação e interpolação

4acc58a03aa964e2f04b538836f2d468?s=47 Paulo Bordoni
December 04, 2013

Aproximação e interpolação

Começamos com a base canônica de Lagrange para o espaço das polinomiais de grau menor ou igual a N. Em seguida viajamos ao século XVI para as tábuas de funções trigonométricas e de logaritmos. Depois analisamos o conceito de supremo e definimos aproximação uniforme para o espaço das funções limitadas. Depois de do teorema de Weirstrass, passamos a usar o scipy.interpolate. Olhamos então para DDFs e para o algoritmo de Krogh. Seguindo Berrut e Trefethen recuperamos o prestígio da interpolação de Lagrange com a fórmula baricêntrica. Encerramos olhando para o fenômeno de Runge.

4acc58a03aa964e2f04b538836f2d468?s=128

Paulo Bordoni

December 04, 2013
Tweet

Transcript

  1. Aproximação e interpolação Prof. Paulo R. G. Bordoni UFRJ

  2. Na aula passada, estudamos as funções polinomiais.

  3. O pacote Polynomials utiliza a base canônica para construir polinomiais

  4. Uma forma alternativa é usar a “base de Lagrange” Em

    ℙ1[, ], que tem dimensão 2, as funções básicas de Lagrange serão nomeadas 0 () 1 () e são polinomiais de grau 1.
  5. A 0 () é a polinomial de grau 1 que

    satisfaz: 0 ( 0 ) = 1 0 ( 1 ) = 0. A 1 () por sua vez satisfaz: 1 ( 0 ) = 0 1 ( 1 ) = 1. É trivial confirmar que: 0 () = ( − 1 )/( 0 − 1 ), 1 () = ( − 0 )/( 1 – 0 ).
  6. 1 = (1 , 1 ) 0 = (0 ,

    0 ) p Com a base de Lagrange resolvemos o problema: “Construir uma reta que passa por dois pontos 0 = (0 , 0 ) e 1 = (1 , 1 ) dados, se 0 ≠ 1 ”. Sim, a solução é dada por: = 0 0 + 1 1 ().
  7. Confirmando: () é uma combinação linear das polinomiais básicas de

    Lagrange.
  8. Este é o programa que mostra 0 , 1 ,

    0 0 , 1 1 e a () = 0 0 () + 1 1 ()
  9. Bem, uma função polinomial de grau dois, responde tua pergunta.

    Isto se os pontos já não estiverem alinhados. Mestra, qual a função que passa por três pontos dados?
  10. Ele está certo, mas uma circunferência não é gráfico de

    uma função polinomial. Assim como uma hipérbole. O gráfico de uma polinomial de grau dois é uma parábola. Mas o professor de desenho geométrico disse que é a circunferência!
  11. Em ℙ2[, ], que tem dimensão três, as funções básicas

    (também) serão nomeadas 0 (), 1 () 2 (). Elas são polinomiais de grau 2. Elas são definidas pelas 9 condições: • 0 ( 0 ) = 1, 0 ( 1 ) = 0, 0 ( 2 ) = 0 • 1 ( 0 ) = 0, 1 ( 1 ) = 1, 1 ( 2 ) = 0 • 2 ( 2 ) = 0, 2 ( 1 ) = 0, 2 ( 2 ) = 1
  12. As expressões para as outras duas funções básicas são: 1

    = ( − 0 )( − 2 ) (1 − 0 )(1 − 2 ) 2 = ( − 0 )( − 1 ) (2 − 0 )(2 − 1 ) Confira que, definindo 0 () pela expressão 0 = ( − 1 )( − 2 ) (0 − 1 )(0 − 2 ) teremos 0 0 = 1, 0 1 = 0, 0 2 = 0
  13. Este programa gera as polinomiais da base de Lagrange do

    espaço das funções polinomiais de grau menor ou igual a 2.
  14. Para fazer 0 () passar pelo ponto = (0.3,1.4) basta

    multiplicá-la por 1.4. Vejam no desenho:
  15. O programa da transparência anterior.

  16. • Multiplicando 1 () por um número 1 , a

    função escalada 1 1 () passará pelo ponto ( 1 , 1 ); • Multiplicando 2 () por um número 2 , a função escalada 2 2 () passará pelo ponto ( 2 , 2 ). A mesma ideia se aplica às outras duas funções básicas:
  17. Este programa gera a polinomial de grau dois (≤ 2)

    que passa pelos pontos ( 0 , 0 ), ( 1 , 1 ), ( 2 , 2 ) utilizando a base de Lagrange do espaço das funções polinomiais de grau ≤ 2.
  18. Marquei em vermelho a parte que gera os gráficos das

    3 funções básicas escaladas e da polinomial.
  19. Esse é o resultado de uma execução do programa.

  20. Estas ideias tem sido usadas, a séculos, para aproximar funções

    por retas e por parábolas. Vou passear um pouco pela história.
  21. http://locomat.loria.fr Parte de uma página do “Canon mathematicus” de Viète

    (1579). Nela estão tabelados valores de senos, cossenos, tangentes, etc de 4º à 4º30’
  22. Rheticus foi aluno de Copérnico e o apoiou na divulgação

    do heliocentrismo. Em particular na publicação da obra maior de Copérnico: “De revolutionibus orbium coelestium”
  23. Um sextante, aparelho usado nas grandes navegações. Assim como o

    relógio e a corda com nós, para medir a velocidade de um barco.
  24. Hoje temos o GPS, que mostra nossa posição via satélite.

    Inclusive ajuda a navegar nas cidades.
  25. O sistema geocêntrico (Ptolomeu), a Igreja/Inquisição e o julgamento de

    Galileu Galilei. O heliocentrismo com Copérnico,
  26. O livro de Copérnico, sobre o heliocentrismo.

  27. Em 1614, no livro “Mirifici Logarithmorum Canonis Descriptio”, J. Napier

    descreve um método para calcular produtos em termos de somas. Nasciam os logaritmos. O livro apresenta ainda 90 páginas com tabelas para utilização do seu método
  28. Obtivemos essas informações no site do Gresham College. O texto

    a seguir, sobre Briggs, é parte da apresentação às minhas costas.
  29. A declaração de Briggs é emocionante!

  30. O livro que Briggs escreveu. Nos logaritmos de Napier, log(1)

    ≠ 0.
  31. Briggs foi um grande matemático. Foi o 1º Professor Saviliano

    de Geometria em Osford!
  32. Que encadeamento fantástico! Percebam a importância de boas escolas e

    bons Professores! Briggs convenceu Johann Kepler sobre as vantagens da invenção de Napier. Kepler usou logaritmos para calcular as posições de Marte, o que conduziu-o a descobrir as leis do movimento planetário. A reputação de Kepler foi fundamental na disseminação do uso de logaritmos em toda a Europa. Isaac Newton usou as leis de Kepler para descobrir a lei da gravidade.
  33. Elas eram usadas para efetuar multiplicações e divisões, de forma

    rápida, num tempo em que não haviam computadores, nem máquinas de calcular. Mestres, afinal de contas, para que eram utilizadas as tábuas de logaritmo?
  34. log(x∗y) = log(x) + log(y) log(x/y) = log(x) - log(y)

    A régua de cálculo foi um instrumento analógico largamente utilizado pelos engenheiros até surgirem as máquinas de calcular científicas nos anos 70. Elas utilizavam escalas logarítmicas e as duas propriedades abaixo:
  35. As tábuas de logaritmos e das funções trigonométricas eram utilizadas

    para efetuar aproximações lineares, como nessa figura que fiz. () () a a
  36. O foco da aula de hoje é aproximar funções por

    outras mais simples. Em primeira mão, por polinomiais.
  37. É simples provar que ℬ , é um subespaço vetorial

    de ℱ( , ). Faça essa prova, Surfista! Um subconjunto importante de ℱ(, ℝ) é ℬ , ℝ , o conjunto de todas as funções : → ℝ que são limitadas.
  38. Uma função : → ℝ é limitada quando existe ∈

    ℝ para o qual () < , ∀ ∈ . Mas o que é uma função limitada Mestre?
  39. Um conceito delicado é o de supremo de um conjunto

    de números reais. Ele vai ser necessário adiante. O supremo s de um conjunto limitado X ⊂ ℝ, anotado (), é o menor de seus limitantes superiores. Em outras palavras, = () ⟺ ∀ ∈ , ≤ ∀ > 0, ∃ ∈ . . − < ≤
  40. • 2 = ∈ ℚ . 2 < 2 •

    1 = ∈ ℝ . < 1 • 1 = ∈ ℝ . ≤ 1 • 2 = 1 + 1 2 , 1 + 1 2 + 1 4 , 1 + 1 2 + 1 4 + 1/8, ⋯ • 9 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 • 2 = , é í í ê 1 Veja alguns: Cruz-credo, Mestra! Dê um exemplo, pelo amor de Deus
  41. s − ∈ A 1ª parte da definição garante que

    s é um limitante superior de X. A 2ª é que, não importa qual seja a precisão , sempre conseguiremos descobrir um número ∈ entre s e − . Isto garante que s é o menor de todos os limitantes. A visão geométrica associada a esse conceito é a seguinte:
  42. Nessa figura vocês não mostraram os elementos do conjunto X.

    Por quê? Só para descobrir se você estava atento! Imagine, p/ex., X como as aproximações decimais por falta para 2: = { 1.4, 1.41, 1.414, 1.4142, … }
  43. Um ponto a ser destacado a respeito do supremo s

    de X é que ele pode ser um elemento de X, mas isto não é uma exigência. Quando ∈ , ele é o máximo de X, anotado max ()
  44. Uma primeira resposta é uma negativa parcial. Não é possível

    definir uma norma em ℱ(, ℝ). Ele é muito grande para isto. Entretanto isto é possível para as funções : → ℝ que são limitadas. Para falar de aproximação entre funções, precisamos saber como medir o tamanho de funções. Em outras palavras, como definir a norma para uma função ∈ ℱ(, ℝ).
  45. f ∞ Lembre-se Surfista, o Mestre está afirmando que: 1.

    ∞ ≥ 0 e ∞ = 0 ⇒ = 0; 2. ∞ = ∞ , para ∈ ℝ; 3. + ∞ ≤ ∞ + ∞ . A função ∙ ∞ : ℬ , → ℝ, definida para toda ∈ ℬ , por ∞ = sup , ∈ , é uma norma – uma forma de medir tamanho de funções.
  46. p Ótima lembrança, Surfista! Nesse caso, = , ∈ ,

    e se ≥ 0, ∞ = (). Em Cálculo aprendemos que toda função contínua f definida num intervalo fechado [, ] atinge seu valor máximo num ponto ∈ [, ].
  47. f − ∞ Simplesmente calculando − ∞ = − ()

    , ∈ , , que é a forma de medir a distância entre duas funções usando a ∙ ∞ Mas como medimos a distância entre duas funções , ∈ ℬ( , ) ?
  48. f A norma ∙ ∞ mede a proximidade de funções

    de forma uniforme, em todo um intervalo. De fato, sejam , ∈ ℬ , . Afirmar que − ∞ < corresponde a assegurar que g fica dentro de uma faixa com largura uniforme envolta de f . Na figura a faixa rosa, de a até b.
  49. Passaremos agora a analisar formas de estabelecer aproximações globais num

    intervalo [a, b].
  50. Em particular, observamos dois fatos óbvios: 1. ∀ ∈ ℕ,

    ℙ ([, ]) é um subespaço ℙ([, ]), o espaço das polinomiais de qualquer grau. 2. ℙ([, ]) é subespaço de ℱ( , ), o espaço de todas as funções : [, ] → ℝ. E aprendi a usar a NumPy para: • Criar polinomiais, usando a base canônica 0 , 1 , ⋯ , de ℙ ([, ]); • Calcular raízes de uma polinomial; • Derivar e integrar polinomiais ∈ ℙ ([, ]); • Etc.
  51. Daí decorrem duas afirmações que merecem nossa atenção: • ℙ([,

    ]), o espaço das polinomiais de qualquer grau, tem dimensão infinita, enumerável; • ℱ( , ), o espaço de todas as funções : [, ] → ℝ também tem dimensão infinita; E como toda polinomial é uma função contínua, e infinitamente derivável, concluímos também, que , , 1 , , ⋯ , ∞ , são todos espaços dimensão infinita.
  52. Mas Surfista, eu nunca vi nenhuma polinomial de grau infinito.

    Existem polinomiais de grau infinito Mestra? Claro que não, minha filha. As polinomiais de ℙ([, ]), não possuem restrição de grau. Isto quer, apenas, dizer que o grau poderá ser qualquer número natural, por isso mesmo finito.
  53. Assim ℙ[a, b] possui dimensão infinita (enumerável) e não se

    fala mais nisso! A sequência ℬ = { 0 , 1 , … , … } das funções polinomiais definidas por = , para ∈ [, ] é uma base (de Hamel) de ℙ( , ), pois: 1. ℬ gera ℙ( , ) – lembrem-se, combinações lineares são somas finitas; 2. ℬ é um subconjunto LI de ℙ , , pois todo ∈ ℕ, os subconjuntos constituídos por n elementos distintos de ℬ é LI.
  54. f p Se f é uma função contínua num intervalo

    fechado [, ] então, para qualquer precisão > 0, existe uma polinomial ∈ ℙ tal que − ∞ < . O teorema de aproximação de Weierstrass é um resultado de existência de aproximações polinomiais globais fundamental:
  55. Esse teorema de Weierstrass informa que ℙ[, ] é denso

    em [, ]. Ah, sim! Da mesma forma que ℚ é denso em ℝ .
  56. Surfista, você acabou de dizer que: “Podemos aproximar um número

    real (como π, p/ex.) com qualquer número de casas decimais (i.é, com qualquer precisão ε > 0)”. Parafraseando o Mestre: “Podemos aproximar uma função contínua por uma polinomial com qualquer precisão ε > 0.”
  57. f 0.2 f 0.5 Arrochando o abraço!

  58. Começaremos por entender aproximação via interpolação polinomial. A interpolação é

    uma técnica para calcular resultados numéricos aproximados de dados não tabelados, a partir de dados funcionais de valores vizinhos tabelados.
  59. () () a b () () Interpolar, é o nome

    técnico para isto! A figura objetiva ilustrar que podemos aproximar por () o valor de () a partir dos valores conhecidos (tabelados) () e ().
  60. Com a NumPy e a base de Lagrange, aprendemos a

    construir funções polinomiais que “passam” por pontos dados. É só juntar essa duas idéias?
  61. Sim Loirinha, a ideia de aproximar uma função : ,

    → ℝ através de interpolação por uma polinomial de grau n é óbvia! É só passar a polinomial pelos pontos (0 , 0 ), (1 , 1 ), ⋯ , ( , ), onde 0 = 0 1 = 1 ⋮ = , com 0 = , = .
  62. Vejam este exemplo: • A função é = () •

    Os pontos a interpolar são −1, −1 , − 1 2 , 0 , 0, 0 , 1 2 , 0 , (1,1)
  63. Com 7 pontos melhorou muito, visualmente!

  64. Este é programa que faz a interpolação. Ele usa a

    rotina lagrange( ) da scipy.interpolate.
  65. Vejam os detalhes da rotina lagrange( ) da scipy.interpolate.

  66. Mestres, está na hora de mergulhar fundo no conteúdo da

    scipy.interpolate!
  67. Tem razão Manual. Primeiro vamos olhar o conteúdo do Tutorial

    da SciPy sobre interpolação:
  68. O início do Tutorial da SciPy sobre interpolação:

  69. Eis a scipy.interpolate na Reference.

  70. Vamos começar examinando essas duas rotinas marcadas pelo Mestre.

  71. Mestres! Por que a interpolação de Lagrange não aparece nessa

    lista? Ela está escondida nas duas que o Mestre marcou!
  72. Para entender o KroghIntgerpolator( ) a necessário ler o artigo

    do Fred Krogh.
  73. Não deixem de acessar e ler o artigo. Lá estão

    detalhados os algoritmos de Krogh empregados pela scipy.interpolate Inclusive o artigo compara número de operações com os algoritmos de Lagrange e Aitken/Neville, mostrando que os propostos por Krogh tem melhor performance.
  74. • = ( ) • , +1 = +1 −

    +1− • , +1 , +2 = +1, +2 − , +1 +1− • , +1 , +2 , +3 = +1, +2 , +3 − , +1, +2 +1− • E assim por diante Os algoritmos de Krogh usam as fórmulas de diferenças divididas finitas (DDF) de Newton, definidas recursivamente por: Não entendi essas diferenças divididas!
  75. Repito, não entendi! Vai explicar ou não ?!...?! Morri de

    medo, meu Kruguinho querido! Mestre, faça um programa que constrói uma tabela de diferenças divididas finitas.
  76. Eis a tabela de DDFs.

  77. Veja Kruguinho: para calcular uma DDF3 precisamos duas DDF2, três

    DDF1, quatro valores de f.
  78. Mestra, a DDF2 de uma polinomial de grau 2 é

    constante, e igualzinha à derivada 2ª e a DDF3 é identicamente nula.
  79. Não resisti e acrescentei os gráficos para comparar com as

    derivadas:
  80. Pois é Surfista, compare os gráficos da função e suas

    derivadas com os gráficos das DDFs e conclua.
  81. Kruguinho, repeti tudo para a função = (). Já vimos

    no curso que as diferenças finitas são aproximações para as derivadas!
  82. A polinomial interpoladora de Lagrange, pelos n+1 pontos (0 ,

    0 ), (1 , 1 ) ⋯ , ( , ), é dada pela: = 0 + 0 , 1 1 + 0 , 1 , 2 2 + ⋯ ⋯ + 0 , 1 , ⋯ , (), onde = ( − 0 )( − 1 ) ⋯ ( − −1 ) Fórmula de interpolação com as DDFs de Newton
  83. Com alguma manipulação algébrica é possível mostrar que as fórmulas

    de Newton e de Lagrange são iguais. Loirinha e Surfista, façam essas continhas para as interpoladoras de grau 1 e 2.
  84. O interpolador de Krogh, prontinho para usar, na scipy.interpolate.

  85. A interpoladora de Lagrange, calculada através do algoritmo de Krogh.

    O programa só muda na linha 21:
  86. Usando o interpolador de Krog para aproximar e :

  87. O programa:

  88. Eis um artigo de peso! Nele os autores recuperam conceitualmente

    a interpolação de Lagrange como um algoritmo ótimo!
  89. Após apresentar a fórmula interpoladora de Lagrange, conforme já fizemos

    no curso, os autores comentam:
  90. A fórmula de Lagrange aperfeiçoada!

  91. E, finalmente, fórmula baricêntrica!

  92. Prontinha para usar na scipy.interpolate.

  93. Esta observação é importante!!

  94. Veja Surfista. O programa com a barycentric é muito parecido

    com o anterior. Incluí a função erro.
  95. Nas extremidades do intervalo o erro aumentou!

  96. Observe que para 7 pontos a função erro quase “cola”

    no eixo-x.
  97. Admitindo-se que: • , e (+1) existe em , •

    ≤ 0 < 1 < ⋯ < ≤ então para todo [0 , ], existe um número entre 0 e tal que • = + +1 (), onde: • é a polinomial interpoladora de grau por 0 , 0 , 1 , 1 , ⋯ , , , • +1 = +1 ( ) + 1 ! − 0 − 1 ⋯ − Teorema da interpolação polinomial Vocês poderão encontrar a demonstração do teorema a seguir em livros de Análise Numérica.
  98. Então teremos +1 () ≤ +1 ! | − 0

    ⋯ − | . E, se os pontos forem igualmente espaçados de ℎ, +1 () ≤ ℎ+1 4 +1 . Se a derivada de ordem + 1, (+1), de for contínua no intervalo [0 , ], ela será limitada. Nesse caso, existirá um número real tal que max [0,] (+1) () =
  99. Meu querido aluno impaciente ... Como você acha que Numpy

    + Scipy calculam as funções tão rapidamente, com a precisão requerida pelo IEEE 754? Eu realmente não vejo razão para toda essa teoria sobre interpolação e erro. O computador fornece tudo pronto!
  100. Loirinha, você tocou num ponto crucial. Para valores igualmente espaçados,

    ao aumentarmos o grau da interpoladora, surge o fenômeno de Runge! Mestres, aumentando o grau n da polinomial interpoladora conseguiremos melhorar a precisão?
  101. Veja só que coisa terrível! Nesse exemplo vemos que o

    erro cresceu assustadoramente com o grau. Ele dispara nos extremos!
  102. A interpolação baricêntrica não resolve o fenômeno de Runge, que

    não é um problema de estabilidade, mas é devido ao mau condicionamento da interpolação de Lagrange para pontos igualmente espaçados.
  103. Vejam que o fenômeno de Runge não ocorreu com a

    função () em 0, 2 . Inclusive nem dá para ver a função erro – está “colada” no eixo-x!
  104. Entretanto o fenômeno de Runge já se manifesta para a

    função () em −3, 3 e grau 14 na interpoladora. Porém quando aumentamos o grau da interpoladora para 20 ele volta a desaparecer.
  105. Bem Mestre, este leão eu domei. Mas precisei 39 de

    chicotadas.
  106. Pois é Surfista, mas para a função = 1/(1 +

    2) isto não acontece! Ela Runge mais ainda!
  107. Tchau! Até a próxima.