Use o botão abaixo para reportar erros ou dar sugestões.

Cálculo Numérico - Versão Scilab

6.6 Interpolação cúbica segmentada - spline


A ideia empregada na interpolação linear segmentada pode ser estendida através da utilização de polinômios de grau superior. A escolha de polinômios de grau superior implica uma maior liberdade (há um número maior de coeficientes) na construção da interpolação. Parte dessa liberdade pode ser utilizada na exigência de suavidade para a interpolação.

Definição 6.6.1 (spline de ordem m). Dado um conjunto de n pontos I = (xj,yj) j=1n tais que xj+1 > xj, ou seja, as abscissas são distintas e estão em ordem crescente; um spline de ordem m que interpola estes pontos é uma função s com as seguintes propriedades:

  • Em cada intervalo [xj,xj+1), j = 1,2,n - 2 e no segmento [xn-1,xn] s é um polinômio de grau menor ou igual a m;
  • Em algum dos intervalos s é um polinômio de grau m;
  • Em cada xj I, s(xj) = yj, isto é, o spline interpola os pontos dados;
  • s é uma função de classe Cm-1, isto é, é função m - 1 vezes continuamente diferenciável.

São n - 1 intervalos e em cada um deles há m + 1 coeficientes a se determinar. As condições iii e iv impostas pela definição correspondem respectivamente a n e m(n - 2) equações. Estas últimas, se devem à exigência de continuidade nos pontos internos, ou seja, os pontos de I com índices j = 2,3,,n - 1. Portanto, há m - 1 coeficientes a mais do que o número de equações e, à exceção do caso m = 1 (interpolação linear segmentada), o problema é subdeterminado. Ou seja, uma vez fixada a ordem m > 1, existem infinitos splines de ordem m que interpolam os pontos do conjunto I.

O caso m = 3, denominado spline cúbico, é de grande interesse pois reproduz o comportamento físico de réguas delgadas com estrutura elástica homogênea e perfil uniforme sujeitas aos vínculos representados pelos pontos do conjunto I. A equação diferencial que rege o comportamento do perfil dessas réguas é um caso particular do equação da viga de Euler-Bernoulli. Neste caso, a equação tem a forma

d4y dx4 = 0, (6.65)

cuja solução geral é um polinômio de grau 3.

Vamos supor que um spline cúbico que interpola o conjunto de pontos I é conhecido. Como esse spline é uma função de classe C2, as suas derivadas nos pontos do conjunto I são conhecidas também. Seja yj, o valor dessa derivada em x = xj. Agora, vamos considerar dois pares de pontos sucessivos de I, (xj,yj) e (xj+1,yj+1). A forma do spline cúbico no intervalo [xj,xj+1) pode ser identificada com a solução da equação diferencial (6.65) no intervalo (xj,xj+1) sujeita às condições de contorno

y(xj) = yj,y(x j) = yj,y(x j+1) = yj+1ey(x j+1) = yj+1. (6.66)

A solução desse problema de contorno é escrita de modo conveniente como

sj(x) = aj + bj(x - xj) + cj(x - xj)2 + d j(x - xj)3, (6.67)

onde as constantes aj, bj, cj e dj se relacionam às do problema de contorno. As duas primeiras seguem imediatamente das condições de contorno em xj:

aj = yjebj = yj. (6.68)

As duas últimas são obtidas pela solução do sistema de equações formado pelas condições de contorno em xj+1:

cj = 3 yj+1 - yj xj+1 - xj 2 - yj+1 + 2y j xj+1 - xj edj = -2 yj+1 - yj xj+1 - xj 3 + yj+1 + y j xj+1 - xj 2 (6.69)

Esta relação entre o conjunto de valores para a derivada de um spline cúbico {yj} j=1n nos pontos de interpolação I e os coeficientes dos polinômios em cada intervalo de interpolação pode ser resumida na seguinte proposição:

Proposição 6.6.1. Seja s um spline cúbico que interpola o conjunto de pontos I = {(xj,yj)}j=1n 2 tais que xj+1 > xj. Se {yj} j=1n é o conjunto dos valores da derivada de s em xj, então em cada intervalo [xj,xj+1) (fechado também à direita quando j = n - 1) o spline é igual a sj:

