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

Interpolação 1D por partes

Interpolação 1D por partes

...

Avatar for Paulo Bordoni

Paulo Bordoni

December 08, 2018
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. Repito, dividir para conquistar ! A ideia é muito simples,

    partiremos o domínio (grande, um gigante) em em muitos pedaços (pequenos os anões).
  2. E então, ao invés de usar uma polinomial interpoladora em

    [, ], com grau demasiadamente grande (a gigante), usaremos polinomiais 1 , 2 , ⋯ , uma em cada subintervalo 0 , 1 , 1 , 2 , ⋯ [−1 , ], com grau bem pequeno (as anãs). Formalizando: Dado um intervalo [, ] consideremos uma partição , = {0 = , 1 , ⋯ , = }, constituida por subintervalos 0 , 1 , 1 , 2 , ⋯ [−1 , ].
  3. Foi uma das primeiras lições que aprendemos na MatPlotLib. Lembro-me

    perfeitamente: com 6 subintervalos o gráfico ficava ruim, mas com 20 melhorou. Com mais de 50 já parece contínuo.
  4. • Recebe: 1. Um intervalo [, ], 2. Uma partição

    , = 0 , 1 , … , de [, ], 3. Um valor para cada ∈ , . • Retorna o gráfico de uma função linear por partes pelos pontos ( , ), utilizando a interp1d( ). Fiz um programa que:
  5. O programa: • Recebe: 1. Um intervalo [, ], 2.

    A expressão de uma função : [, ] → ℝ, 3. Uma partição de , . • E devolve: 1. Uma tabela dos pares dos pares , ( ) , 2. Os gráficos de e da interpoladora linear por partes de Lagrange da função sobre a partição , . Agora faremos uma interpolação linear por partes de uma função : [, ] → ℝ.
  6. Um desses espaços é o ℒ( , ). Ele é

    constituído pelas funções que são contínuas num intervalo [, ] e lineares em cada sub-intervalo de uma partição [, ] = { = 0 < 1 < ⋯ < = } de [, ].
  7. A rotina interp1d( ) do pacote scipy.interpolate permite construirmos facilmente

    funções (vetores) desse subespaço. ℒ , é um subespaço de , .
  8. Todo espaco vetorial tem uma base, ao menos uma. Mostre-nos

    uma base do ℒ( , ), Mestra. Ah, minha filha, uma delas é a minha coleção de chapéus de bruxa!
  9. Chapeus de bruxa, Mestra? Amei! Sim Loirinha. A base canônica

    de ℒ( , ) é a coleção ℋ = {ℎ0 , ℎ1 , … , ℎ } constituída pelas N+1 “hat functions” que o Galileu vai te mostrar nas próximas transparências.
  10. As funções chapéu, “hat functions”, formam uma base para esse

    espaço. Esta é a ℎ3 . A definição ponto-a-ponto dela é: ℎ3 = 0 ∈ [0,2) − 2 ∈ [2,3) 4 − ∈ [3,4) 0 ∈ [4,5]
  11. Aspecto fundamental e importantíssimo: ℒ( , ) é um subespaço

    de , de dimensão finita + 1. É essa característica que permite computarmos aproximações para equações diferenciais ordinárias e parciais através do método dos elementos finitos.
  12. , é o subespaço de , constituído pelas funções que

    são quadráticas em cada par consecutivo de sub-intervalo de uma partição [, ] = { = 0 < 1 < ⋯ < = } do intervalo [, ] – os elementos finitos quadráticos. Anotaremos o espaço de funções quadráticas por partes por ( , ).
  13. Atenção Surfista: Como necessitamos de pares de subintervalos consecutivos, o

    número N da partição , obrigatoriamente será ímpar.
  14. Para enfatizar o uso de polinomiais de grau ≤ 2

    usarei um ℎ −1 , , +1 , −1 , , +1 em cada três pontos sucessivos −1 , , +1 , = 1, … , − 1 (pares de subintervalos) da partição [, ] = { = 0 < 1 < ⋯ < = } de , .
  15. Pintarei cada polinomial de grau ≤ 2 com uma cor

    diferente, para ficar clara a ideia de “por partes”.
  16. Usei o mesmo programa que chama a rotina interp1d( )

    da scipy.interpolate mas agora para desenhar uma função quadrática por partes em cada subintervalo da partição. A única diferença foi no parâmetro kind.
  17. Observem a grande melhoria na aproximação funções quadráticos com relação

    à brincadeira de trocar um gigante por vários anões. Incrível, é a mesma função do leão!
  18. O programa da interpolação quadrática por partes. Ele é uma

    pequena modificação do anterior (o colorido).
  19. Você sabe porque o chamei aqui, Mr. Charlie Chaplin? Sei

    sim, Mestre. Para mostrar meu chapéu coco!
  20. Eu explico, Surfista. Chapéus de bruxa são pontudos e retos,

    mas chapéus coco são arredondados – como parábolas, polinomiais de grau 2. E dá para explicar porque, Mr. Chaplin?
  21. Saquei Mestre! As funções básicas agora serão parábolas com abas,

    como chapéus coco. 2 2 1 1 Ótimo, mas tirou só meio-certo, Surfista!
  22. Vou acordar este mexicano que está dormindo. Preciso do chapéu

    dele! Mestra, não faça isto, é o Mestre descansando!
  23. É que além dos chapéus-côco, vamos precisar também de “sombreros”

    mexicanos pontudos! Porque uma base do espaço das funções quadráticas por partes é constituída por chapéus-côco e “sombreros” mexicanos. Vejam nas próximas transparências.
  24. Agora vou mostrar uma base global para , . Usarei

    4 pares de subintervalos. Portanto = 2 × 4 + 1 = 9, a dimensão de , . Admirem as funções básicas Loirinhas e Surfistas!
  25. Além da interp1d( ), na scipy.interpolate temos as funções PPoly(

    ) e BPoly( ) para efetuar interpolação polinomial por partes.