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

Interpolação 1D por partes

Interpolação 1D por partes

...

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.