sj(x) = aj + bj(x - xj) + cj(x - xj)2 + d j(x - xj)3, (6.70)

onde

aj = yj, cj = 3yj+1 - yj hj2 - yj+1 + 2y j hj , bj = yj, d j = -2yj+1 - yj hj3 + yj+1 + y j hj2 (6.71)

e

hj = xj+1 - xj,j = 1,2,,n - 1 (6.72)

é a distância entre as abscissas de dois pontos de interpolação consecutivos.

De acordo com a proposição anterior, toda informação sobre um spline cúbico é armazenada no conjunto {(xj,yj,yj)} j=1n. Por construção, uma função s definida a partir de (6.70), (6.71) e (6.72) com um conjunto {(xj,yj,yj)} j=1n 3, onde xj+1 > xj é de classe C1 mas não necessariamente um spline cúbico. Para ser um spline cúbico, os valores do conjunto {yj} j=1n devem garantir a continuidade da derivada segunda de s em todo intervalo (x1,xn). Ou seja, devemos ter

lim xxj+1sj(x) = s j+1(x j+1) (6.73)

em todos os pontos internos j = 1,2,,n - 2. Em termos dos coeficientes dos polinômios cúbicos (6.70), a equação anterior assume a forma

2cj + 6djhj = 2cj+1,j = 1,2,,n - 2. (6.74)

Esta última equação e (6.71) permitem construir um sistema de equações lineares para as variáveis yj:

Proposição 6.6.2. Dado o conjunto de pontos I = {(xj,yj)}j=1n 2 tais que xj+1 > xj, as derivadas de um spline cúbico que interpola os pontos I, yj, j = 1,2,,n satisfazem o sistema de equações algébricas lineares

hjyj-1 + 2(h j-1 + hj)yj + h j-1yj+1 = 3 h jyj - yj-1 hj-1 + hj-1yj+1 - yj hj , (6.75)

onde j = 2,3,,n - 1 e hj = xj+1 - xj.

O sistema de equações (6.75) é subdeterminado. São n variáveis e n - 2 equações. A inclusão de duas equações adicionais linearmente independentes das n - 2 equações (6.75) possibilita a existência de uma única solução. Tipicamente essas equações adicionais envolvem o comportamento do spline na fronteira ou na sua vizinhança. A seguir, veremos quatro escolhas mais conhecidas.

6.6.1 Spline natural


Uma forma de definir as duas equações adicionais para completar o sistema (6.75) é impor condições de fronteira livres (ou naturais), ou seja,

s(x1) = s(xn) = 0. (6.76)

De acordo com (6.70) essas equações implicam respectivamente

c1 = 0e2cn-1 + 6dn-1hn-1 = 0, (6.77)

ou seja,

2y1 + y 2 = 3y2 - y1 h1 yn-1 + 2y n = 3yn - yn-1 hn-1 . (6.78)

Essas duas equações em conjunto com as equações (6.75) formam um sistema de n equações algébricas lineares Ay = z, onde

A = 2 1 0 0 0 0 h2 2(h1 + h2) h1 0 0 0 0 h3 2(h2 + h3) h2 0 0 0 0 0 hn-1 2(hn-1 + hn-2) hn-2 0 0 0 0 1 2 , (6.79)
y = y1 y2 yn ez = 3 y2-y1 h1 h2y2-y1 h1 + h1y3-y2 h2 h3y3-y2 h2 + h2y4-y3 h3 hn-1yn-1-yn-2 hn-2 + hn-2yn-yn-1 hn-1 yn-yn-1 hn-1 . (6.80)

Observe que a matriz A é diagonal dominante estrita e, portanto, o sistema Ay = z possui solução única. Calculado y, os valores dos aj, bj, cj e dj são obtidos diretamente pelas expressões (6.71).

Exemplo 6.6.1. Construa um spline cúbico natural que passe pelos pontos (2,4,5), (5, - 1,9), (9,0,5) e (12, - 0,5).

Solução. O spline desejado é uma função definida por partes da forma:

s(x) = a1 + b1(x - 2) + c1(x - 2)2 + d 1(x - 2)3, 2 x < 5 a2 + b2(x - 5) + c2(x - 5)2 + d 2(x - 5)3, 5 x < 9 a3 + b3(x - 9) + c3(x - 9)2 + d 3(x - 9)3, 9 x 12 . (6.81)

