| | | | |

5.4 Spline Cúbico

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

Dado um conjunto de pontos {(xi,yi)}i=1n, um spline cúbico é uma função duas vezes continuamente diferenciável da forma

s(x)={s1(x),x1x<x2,s2(x),x2x<x3,sn1(x),xn1x<xn, (5.44)

onde as partes são polinômios cúbicos

si(x)=si,1(xxi)3+si,2(xxi)2+si,3(xxi)+si,4, (5.45)

que satisfazem as seguintes propriedades

  1. a)

    Interpolação

    s(xi)=yi,i=1,2,,n, (5.46)
  2. b)

    Continuidade

    si(xi)=si+1(xi),i=1,2,,n2, (5.47)
  3. c)

    Continuidade da derivada

    si(xi)=si+1(xi),i=1,2,,n2, (5.48)
  4. d)

    Continuidade da segunda derivada

    si′′(xi)=si+1′′(xi),i=1,2,,n2. (5.49)

Observamos que o spline tem 4(n1) coeficientes a determinar, enquanto que as condições acima nos fornecem 4n6 equações. Assim sendo, a determinação de um spline requer ainda duas condições de fechamento. Conforme a escolha destas condições, diferentes splines cúbicos são computados.

5.4.1 Spline Not-a-Knot

A condição not-a-knot exige que o spline cúbico tenha derivada terceira contínua nos pontos x2 e xn1, i.e.

s1′′′(x2)=s2′′′(x2), (5.50a)
sn2′′′(xn1)=sn1′′′(xn1). (5.50b)
Exemplo 5.4.1.

Consideremos o problema de aproximar a função f(x)=sen(x) pelo spline cúbico not-a-knot com pontos x1=0, x2=π/6, x3=π/3 e x4=π/2. Na Figura 5.3 temos os esboços de f e do spline cúbico computado. O spline computado é aproximadamente

s(x)={s1(x),0x<π6s2(x),π6x<π3,s3(x),π3x<π2 (5.51)

sendo suas partes

s1(x)=0.11x30.11x20.11x, (5.52)
s2(x)=0.07(xπ6)30.24(xπ6)20.42(xπ6)+12,
s3(x)=1.02(xπ3)3+0.86(xπ3)2+0.51(xπ3)+32.
Refer to caption
Figura 5.3: Gráficos da função f(x)=sen(x) e do spline cúbico computado no Exemplo 5.4.1.
Código 14: splineNotAKnot.py
1import numpy as np
2from scipy.interpolate import CubicSpline
3
4# dados
5f = lambda x: np.sin(x)
6xx = np.array([0.,
7              np.pi/6,
8              np.pi/3,
9              np.pi/2])
10yy = f(xx)
11
12# spline
13cs = CubicSpline(xx, yy)
14
15# coefs
16print(cs.c)

5.4.2 Spline Fixado

Os splines cúbicos fixados são obtidos impondo os valores das derivadas na fronteira, i.e.

s(x1)=y1, (5.53a)
s(xn)=yn, (5.53b)

onde y1 e yn são escalares dados. Quando usamos splines para aproximarmos uma dada função f, usualmente, escolhemos y1=f(x1) e yn=f(xn).

Exemplo 5.4.2.

Consideremos o problema de aproximar a função f(x)=sen(x) pelo spline cúbico fixado com pontos x1=0, x2=π/6, x3=π/3 e x4=π/2. Na Figura 5.4 temos os esboços de f e do spline cúbico computado

s(x)={s1(x),0x<π6s2(x),π6x<π3,s3(x),π3x<π2, (5.54)

send suas partes

s1(x)=0.16x30.12x20.04x (5.55)
s2(x)=0.001(xπ6)30.26(xπ6)20.44(xπ6)+12,
s3(x)=0.0(xπ3)3+0.5(xπ3)2+0.87(xπ3)+32.
Refer to caption
Figura 5.4: Gráficos da função f(x)=sen(x) e do spline cúbico fixado computado no Exemplo 5.4.2.
1import numpy as np
2from scipy.interpolate import CubicSpline
3
4# dados
5f = lambda x: np.sin(x)
6xx = np.array([0.,
7              np.pi/6,
8              np.pi/3,
9              np.pi/2])
10yy = f(xx)
11
12# spline
13cs = CubicSpline(xx, yy,
14                 bc_type=((1, 1.),
15                          (1, 0.)))
16
17# coefs
18print(cs.c)

5.4.3 Exercícios

E. 5.4.1.

Dado o conjunto de pontos {(1,1),(0.5,1),(1,2)}, obtenha o spline cúbico associado com condição de controno:

  1. a)

    Not-a-Knot.

  2. b)

    Fixado.

E. 5.4.2.

Dado o conjunto de pontos {(1,1),(0,1),(1,1/2),(2,1)}, obtenha o spline cúbico associado com condição de controno:

  1. a)

    Not-a-Knot.

  2. b)

    Fixado.

E. 5.4.3.

Dado o conjunto de pontos {(1,1),(0,1),(1,1/2),(2,1),(2.5,1)}, obtenha o spline cúbico associado com condição de controno:

  1. a)

    Not-a-Knot.

  2. b)

    Fixado.

E. 5.4.4.

Aproxime a função f(x)=ex por um spline cúbico que passa pelos pontos x1=0, x2=1, x3=1.5 e x4=2.

Resposta.

Dica: use um spline fixado.

E. 5.4.5.

Considere o problema de aproximar a função f(x)=cos(x) por um spline cúbico s=s(x) no intervalo [0,π]. Escolha os pontos e a condição de fronteira de forma a obter s que aproxime f com boa precisão gráfica.

Resposta.

Dica: use um spline fixado.


Envie seu comentário

As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a Política de Uso de Dados para mais informações. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!