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

Interpolação por partes

Interpolação por partes

...

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ó.