As variáveis y1, y2, y3 e y4 resolvem o sistema Ay = z, onde

A = 2 1 0 0 4 2(4 + 3) 3 0 0 3 2(3 + 4) 4 0 0 1 2 = 2 1 0 0 4 14 3 0 0 3 14 4 0 0 1 2 , (6.82)
y = y1 y2 y3 y4 ez = 3 1 3(-1,9 - 4,5) 4 3(-1,9 - 4,5) + 3 4(0,5 - (-1,9)) 3 4(0,5 - (-1,9)) + 4 3(-0.5 - (0,5)) 1 3(-0,5 - (0.5)) = -6,4 -20,2 1,4 -1 . (6.83)

A solução é y1 = -2,83 ̄, y2 = -0,73 ̄, y3 = 0,46 ̄ e y4 = -0,73 ̄. Calculamos os coeficientes usando as expressões (6.71):

a1 = y1 = 4,5, b1 = y1 = -2,83 ̄, a2 = y2 = -1,9, b2 = y2 = -0,73 ̄, a3 = y3 = 0,5. b3 = y3 = 0,46 ̄, c1 = 0, d1 = 0,07 ̄, c2 = 0,7, d2 = - 0,0916 ̄, c3 = - 0,4, d3 = 0,04 ̄. (6.84)

Portanto:

S(x) = 4,5 -2,83̄(x -2) + 0,07̄(x -2)3 ,2 x < 5 -1,9 -0,73̄(x -5) + 0,7(x -5)2 -0,0916̄(x -5)3 ,5 x < 9 0,5 + 0,46̄(x -9) -0,4(x -9)2 + 0,04̄(x -9)3 ,9 x 12 . (6.85)

No Scilab, podemos utilizar:

xi = [2;5;9;12]  
yi = [4.5;-1.9;0.5;-0.5]  
hi = xi(2:4)-xi(1:3)  
A = [2 1 0 0;hi(2) 2*(hi(1)+hi(2)) hi(1) 0; ...  
   0 hi(3) 2*(hi(2)+hi(3)) hi(2);0 0 1 2 ]  
z = 3*[(yi(2)-yi(1))/hi(1); ...  
   hi(2)/hi(1)*(yi(2)-yi(1))+hi(1)/hi(2)*(yi(3)-yi(2));...  
   hi(3)/hi(2)*(yi(3)-yi(2))+hi(2)/hi(3)*(yi(4)-yi(3));...  
   (yi(4)-yi(3))/hi(3)]  
dyi = A\z  
a=yi(1:3)  
b=dyi(1:3)  
c(1)=0  
c(2:3)=3*(yi(3:4)-yi(2:3))./hi(2:3).^2 ...  
         - (dyi(3:4)+2*dyi(2:3))./hi(2:3)  
d=-2*(yi(2:4)-yi(1:3))./hi.^3 + (dyi(2:4)+dyi(1:3))./hi.^2  
for i=1:3  
    P(i) = poly([a(i) b(i) c(i) d(i)],’x’,’coeff’)  
    z = [xi(i):.01:xi(i+1)]  
    plot(z,horner(P(i),z-xi(i)))  
end

O mesmo resultado é obtido através das instruções splin e interp do Scilab:

xi = [2;5;9;12]  
yi = [4.5;-1.9;0.5;-0.5]  
dyi=splin(xi,yi,’natural’)  
z=linspace(xi(1),xi($))  
plot(z,interp(z,xi,yi,dyi))

6.6.2 Spline fixado


O spline fixado s é obtido pela escolha dos valores das derivadas nas extremidades do intervalo de interpolação. Isto diminui o número de variáveis para n - 2 pois y1 e yn deixam de ser incógnitas.

As equações (6.75) formam um sistema de n - 2 equações Ay = z, onde

