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

Interpolação por partes

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Interpolação por partes

...

Avatar for Paulo Bordoni

Paulo Bordoni

June 21, 2018
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. Iniciamos revendo o exemplo do fenômeno de Runge, no qual

    o erro cresceu assustadoramente com o grau. O erro disparou nos extremos!
  2. DIVIDIR PARA CONQUISTAR! Troquem um gigante por muitos anões! E

    aí Mestres, como faremos para matar esse leão?
  3. Dividir para conquistar é um mantra da computação. A ideia

    é muito simples: 1. Dividimos o intervalo [, ] em vários subintervalos – o total de anões; 2. Em cada sub-intervalo usamos uma polinomial de grau baixo – os anões.
  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. No meu tempo a Igreja não queimou apenas bruxas. Lembrem-

    se de Giordano Bruno! Eu mesmo escapei por pouco.
  10. 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.
  11. 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]
  12. 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.
  13. 3 1 4 3 4 Nesta figura desenhei em azul

    uma combinação linear de duas delas: 3 ℎ3 + 4 ℎ4
  14. A função abaixo é uma combinação linear de cinco funções-chapéu

    ℎ0 , ℎ1 , … , ℎ5 : = 0.3ℎ0 + 0.9ℎ1 + 0.5ℎ2 + 1.1ℎ3 + 1.3ℎ4 + 1.0ℎ5
  15. Veremos adiante que essa característica é fundamental para o método

    dos elementos finitos. Um aspecto fundamental da “hat function” ℎ3 é que ela é nula fora dos dois subintervalos que possuem o ponto 3 . Os matemáticos dizem: uma função a suporte compacto. O suporte da ℎ3 é o intervalo fechado [2.0, 4.0]. O suporte da função ℎ3 .
  16. • K é um subconjunto fechado de ഥ Ω =

    [a, b]; • é um espaço de funções polinomiais para as funções de forma; • Σ é o conjunto de graus de liberdade local. Para seu conhecimento: Um elemento finito é uma terna (, , Σ) na qual:
  17. a b el 1 a el 1 = − −

    = − − No método dos elementos finitos elas recebem o nome de coordenadas baricêntricas, e são usadas as letras gregas , no lugar de , . Na construção dos elementos finitos lineares usamos as duas funções da base de Lagrange linear definidas no elemento = [, ]:
  18. São propriedades básicas das coordenadas baricêntricas: • ∈ 1 (),

    = 1,2, = [0 , 1 ] • = = ቊ 1, = 0, ≠ , , = 1,2 • 1 + 2 = 1, ∀ ∈ As derivadas das coordenadas baricêntricas são: ቊ 0 () = − Τ 1 ℎ 1 () = Τ 1 ℎ , ∈ .
  19. A correspondência global x local ℎ5 ℎ6 5 6 Base

    global 0 1 5 6 Base local A correspondência entre as funções básicas no intervalo [5 , 6 ] : ൜ ℎ5 = 0 () ℎ6 () = 1 () para ∈ [5 , 6 ]. ou ℎ5 | 5,6 = 0 , ℎ6 | 5,6 = 1
  20. , é 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 ( , ).
  21. Atenção Surfista: Como necessitamos de pares de subintervalos consecutivos, o

    número N da partição , obrigatoriamente será ímpar.
  22. 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 , .
  23. Pintarei cada polinomial de grau ≤ 2 com uma cor

    diferente, para ficar clara a ideia de “por partes”.
  24. 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.
  25. 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!
  26. O programa da interpolação quadrática por partes. Ele é uma

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

    sim, Mestre. Para mostrar meu chapéu coco!
  28. 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?
  29. 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!
  30. Vou acordar este mexicano que está dormindo. Preciso do chapéu

    dele! Mestra, não faça isto, é o Mestre descansando!
  31. É 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.
  32. 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!
  33. Na construção dos elementos finitos quadráticos usamos as três funções

    da base de Lagrange quadrática (as funções de forma) definidas localmente no elemento = [, , ]. = − − ∙ − − = − − ∙ − − = − − ∙ − −
  34. As funções de forma são portanto definidas no elemento =

    , , através do produto das coordenadas baricêntricas: = () ∙ () = () ∙ () = () ∙ ()
  35. Na base exibida, a partição , foi uniforme (pontos =

    0 + ∙ ℎ, igualmente espaçados) e as funções da base de Lagrange de , são: 0 = 1 2ℎ2 ( − 1 )( − 2 ) 1 = −1 ℎ2 ( − 0 )( − 2 ) 2 = 1 2ℎ2 ( − 0 )( − 1 )
  36. 0 = 1 ℎ2 − Τ 1 + 2 2

    1 = −1 ℎ2 − Τ 0 + 2 2 2 = 1 ℎ2 [ − Τ 0 + 1 2] As derivadas das coordenadas baricêntricas são:
  37. São propriedades básicas das coordenadas baricêntricas: • ∈ 2 (),

    = 0,1,2, = [0 , 1 , 2 ] • = = ቊ 1, = 0, ≠ , , = 0,1,2 • 0 + 1 + 2 = 1, ∀ ∈
  38. p() q() 2 2 3 1 Na interpolação polinomial por

    partes, de Lagrange, a única exigência é a continuidade da interpolação. No gráfico: 2 = 2 = (2 ).
  39. p() q() 2 2 3 1 Observem que, no extremo

    comum, (2 , 2 ), a “colagem” entre p e q não é suave. Matematicamente (2 ) ≠ (2 ). Ondas abruptas, mas surfistas com curvas suaves...
  40. p() q() 2 2 3 1 A imposição da condição

    2 = 2 suaviza a colagem, pois obriga a coincidência das retas tangentes. A interpolação polinomial por partes, de Hermite, exige, em cada ponto, a igualdade tanto do valor da função, como do valor da derivada da função. O dobro de condições.
  41. Notem que a classe PiecewisePolynomial está presente nq versão 17.1

    da Scipy, mas não aparece mais na versão 19.0
  42. Para efetuar a interpolação com os métodos da ( ),

    o parâmetro é um array unidimensional com tamanho n, o número de pontos da partição do − . Já o parâmetro é um array bidimensional, com tamanho n x k, com ≥ 2. Para interpolar uma função f, o parâmetro será constituído por n pares , . Entretanto poderiam ser dois valores quaisquer.
  43. A interpolação de Hermite. O programa a seguir sorteia 7

    pontos e 7 direções tangentes e constrói a interpoladora.
  44. O parâmetro “orders” é mandatário com relação à condição de

    tangência. Sim, basta conferir os graus e os gráficos das polinomiais em cada sub-intervalo.
  45. = = 3 O default = é uma polinomial de

    grau 3 em cada sub-intervalo.
  46. Repetindo, quando não especificamos o parâmetro orders, ele assume o

    valor 3. Em outras palavras, as polinomiais são de grau 3 em cada sub-intervalo.
  47. É só usar = 0. A interpoladora constante por partes

    usando a função ( ) do pacote interpolate da SciPy.
  48. Com = 2 temos interpolação quadrática em cada sub-intervalo. Neste

    caso a tangência só ocorre no extremo direito de cada subintervalo.
  49. p() q() 2 2 3 1 A imposição da condição

    ′′ 2 = ′′ 2 obriga a mesma curvatura local para as duas curvas p e q que possuem o ponto (2 , 2 ) em comum. A curvatura local é o inverso do raio da circunferência osculadora – procure um livro de computação gráfica para mais detalhes. Observação
  50. Para usar = 4 precisamos fornecer também as derivadas 2ªs.

    A polinomial, sua derivada e sua derivada 2ª são iguais em cada nó.