Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Eb-Splines Cubicos PDF
Eb-Splines Cubicos PDF
yacerque@gmail.com
S 0 ( x) = c 0 ....x (t 0 , t1 )
S ( x) = c ....x (t , t )
S ( x) = 1 1 1 2
....
S n 1 ( x) = c n 1 ....x (t n 1 , t n )
Los intervalos (ti-1,ti) (xi-1,xi) no se intersectan entre s, por lo que no hay ambigedad
en la definicin de la funcin en los nodos.
S 0 ( x) = a0 x + b0 ....x (t 0 , t1 )
S ( x) = a x + b ....x (t , t )
S ( x) = 1 1 1 1 2
....
S n1 ( x) = an 1 x + bn 1 ....x (t n 1 , t n )
S 0 ( x) = a0 x + b0 ....x ( x0 , x1 )
S ( x) = a x + b ....x ( x , x )
S ( x) = 1 1 1 1 2
....
S n 1 ( x) = an 1 x + bn1 ....x ( xn 1 , xn )
Donde:
1. sj(x) es un polinomio de grado menor o igual que 1
2. s(x) tiene derivada continua de orden k-1=0.
3. s(xj)=yj, para j=0,1,2,...,n
Por lo tanto, el spline de grado 1 queda definido como:
y 0 + f [x1 , x 2 ]( x x 0 ) si x [x 0 , x1 ]
s(x) =
{ y1 + f [x 2 , x1 ]( x x1 ) si x [x1 , x 2 ]
y n 1 + f [x n , x n 1 ]( x x n 1 ) si x [x n 1 , x n ]
}
Donde f[xi,xj] es la diferencia dividida de Newton.
Para resolver el problema, primero, se hace que el spline pase por los puntos de la tabla de
datos (por cada par coordenado). Es decir, se debe cumplir que:
s(3)=2.5, s(4.5)=1, s(7)=2.5 y s(9)=0.5
Teniendo en cuenta lo anterior, se forman las siguientes ecuaciones:
Hasta aqu, se tiene un total de 6 ecuaciones vs. 9 incgnitas. El siguiente paso es manejar
la existencia de las derivadas continuas. En el caso de los splines de grado 2, se necesita
que el spline tenga derivada continua de orden k-1=1, es decir, primera derivada continua.
Se calcula primero la primera derivada:
2a1 x + b1 si x [3,4.5]
S(x) =
{ 2a 2 x + b2 si x [4.5,7 ]
2a3 x + b3 si x [7,9]
}
Se observa que las derivadas anteriores, estn formadas por segmentos de rectas, que
pudieran presentar discontinuidad en los cambios de intervalo. Es decir, las posibles
discontinuidades se daran en x=4.5 y x=7.0 Por lo tanto para que s'(x) sea continua, se
debe cumplir que: 2a1(4.5)+b1=2a2(4.5)+b2, siendo igual a:
S(4.5) { 9a1+b1=9a2+b2 } Ec 7
S(7) { 14a2+b2=14a3+b3 } Ec 8
De esta forma, se tiene un total de 8 ecuaciones vs. 8 incgnitas, siendo las ecuaciones las
siguientes:
3b1 + c1 = 2.5 Ec 1
4.5b1 + c1 = 1 Ec 2
20.25a 2 + 4.5b2 + c 2 = 1 Ec 3
49a 2 + 7b2 + c 2 = 2.5 Ec 4
49a3 + 7b3 + c3 = 2.5 Ec 5
81a3 + 9b3 + c3 = 0.5 Ec 6
b1 9a 2 b2 = 0 Ec 7
14a 2 + b2 14a3 b3 = 0 Ec 8
b1 -1
c1 5.5
a2 0.64
b2 -6.76
c2 18.46
a3 -1.6
b3 24.6
c3 -91.3
Sustituyendo estos valores (junto con a1=0), se obtiene la funcin spline cuadrtica que
interpola la tabla de datos dada:
x + 5.5 si x [3,4.5]
s(x) =
{ .0.64 x 6.76 x + 18.46
2
Fig 4
El mismo ejercicio anterior resuelto por MatLab sera de la siguiente manera
Fig. 5 Fig. 6
haciendo uso de la funcin interp1 de MatLab se puede dar as:
X=[3 4.5 7 9];
Y=[2.5 1 2.5 0.5]
X1=3:0.1:9;
Int1=interp1(X,Y,X1,'spline');
plot(X,Y,X1,Int1,X,Y,'o','MarkerFaceColor','g');
El siguiente caso, que es el ms importante en las aplicaciones, sigue exactamente los
mismos pasos del ejemplo que acabamos de resolver, solamente que en vez de trabajar con
polinomios cuadrticos, lo hace con polinomios cbicos.
Sobre cada intervalo [t 0 , t1 ], [t1 , t 2 ],..., [t n 1 , t n ] , S est definido por un polinomio cbico
diferente. Sea Si el polinomio cbico que representa a S en el intervalo [t i , t i 1 ], por tanto:
S 0 ( x)....x (t 0 , t1 )
S ( x)....x (t , t )
S ( x) = 1 1 2
....
S n 1 ( x)...x (t n1 , t n )
Los polinomios Si-1 y Si interpolan el mismo valor en el punto ti, es decir, se cumple:
Si-1(ti) = yi = Si(ti) 1 i n 1
u1 h1 z1 v1
h1 u2 h2 z
2 2 v
h2 u3 h3 z = v
3 3
hn2
un1 zn2 vn1
En donde:
hi = t i +1 ti
hi21
ui = 2(hi + hi 1 )
ui 1
6
bi = ( yi +1 yi )
hi
h v
vi = bi bi 1 i 1 i 1
ui 1
x x Si(x) a (x)
0.0000 0.0000 0.0000 0.0000E+00
0.0625 0.1426 1.0732E-01
0.1250 0.2782 7.5266E-02
0.1875 0.3997 3.3261E-02
0.2500 0.5000 0.5000 0.0000E+00
0.3125 0.5744 1.5440E-02
0.3750 0.6285 1.6155E-02
0.4375 0.6701 8.6732E-03
x +1
En la Fig 7 se muestra la representacin de la funcin e en el intervalo [0,7].
x=0:0.5:7;
y=exp(x+1);
xx = 0:.25:7;
yy = spline(x,y,xx);
plot(x,y,'o',xx,yy)
xlabel('0 < x < 7')
ylabel('exp(x+1)')
title('Funcion exp(x+1)')
x +1
Figure 7: Representacin de la funcin e . Los crculos representan los valores tabulados
de la funcin y la lnea continua los puntos interpolados mediante una funcin spline cbica.
x=0:pi/7:2*pi;
y=sin(x);
xx = 0:.25:2*pi;
yy = spline(x,y,xx);
plot(x,y,'o',xx,yy)
xlabel('0 < x < 2\pi')
ylabel('sin(x)')
title('Funcion sin(x)')
Figure 8: Representacin de la funcin y=sin(x). Los crculos representan los valores tabulados
de la funcin y la lnea continua los puntos interpolados mediante una funcin spline cbica.
s0 ( x) si x [ x0 , x1 ]
s ( x) si x [ x , x ]
s( x) = 1 1 2
...
s n1 ( x) si x [ xn1 , xn ]
Donde cada si(x) es un polinomio cbico; si(xi)=yi, para toda i=0,1,....,n y tal que s(x)
tiene primera y segunda derivadas continuas en (xo,xn)
A continuacin, Se busca que se cumpla la condicin de que la spline debe pasar por los
puntos dados en la tabla, o sea s(x)=y, as, se tiene que:
3a1x2+2b1x+c1 si x [2,3]
s'(x)= { 3a2x2+2b2x+c2 si x [3,5]
Al igual que en el caso de los splines cuadrticos, se presentan ecuaciones que pueden
tener discontinuidad en los cambios de intervalo; las posibles discontinuidades son los
puntos donde se cambia de intervalo, en este caso x=3. Para evitar esta discontinuidad, se
evala en x=3 los dos polinomios y se igualan de la siguiente manera: 3a1(3)2+2b1(3)+c1=
3a2(3)2+2b2(3)+c2. Siendo igual a:
27a1+6b1+c1=27a2+6b2+c2 Ec 5
De la misma manera se procede con la segunda derivada:
= { 6a2x+2b2 si x [3,5]
Para lograr que s''(x) sea continua en el punto x=3m 6a1(3)+2b1= 6a2(3)+2b2, que
correspondera a:
18a1+2b1= 18a2+2b2 Ec 6
En este punto se cuenta con 6 ecuaciones y 8 incgnitas, por lo tanto se tienen 2 grados
de libertad; en general, se agregan las siguientes 2 condiciones:
s''(xo)=0
s''(xn)=0
De lo cual se obtiene:
s''(2)=0 entonces 6a1(2)+2b1 = 0 :: 12a1+2b1 = 0 Ec 7
s''(5)=0 entonces 6a2(5)+2b2 = 0 :: 30a2+2b2 = 0 Ec. 8
Con lo cual, se ha completado un juego de 8 ecuaciones vs. 8 incgnitas, como sigue:
8a1+ 4b1+2c1+d1 = -1
Fig. 9
Si se agregan las siguientes dos lneas para realizarlo directamente con la funcin spline del
matlab se tendr la siguiente figura:
xx=0:0.1:6;
Int1=interp1(Xi,Yi,xx,spline);
plot(xx,Int1,r);
Fig. 10
a1 = -1.250
b1 = 7.500
c1 = -10.750
d1 = 0.500
a2 = 0.625
b2 = -9.375
c2 = 39.875
d2 = -50.125
Fig. 11
Obsrvese la finura con la que se unen los polinomios cbicos que conforman el spline.
Prcticamente ni se nota que se trata de dos polinomios diferentes!. Esto es debido a las
condiciones que se impusieron sobre las derivadas de la funcin. Esta finura casi artstica,
es la que permite aplicar los splines cbicos, para cuestiones como el diseo de letras por
computadoras, o bien a problemas de aplicacin donde la interpolacin que se necesita es
de un caracter bastante delicado, como podra tratarse de datos mdicos sobre algn tipo
de enfermedad.
Ejemplo 4: Interpolar los siguientes datos utilizando splines cbicos:
x -1 1 2 4
y -1 1 5 -2
Solucin: Nuevamente, se define un polinomio cbico en cada uno de los intervalos:
a1 x 3 + b1 x 2 + c1 x + d 1 , si x [ 1,1]
S ( x) = a2 x 3 + b2 x 2 + c2 x + d 2 , si x [1,2]
a x 3 + b x 2 + c x + d , si x [2,4]
3 3 3 3
Despus, se hace que el Spline pase por los puntos dados en la tabla. As, se tiene que:
s(-1)= -1 implica que, a1 + b1 c1 + d1 = 1
Se nota entonces, que las posibles discontinuidades de s'(x) son x=1 y x=2. Por lo tanto,
para hacer que s'(x) sea continua, se igualan las ecuaciones correspondientes en ambos
valores:
3a1 + 2b1 + c1 = 3a2 + 2b2 + c2
12a2 + 4b2 + c2 = 12a3 + 4b3 + c3
Ahora se procede a calcular la segunda derivada:
6a1 x + 2b1 , si x [ 1,1]
S ``( x) = 6a2 x + 2b2 , si x [1,2]
6a x + 2b , si x [2,4]
3 3
Nuevamente, las posibles discontinuidades se podran dar en los puntos x=1 y x=2. Por lo
tanto, para que s''(x) sea continua, se igualan las ecuaciones en ambos valores:
6a1 + 2b1 = 6a2 + 2b2 3a1 + b1 = 3a2 + b2
12a2 + 2b2 = 12a3 + 2b3 6a2 + b2 = 6a3 + b3
Finalmente, se agregan las condiciones de que la doble derivada se anule en los puntos
inicial y final de la tabla. En este caso,
a1 = 51 , a = 21 , a3 = 24
140 2 10 35
b1 = 153 , b = 297 , b3 = 288
140 2 35 35
, ,
, ,
Fig. 12
Un caso particular
Fig. 13
Como puede observarse, es necesario construir el trazador S(x) que se define como So(x)
en el intervalo [1,3], como S1(x) en el intervalo [3,4] y como S2(x) en el intervalo [4,6],
donde
Adems se define a3 = S 2 ( x3 ) .
En los siguientes pasos se dan condiciones que deben cumplir los coeficientes de los
polinomios cbicos a j , b j , c j , d j , para j=0,1,2
1. Continuidad.
En primer lugar, se pide que So(x) coincida con S1(x) en x1. Adems, S1(x) debe
coincidir con S2(x) en x2. Estas dos condiciones, junto a la definicin que se hizo
antes de que a3 = S 2 ( x3 ) conducir a las tres ecuaciones:
Ec 1
b j +1 = b j + c j h j + 3d j h 2j , para j=0,1,2 Ec 2
4. Coincidencia en concavidad.
Calculando la segunda derivada de cada uno de los polinomios S j ( x) :
S "j ( x) = 2c j + 6d j ( x x j ) Para j=0,1,2
para j=0,1,2. De manera similar a como se hizo en los anteriores casos, se agrega la
definicin de c3 = S ' ' 2 ( x3 ) / 2 , se obtienen las ecuaciones:
Ec 3
Ec 4
h 2j
a j +1 = a j + b j h j + (2c j + c j +1 ) , j=0,1,2 Ec 5
3
b j +1 = b j + (c j + c j 1 )h j , j=0,1,2 Ec 6
7. Despejando b j de la ecuacin 5
Ec 7
Ec 8
10. Al sustituir en esta ltima ecuacin la expresin para bj obtenida en Ec7 y en Ec8, y
haciendo las simplificaciones del caso se obtiene el sistema de ecuaciones:
3 3
11. h j 1c j 1 + 2(h j 1 + h j )c j + h j c j +1 = (a j +1 a j ) (a j a j 1 ) , para j=1,2
hj h j 1
d 0 = 0.1785714
De la ecuacin 4 se calcula: d1 = 0.5
d = 0.0714857
2
b0 = 1.7142857
De la ecuacin 7 se obtiene: b1 = 0.4285714
b = 1.0714285
2
Finalmente, se concluye que el trazador cbico con frontera libre es:
S 0 ( x) = 2 + 1.7142857( x 1) 0.1785714( x 1) 3 si x [1,3]
2 3
S ( x) = S1 ( x) = 4 0.4285714( x 3) 1.0714286( x 3) + 0.5( x 3) si x [3,4]
2 3
S 2 ( x) = 3 1.0714285( x 4) + 0.4285714( x 4) 0.0714857( x 4) si x [4,6]
Fig. 14
El caso general
Para un conjunto de N+1 puntos ( x , y 0 ), ( x1 , y1 ), ( x 2 , y 2 ),..., ( x n , y n ) , en el proceso de
construccin del trazador cbico, se buscan los coeficientes a j , b j , c j y d j , que cumplan
las siguientes relaciones:
1. S j ( x) = a j + b j ( x x j ) + c j ( x x j ) 2 + d j ( x x j ) 3 , para j=0,1,2,n-1
3. h j = x j +1 x j , para j=0,1,2,n-1
1
4. d j = (c j +1 c j ) , para j=0,1,2,n-1
3h j
1 hj
5. b j = (a j +1 a j ) (2c j + c j +1 ) , para j=0,1,2,n-1
hj 3
h j = x j +1 x j
aj = yj
2. an = y n
3. Para j = 0,1,...,n 1 : se define
j =
[
3 a j +1h j 1 a j (h j + h j 1 ) + a j 1h j ]
h j 1h j
4. Se define
io = 1 , 0 = 0 , z 0 = 0 , in = 1 , z n = 0 , cn = 0
5. Para j = 1,2,..., n 1 se define
li = 2(hi + hi 1 ) hi 1 i 1
i = hi / li
zi = ( i hi 1 zi 1 ) / li
6. Para j = n 1, n 1,...,0 se define
c j = z j j c j +1
bj = (a j +1 a j ) / hj hj (c j +1 + 2c j ) / 3
d j = (c j +1 c j ) /(3h j )
En figura 15 puede compararse el trazador cbico con el polinomio interpolante para los
seis puntos. Como puede notarse, el trazador cbico se acomoda mejor a los datos y no
produce oscilaciones indeseables para efecto de hacer extrapolaciones ms apropiadas.
Fig. 15