A = 2(h1 + h2) h1 0 0 0 0 h3 2(h2 + h3) h2 0 0 0 0 h4 2(h3 + h4) h3 0 0 0 0 0 hn-2 2(hn-3 + hn-2) hn-3 0 0 0 0 hn-1 2(hn-2 + hn-1) , (6.86)
y = y2 y3 yn-1 ez = 3 h2y2-y1 h1 + h1y3-y2 h2 -h2y1 h3y3-y2 h2 + h2y4-y3 h3 hn-2yn-2-yn-3 hn-3 + hn-3yn-1-yn-2 hn-2 hn-1yn-1-yn-2 hn-2 + hn-2yn-yn-1 hn-1 -hn-2yn . (6.87)

Observe que a matriz A é diagonal dominante estrita e, portanto, o sistema Ay = z possui solução única.

6.6.3 Spline not-a-knot


O spline not-a-knot é definido com um spline cúbico que satisfaz as equações adicionais

lim xx2s1(x) = s 2(x 2)e lim xxn-1sn-2(x) = s n-1(x n-1). (6.88)

Em termos dos coeficientes (6.70), as equações anteriores correspondem a

d1 = d2edn-2 = dn-1, (6.89)

ou seja,

h22y 1 + (h 22 - h 12)y 2 - h 12y 3 = 2 h 22y2 - y1 h1 - h12y3 - y2 h2 hn-12y n-2 + (h n-12 - h n-22)y n-1 - h n-22y n = 2 h n-12yn-1 - yn-2 hn-2 - hn-22yn - yn-1 hn-1 . (6.90)

Essas duas equações agregadas às equações (6.75) formam um sistema de n equações Ay = z, onde

A = h22 h22 - h12 - h12 0 0 0 h2 2(h1 + h2) h1 0 0 0 0 h3 2(h2 + h3) h2 0 0 0 0 0 hn-1 2(hn-2 + hn-1) hn-2 0 0 0 hn-12 hn-12 - hn-22 - hn-22 , (6.91)
y = y1 y2 yn ez = 2 h22y2 -y1 h1 -h12y3 -y2 h2 3 h2y2-y1 h1 + h1y3-y2 h2 3 hn-1yn-1-yn-2 hn-2 + hn-2yn-yn-1 hn-1 2 hn-12yn-1 -yn-2 hn-2 -hn-22yn -yn-1 hn-1 . (6.92)

Se reduzirmos esse sistema pela eliminação das incógnitas y1 e yn, o sistema resultante possui uma matriz de coeficientes diagonal dominante estrita, portanto, a solução é única.

O termo not-a-knot (não nó) relaciona-se à nomenclatura dos splines. O termo nó é utilizado para os pontos interpolados. Neles, a derivada terceira da função spline é descontínua, portanto, quando impomos a continuidade dessa derivada em x2 e xn-1 é como se esses pontos deixassem de ser nós.

6.6.4 Spline periódico


Se o conjunto de n pontos da interpolação I for tal que y1 = yn, então é possível construir o spline periódico, definido com um spline cúbico que satisfaz as seguintes condições de periodicidade

s1(x 1) = sn-1(x n)es1(x 1) = sn-1(x n). (6.93)

Em termos dos coeficientes (6.70)

b1 = bn-1e2c1 = 2cn-1 + 6dn-1hn-1, (6.94)

ou seja,

y1 - y n = 0 2hn-1y1 + h n-1y2 + h 1yn-1 + 2h 1yn = 3 h n-1y2 - y1 h1 + h1yn - yn-1 hn-1 . (6.95)

Essas duas equações agregadas às equações (6.75) formam um sistema de n equações Ay = z, onde

A = 1 0 0 0 0 - 1 h2 2(h1 + h2) h1 0 0 0 0 h3 2(h2 + h3) h2 0 0 0 0 0 hn-1 2(hn-2 + hn-1) hn-2 2hn-1 hn-1 0 0 h1 2h1 , (6.96)
y = y1 y2 yn ez = 3 0 h2y2-y1 h1 + h1y3-y2 h2 hn-1yn-1-yn-2 hn-2 + hn-2yn-yn-1 hn-1 hn-1y2-y1 h1 + h1yn-yn-1 hn-1 . (6.97)

Neste caso também, se reduzirmos esse sistema pela eliminação das incógnitas y1 e yn, o sistema resultante possui uma matriz de coeficientes diagonal dominante estrita, portanto, a solução é única.

Creative Commons License Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 30/7/2018 às 13:16:34.

Informe erros ou edite você mesmo!