Pgina 1
Aproximacin mediante splines cbicos
El origen del concepto spline proviene del uso de una lmina de plstico delgada
llamada curvgrafo ("spline") en el trazado de curvas suaves a travs de un
conjunto de puntos (Sheid 1991).Las funciones "spline" son ecuaciones cbicas
que modelan el comportamiento de las curvas realizadas por dicho instrumento,
permitiendo unir en forma suave y continua una serie de puntos.
Esta interpolacin se llama interpolacin segmentaria o interpolacin por splines.
La idea central es que en vez de usar un solo polinomio para interpolar los datos,
podemos usar segmentos de polinomios y unirlos adecuadamente para formar
nuestra interpolacin , esta interpolacin posee una gran finura, y que inclusive
es usado para el diseo por computadora, por ejemplo, de tipos de letra.
La ms populares son los polinomios cbicos por tramos y en especial los splines
cbicos (naturales), por las siguientes razones:
Son fciles de calcular y evaluar.
Son fciles de derivar y sus derivadas aproximan a las derivadas de fx.
Son fciles de integrar y se usan para aproximar la integral de fx.
Modelan con suavidad la tendencia de un conjunto de datos.
1, Breve historia
Tomado de NA. Digest.v.98,#s6. 19 de julio de 1998.Mait to na.digest@na-
net.oml.gov Information about NA-NET:Mail to nahelp@na-net.ornl.gov URL :
http://www.netlib.org/na-net/na_home.html
Hace dos semanas puse aqu una pregunta acerca de las conexiones entre el
desarrollo de aproximaciones de splines y el diseo de cuerpos automotores, y
recib cerca de 30 respuestas, todas ellas muy informativas. Dado que muchos de
ellos me pidieron que mostrara lo que haba aprendido, decid escribir un breve
resumen y subirlo al compendio. Esta es la razn de estas notas.
Se acepta comnmente que la primera referencia matemtica de los splines es el
trabajo de Schoenberg [s], donde probablemente fue el primer lugar donde el
trmino spline se us en conexin con la aproximacin polinomial tenue por
piezas. Sin embargo, estas ideas tienen sus races en las industrias de aviacin y
Construccin de barcos. En el reenvio a [BBB], Robin Forrest describe el
localizar, una tcnica en la industria britnica de aviacin usada durante la
Segunda Guerra Mundial, para construir plantillas para aviones, pasando tablones
de madera delgadas a travs de puntos en el suelo de un local de diseo grande.
Splines Cbicos Mtodos Numricos
Pgina 2
Las plantillas estaran puestas en puntos discretos (llamados patos por Forrest;
Schoenberg usa perros o ratas) y entre estos puntos asumira formas de un
mnimo de energa de tensin. De acuerdo a Forrest, una motivacin posible para
un modelo matemtico de este proceso fue la pedida potencial de los
componentes del diseo crticos en toda una nave si el local fuera bombardeado
por el enemigo. Esto promovi el localizamiento cnico, el cual usaba secciones
cnicas para modelar la posicin de la curva entre los patos. El localizamiento
cnico fue reemplazado por lo que llamaramos splines a principios de los 60s
basados en el trabajo de J.C.Ferguson de Boeing y (tiempo despus) por
M.A.Sabin de British Aircraft. Lo que considero muy interesante es que Forrest
dice que la palabra spline viene de un dialecto Anglicano del Este.
El uso de splines para modelar cuerpos automotores parece tener un sinfn de
comienzos independientes. El crdito lo piden a nombre de De Castelau de
Citroen, Bezler de Renault, and Birkhoff, Garabedian, y de Boor de General Mortos
(GM), todos ellos por sus trabajos realizados a finales de la dcada de 1950s o
principios de los aos 1960s. Al menos uno de los trabajos de De Casteljau fue
publicado, pero no ampliamente, en 1959. La obra de D Boor de GM result en un
conjunto de escritos siendo publicados a principios de los 60s, incluyendo algo del
trabajo fundamental sobre los B-splines. El trabajo tambin fue hecho en Pratt
yThitney Aircfraft, donde dos de los autores de [ANw] (el primer libro en s acerca
de splines) fueron contratados, y el Modelo Basin de David Taylor, hecho por
Feodor Theilheimer
Referencias
[anw] Ahlberg, Nielson and Wash, The Theory of splines and Theri applications,
1967
[B] Birkhoff. Fluid dynamics, reactor computations and surface representation. In
a History of Scientific Computation (Steve Nash, editor), 1990
[BBB] Bartelsm Beatty and Barsky, an introduction to Splines for use in Computer
Graphics and Geometric Modeling 1987
[BdB] Birkhof and de Boor, Piecewise polynomial interpolation and approximation
Proc. General Motors Symposium of 1964
[D] Davis . B-splines and Geometric design . SIAM news vol.29 no, 5
[S] Schoenberg. contributions to the problem of approximation of equidistant data
by analytic functions Quart appl math. Vol. 4
[Y] Young. Garrtett Dirkhoff and applled mathematics. Notices of the AMS, vol.44
Splines Cbicos Mtodos Numricos
Pgina 3
2. Teora Matemtica
Los polinomios de grado mayor tienen naturaleza oscilatoria y fluctuaciones sobre
una porcin pequea del intervalo estudiado puede inducir cambios muy grandes
sobre un rango considerable, restringen el uso cuando se aproximan muchas
delas funciones en situaciones fsicas reales.
La tcnica llamada aproximacin polinmica segmentaria busca resolver este
problema dividiendo el intervalo de la funcin f
en una coleccin de subintervalos y construir polinomios aproximadamente
diferentes en cada uno.
La aproximacin de este tipo ms empleada es la interpolacin cbica de spline
Esta tcnica requiere que en el intervalo el polinomio sea diferenciable
continuamente y que adems tenga segunda derivada. Pero a pesar de esta
condicin, el trazador cbico no supone que las derivadas del interpolante
coinciden con las de la funcin.
A esta forma de aproximar se le conoce como aproximacin polinomial
fragmentaria.
Aproximacin polinomial fragmentaria.
La Aproximacin polinomial fragmentaria es la interpolacin lineal fragmentaria
que consiste en unir una serie de puntos.
Mediante una serie de segmentos de recta, como se aprecia en la figura 3.7
La aproximacin por funciones lineales muestra una desventaja; no se tiene la
seguridad de que haya derivabilidad en los extremos de los subintervalos, lo cual
dentro de un contexto geomtrico significa que la funcin de interpolacin o
interpolante no es suave en dichos puntos. A menudo las condiciones fsicas
indican claramente que se requiere la suavidad y que la funcin aproximante debe
ser continuamente derivable.
Otro procedimiento consiste en emplear un polinomio fragmentario del tipo
Hermite. Por ejemplo, si los valores de y de
] [
] [
].
Splines Cbicos Mtodos Numricos
Pgina 4
Si queremos determinar el polinomio cbico de Hermite apropiado en determinado
intervalo, hasta calcular
y en
; y as sucesivamente. Un
polinomio cuadrtico general tiene tres constantes arbitrarias: el trmino
constante, el coeficiente de x y el coeficiente de
]. El problema de este
procedimiento se presenta cuando hay que especificar las condiciones referentes
a la derivada de la interpolante en los extremos
(),el subintervalo [
] para
cada ;
b. (
) (
) para cada ;
c.
) para cada ;
d.
) para cada
e.
) para cada
f. Una de las siguientes condiciones de frontera se satisface:
(i)
) y
) (frontera sujeta).
Splines Cbicos Mtodos Numricos
Pgina 6
Aunque los splines cbicos se definen con otras condiciones de frontera, las
condiciones dadas en () son suficientes en este caso. Cuando se presentan las
condiciones de frontera libre, el trazador recibe el nombre de spline natural y su
grfica se aproxima a la forma que adoptara una varilla larga y flexible si la
hiciramos pasar por los puntos {(
)) (
)) (
))}
En trminos generales, en las condiciones de frontera sujeta se logran
aproximaciones ms exactas, ya que abarcan ms informacin acerca de la
funcin. Pero para que se cumpla este tipo de condicin de frontera, se requiere
tener los valores de la derivada en los extremos o bien una aproximacin precisa
de ellos.
Construccin de un spline cbico
Para construir la interpolante de spline cbico de determinada funcin ,
aplicamos las condiciones de la definicin a los polinomios cbicos:
()
,
Para cada . Como
) puede aplicarse la
condicin (c) para obtener
Para cada
Los trminos
Para cada . Si tambin definimos
) entonces la
ecuacin
(I)
Ser vlida para cada
De manera anloga, defina
) y observe que
Splines Cbicos Mtodos Numricos
Pgina 7
Significa que
(III)
Al despejar
(VI)
Y luego, con una reduccin del ndice, para
es decir, una
interpolante de spline que cumple con las condiciones de frontera
() y
()
Demostracin. En este caso las condiciones de frontera significan que
) y que
),
as que
()
() y
()
() .Estas son:
()
()
()
()
Las ltimas dos surgen de las condiciones de frontera natural:
()
()
Splines Cbicos Mtodos Numricos
Pgina 12
Resolviendo este sistema de ecuaciones tenemos el spline.
2) Interpolar los siguientes datos mediante una spline cbica:
X 2 9 5
Y -1 2 -7
Solucin.
Definimos un polinomio cbico en cada uno de los intervalos que se forman:
A continuacin, hacemos que se cumpla la condicin de que la spline debe
pasar por los puntos dados en la tabla. As, tenemos que:
( )
| |
| |
e + + +
e + + +
=
5 , 3
3 , 2
2 2
2
2
3
2
1 1
2
1
3
1
x si d x c x b x a
x si d x c x b x a
x s
( ) 1 2 4 8 1 2
1 1 1 1
= + + + = d c b a s
( ) 2 3 9 27 2 3
1 1 1 1
= + + + = d c b a s
( ) 7 5 25 125 7 5
2 2 2 2
= + + + = d c b a s
Splines Cbicos Mtodos Numricos
Pgina 13
Ahora calculamos la primera derivada de :
Al igual que en el caso de las splines cuadrticas, se presentan ecuaciones que
pueden presentar discontinuidad en los cambios de intervalo; las posibles
discontinuidades son los puntos donde se cambia de intervalo, en este caso
. Para evitar esta discontinuidad, evaluamos en los dos polinomios e
igualamos:
o lo que es lo mismo:
Anlogamente procedemos con la segunda derivada :
Para lograr que sea continua:
( ) x s
( )
| |
| |
e + +
e + +
= '
5 , 3 2 3
3 , 2 2 3
2 2
2
2
1 1
2
1
x si c x b x a
x si c x b x a
x s
3 = x
3 = x
( ) ( ) ( ) ( )
2 2
2
2 1 1
2
1
3 2 3 3 3 2 3 3 c b a c b a + + = + +
2 2 2 1 1 1
6 27 6 27 c b a c b a + + = + +
( )
| |
| |
e +
e +
= ' '
5 , 3 2 6
3 , 2 2 6
2 2
1 1
x si b x a
x si b x a
x s
( ) x s ' '
( ) ( )
2 2 1 1
2 3 6 2 3 6 b a b a + = +
2 2 1 1
2 18 2 18 b a b a + = +
Splines Cbicos Mtodos Numricos
Pgina 14
En este punto contamos con 6 ecuaciones y 8 incgnitas, por lo tanto
tenemos 2 grados de libertad; en general, se agregan las siguientes 2
condiciones:
De lo cual vamos a obtener:
Con lo cual, hemos completado un juego de 8 ecuaciones vs. 8 incgnitas, el
cual es el siguiente:
( )
( ) 0
0
0
= ' '
= ' '
n
x s
x s
( ) ( ) 0 2 2 6 0 2
1 1
= + = ' ' b a s
0 2 12
1 1
= + b a
( ) ( ) 0 2 5 6 0 5
2 2
= + = ' ' b a s
0 2 30
2 2
= + b a
0 2 30
0 2 12
2 18 2 18
6 27 6 27
7 5 25 125
2 3 9 27
2 3 9 27
1 2 4 8
2 2
1 1
2 2 1 1
2 2 2 1 1 1
2 2 2 2
2 2 2 2
1 1 1 1
1 1 1 1
= +
= +
+ = +
+ + = + +
= + + +
= + + +
= + + +
= + + +
b a
b a
b a b a
c b a c b a
d c b a
d c b a
d c b a
d c b a
Splines Cbicos Mtodos Numricos
Pgina 15
Cuya forma matricial es la siguiente:
Usando Mathematica, obtenemos la siguiente solucin:
Sustituyendo estos valores en nuestra funcin inicial, vemos que la spline cbica
para la tabla de datos dada, queda definida como sigue:
(
(
(
(
(
(
(
(
(
(
(
=
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
0
0
0
0
7
2
2
1
0 0 2 30 0 0 0 0
0 0 0 0 0 0 2 12
0 0 2 18 0 0 2 18
0 1 6 27 0 1 6 27
1 5 25 125 0 0 0 0
1 3 9 27 0 0 0 0
0 0 0 0 1 3 9 27
0 0 0 0 1 2 4 8
2
2
2
2
1
1
1
1
d
c
b
a
d
c
b
a
125 . 50
875 . 39
375 . 9
625 . 0
5 . 0
75 . 10
5 . 7
25 . 1
2
2
2
2
1
1
1
1
=
=
=
=
=
=
=
=
d
c
b
a
d
c
b
a
( )
| |
| |
e +
e + +
=
5 , 3 125 . 50 875 . 39 375 . 9 625 . 0
3 , 2 5 . 0 75 . 10 5 . 7 25 . 1
2 3
2 3
x si x x x
x si x x x
x s
Splines Cbicos Mtodos Numricos
Pgina 16
Mostramos la grfica correspondiente a este ejercicio, creada tambin en
Mathematica.
Obsrvese la finura con la que se unen los polinomios cbicos que conforman a
la 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 las splines cbicas, para
cuestiones como el diseo de letras por computadoras, o bien a problemas de
aplicacin donde la interpolacin que se necesita es de un carcter bastante
delicado, como podra tratarse de datos mdicos sobre algn tipo de enfermedad.
Splines Cbicos Mtodos Numricos
Pgina 17
3) Interpolar los siguientes datos utilizando splines cbicas:
x -1 1 2 4
y -1 1 5 -2
Solucin.
Nuevamente, definimos un polinomio cbico en cada uno de los intervalos:
Despus, hacemos que la spline pase por los puntos dados en la tabla. As,
tenemos que:
Implica que,
Implica que,
Implica que,
| |
| |
| |
e + + +
e + + +
e + + +
=
4 , 2
2 , 1
1 , 1
) (
3 3
2
3
3
3
2 2
2
2
3
2
1 1
2
1
3
1
x si d c x b x a
x si d x c x b x a
x si d x c x b x a
x s
1 ) 1 ( = s
1
1 1 1 1
= + + d c b a
1 ) 1 ( = s
1
1 1 1 1
= + + + d c b a
1
2 2 2 2
= + + + d c b a
5 ) 2 ( = s
5 2 4 8
2 2 2 2
= + + + d c b a
5 2 4 8
3 3 3 3
= + + + d c b a
Splines Cbicos Mtodos Numricos
Pgina 18
Y finalmente implica que,
Enseguida, calculamos la primera derivada:
Vemos entonces, que las posibles discontinuidades de son y .
Por lo tanto, para hacer que sea continua, igualamos las ecuaciones
correspondientes en ambos valores:
Ahora procedemos a calcular la segunda derivada:
2 ) 4 ( = s
2 4 16 64
3 3 3 3
= + + + d c b a
| |
| |
| |
e + +
e + +
e + +
= '
4 , 2 2 3
2 , 1 2 3
1 , 1 2 3
) (
3 3
2
3
2 2
2
2
1 1 1
2
1
x si c x b x a
x si c x b x a
x si c x b x a
x s
) (x s'
1 = x 2 = x
) (x s'
2 2 2 1 1 1
2 3 2 3 c b a c b a + + = + +
3 3 3 2 2 2
4 12 4 12 c b a c b a + + = + +
| |
| |
| |
e +
e +
e +
= ' '
4 , 2 2 6
2 , 1 2 6
1 , 1 2 6
) (
3 3
2 2
1 1
x si b x a
x si b x a
x si b x a
x s
Splines Cbicos Mtodos Numricos
Pgina 19
Nuevamente, las posibles discontinuidades son y . Por lo tanto, para
que sea continua, se igualan las ecuaciones en ambos valores:
Finalmente, se agregan las condiciones de que la doble derivada se anule en los
puntos inicial y final de la tabla.
En este caso,
Con esto tenemos un juego de doce ecuaciones vs. Doce incgnitas:
1 = x 2 = x
) (x s' '
2 2 1 1 2 2 1 1
3 3 2 6 2 6 b a b a b a b a + = + + = +
3 3 2 2 3 3 2 2
6 6 2 12 2 12 b a b a b a b a + = + + = +
0 3 0 2 6 0 ) 1 (
1 1 1 1
= + = + = ' ' b a b a s
0 12 0 2 24 0 ) 4 (
3 3 3 3
= + = + = ' ' b a b a s
1
1 1 1 1
= + + d c b a
1
1 1 1 1
= + + + d c b a
1
2 2 2 2
= + + + d c b a
5 2 4 8
2 2 2 2
= + + + d c b a
5 2 4 8
3 3 3 3
= + + + d c b a
2 4 16 64
3 3 3 3
= + + + d c b a
2 2 2 1 1 1
2 3 2 3 c b a c b a + + = + +
3 3 3 2 2 2
4 12 4 12 c b a c b a + + = + +
Splines Cbicos Mtodos Numricos
Pgina 20
Este sistema tiene la siguiente forma matricial:
Usando Mathematica, obtenemos la solucin:
, ,
, ,
2 2 1 1
3 3 b a b a + = +
3 3 2 2
6 6 b a b a + = +
0 3
1 1
= + b a
0 12
3 3
= +b a
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
=
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
0
0
0
0
0
0
2
5
5
1
1
1
0 0 1 12 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 3
0 0 1 6 0 0 1 6 0 0 0 0
0 0 0 0 0 0 1 3 0 0 1 3
0 1 4 12 0 1 4 12 0 0 0 0
0 0 0 0 0 1 2 3 0 1 2 3
1 4 16 64 0 0 0 0 0 0 0 0
1 2 4 8 0 0 0 0 0 0 0 0
0 0 0 0 1 2 4 8 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 0 1 1 1 1
3
3
3
3
2
2
2
2
1
1
1
1
d
c
b
a
d
c
b
a
d
c
b
a
140
51
1
= a
10
21
2
= a
35
24
3
= a
140
153
1
= b
35
297
2
= b
35
288
3
= b
Splines Cbicos Mtodos Numricos
Pgina 21
, ,
, ,
Por lo tanto, la spline cbica es:
Finalmente, mostramos la grfica correspondiente (creada en Mathematica):
140
89
1
= c
70
473
2
= c
70
1867
3
= c
40
153
1
= d
35
48
2
= d
35
732
3
= d
| |
| |
| |
e +
e + +
e + +
=
4 , 2
2 , 1
1 , 1
) (
35
732
70
1867
2
35
288
3
35
24
35
48
70
473
2
35
297
3
10
21
40
153
140
89
2
140
153
3
140
51
x si x x x
x si x x x
x si x x x
x s
-1 1 2 4
-2
2
4
6
8
Splines Cbicos Mtodos Numricos
Pgina 22
4. Algoritmos
El spline cubico natural. Matlab, por defecto, calcula splines cbicos con la
condicin not-a-knot, que es cierta relacin entre derivadas en los puntos
extremos y los inmediatos. Solo se pueden calcular splines naturales con un
toolbox. El cdigo que sigue implementa el clculo del spline cubico natural de una
coleccin de puntos.
La entrada
es:
x: la lista de las coordenadas x de los puntos
y: la lista de las coordenadas y de los puntos
Devuelve un objeto" de Matlab que se denomina polinomio a trozos, que describe
exactamente un objeto polinomial definido a trozos: los intervalos en los que est
definido vienen dados por el vector x y su valor en un t (que hay que computar
utilizando la funcin ppval)
% spline cubico 'natural ': en ambos extremos , la
% derivada segunda es 0.
% la entrada es una nube de puntos con al menos
% dos puntos
function [f] = spline_cubico (x, y)
n = length (x) -1;
if(n <=1 | length (x) ~= length (y))
8 warning ('Wrong data ')
f= [];
return
end
breaks = x;
a = y (1:n);
h = diff (x);
F = zeros (n);
alpha = zeros (n, 1);
for i=1:n
18 if(i> 1& i < n)
F(i ,[i -1 i i +1]) = [h(i -1) , 2*( h(i -1) + h(i)), h(i)] ;
alpha (i) = 3*( y(i+1) -y(i))/h(i) - 3*( y(i) - y(i -1) )/h(i -1) ;
else
F(i,i) = 1;
alpha (i) = 0;
end
i=i +1;
end
c = (F\ alpha ) ';
28 b = zeros (1,n);
d = zeros (1,n);
i = 1;
while (i<n)
Splines Cbicos Mtodos Numricos
Pgina 23
while (i<n)
b(i) = (y(i +1) -y(i))/h(i) - h(i) *(c(i +1) +2* c(i)) /3;
i=i +1;
end
d (1:n -1) = diff (c) ./(3* h(1:n -1) );
b(n) = b(n -1) + h(n -1) *(c(n)+c(n -1) );
d(n) = (y(n +1) -y(n)-b(n)*h(n)-c(n)*h(n) ^2) /h(n) ^3;
38 f = mkpp (x ,[d; c; b ;a ]');
end
Un ejemplo de uso podra ser el siguiente, para comparar el spline cbico con la
grfica de la funcin seno:
> x = linspace (-pi , pi , 10) ;
> y = sin (x);
> f = spline_cubico (x, y);
> u = linspace (-pi , pi , 400) ;
% Lagrange interpolation polynomial
% A single base polynomial is computed at
% each step and then added ( multiplied by
4 % its coefficient ) to the final result .
% input is a vector of x coordinates and
% a vector (of equal length ) of y coordinates
% output is a polynomial in vector form ( help poly ).
function [l] = lagrange (x,y)
n = length (x);
l = 0;
for m=1:n
b = poly (x ([1:m -1 m +1: n]));
c = prod (x(m)-x ([1:m -1 m +1: n]));
14 l = l + y(m) * b/c;
end