INTERPOLACIN DE SPLINES
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.
Cabe mencionar que entre todas, las splines cbicas han resultado ser las ms
adecuadas para aplicaciones como la mencionada anteriormente.
As pues, podemos decir de manera informal, que una funcin splines est
formada por varios polinomios, cada uno definido en un intervalo y que se
unen entre si bajo ciertas condiciones de continuidad.
Definicin. (Splines de grado k)
Dada nuestra tabla de datos,
donde suponemos que
n
x x x < < <
1 0
, y dado k un nmero entero
positivo, una funcin de interpolacin splines de grado k, para la tabla de
datos, es una funcin
) (x s
tal que :
i)
i i
y x s ) (
, para toda
n i , , 1 , 0
.
ii)
( ) x s
es un polinomio de grado
k
en cada subintervalo
[ ]
i i
x x ,
1
.
iii)
( ) x s
tiene derivada contnua hasta de orden
1 k
en
[ ]
n
x x ,
0
.
FUNCIONES SPLINES DE GRADO 1
Dados los
1 + n
puntos
Una funcin splines de grado 1 que interpole los datos es simplemente unir
cada uno de los puntos mediante segmentos de recta, como sigue:
Claramente esta funcin cumple con las condiciones de la splines de grado 1.
As, tenemos que para este caso:
( ) [ ]
( ) [ ]
( ) [ ]
'
n n n
x x x si x s
x x x s x s
x x x si x s
x s
,
,
,
) (
1
2 1 2
1 0 1
donde:
i)
( ) x s
j
es un polinomio de grado menor o igual que 1
ii)
( ) x s
tiene derivada continua de orden k-1=0.
iii)
( )
j j
y x s
, para
n j , , 1 , 0
.
Por lo tanto, la splines de grado 1 queda definida como:
( )
[ ]( ) [ ]
[ ]( ) [ ]
[ ]( ) [ ]
'
+
+
+
n n n n n n
x x x si x x x x f y
x x x si x x x x f y
x x x si x x x x f y
x s
, ,
, ,
, ,
1 1 1 1
2 1 1 1 2 1
1 0 0 0 1 0
donde
] , [
j i
x x f
es la diferencia dividida de Newton.
FUNCIONES SPLINES DE GRADO 2
Para aclarar bien la idea, veamos un ejemplo concreto, consideremos los
siguientes datos:
Y procedamos a calcular la interpolacin por splines de grado 2.
Primero que nada, vemos que se forman tres intervalos :
[ ]
[ ]
[ ] 9 , 7
7 , 5 . 4
5 . 4 , 3
En cada uno de estos intervalos, debemos definir una funcin polinomial de
grado 2, como sigue:
( )
[ ]
[ ]
[ ]
'
+ +
+ +
+ +
9 , 7
7 , 5 . 4
5 . 4 , 3
3 3
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 si c x b x a
x s
Primero, hacemos que la spline pase por los puntos de la tabla de datos. Es
decir, se debe cumplir que:
5 . 0 ) 9 ( , 5 . 2 ) 7 ( , 1 ) 5 . 4 ( , 5 . 2 ) 3 ( s s s s
As, se forman las siguientes ecuaciones:
5 . 2 3 9 5 . 2 ) 3 (
1 1 1
+ + c b a s
'
+ +
+ +
1 5 . 4 ) 5 . 4 (
1 5 . 4 ) 5 . 4 (
1 ) 5 . 4 (
2 2 2
2
1 1 1
2
c b a
c b a
s
'
+ +
+ +
5 . 2 7 49
5 . 2 7 49
5 . 2 ) 7 (
3 3 3
2 2 2
c b a
c b a
s
5 . 0 9 81 5 . 0 ) 9 (
3 3 3
+ + c b a s
Hasta aqu, tenemos un total de 6 ecuaciones vs. 9 incgnitas.
El siguiente paso es manejar la existencia de las derivadas contnuas. En el
caso de las splines de grado 2, necesitamos que la spline tenga derivada
contnua de orden k-1=1, es decir, primera derivada continua.
Calculamos primero la primera derivada:
( )
[ ]
[ ]
[ ]
'
+
+
+
9 , 7 2
7 , 5 . 4 2
5 . 4 , 3 2
3 3
2 2
1 1
x si b x a
x si b x a
x si b x a
x s
Vemos que esta derivada est formada por segmentos de rectas, que
pudieran presentar discontinuidad en los cambios de intervalo. Es decir, las
posibles discontinuidades son
5 . 4 x
y
7 x
. Por lo tanto para que
( ) x s
sea contnua, se debe cumplir que:
( ) ( )
2 2 1 1
5 . 4 2 5 . 4 2 b a b a + +
o lo que es lo mismo,
2 2 1 1
9 9 b a b a + +
Tambin debe cumplirse que:
( ) ( )
3 3 2 2
7 2 7 2 b a b a + +
o lo que es lo mismo,
3 3 2 2
14 14 b a b a + +
As, tenemos un total de 8 ecuaciones vs. 9 incognitas; esto nos da un
grado de libertad para elegir alguna de las incgnitas. Elegimos por simple
conveniencia
0
1
a
.
De esta forma, tenemos un total de 8 ecuaciones vs. 8 incgnitas. Estas son
las siguientes:
3 3 2 2
2 2 1
3 3 3
3 3 3
2 2 2
2 2 2
1 1
1 1
14 14
9
5 . 0 9 81
5 . 2 7 49
5 . 2 7 49
1 5 . 4 25 . 20
1 5 . 4
5 . 2 3
b a b a
b a b
c b a
c b a
c b a
c b a
c b
c b
+ +
+
+ +
+ +
+ +
+ +
+
+
Este sistema de ecuaciones tiene la siguiente forma matricial:
1
1
1
1
1
1
1
1
1
1
1
]
1
1
1
1
1
1
1
1
1
1
1
1
]
1
1
1
1
1
1
1
1
1
1
1
1
]
1
0
0
5 . 0
5 . 2
5 . 2
1
1
5 . 2
0 1 14 0 1 14 0 0
0 0 0 0 1 9 0 1
1 9 81 0 0 0 0 0
1 7 49 0 0 0 0 0
0 0 0 1 7 49 0 0
0 0 0 1 5 . 4 25 . 20 0 0
0 0 0 0 0 0 1 5 . 4
0 0 0 0 0 0 1 3
3
3
3
2
2
2
1
1
c
b
a
c
b
a
c
b
Usando MathLab se obtiene la siguiente solucin:
3 . 91
6 . 24
6 . 1
46 . 18
76 . 6
64 . 0
5 . 5
1
3
3
3
2
2
2
1
1
c
b
a
c
b
a
c
b
Sustituyendo estos valores (junto con
0
1
a
), obtenemos la funcin spline
cuadrtica que interpola la tabla de datos dada:
( )
[ ]
[ ]
[ ]
'
+
+
+
9 , 7 3 . 91 6 . 24 6 . 1
7 , 5 . 4 46 . 18 76 . 6 64 . 0
5 . 4 , 3 5 . 5
2
2
x si x x
x si x x
x si x
x s
La grfica que se muestra a continuacin, contiene tanto los puntos iniciales
de la tabla de datos, as como la spline cuadrtica. Esta grfica se gener
usando MathLab:
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.
3 4.5 7 9
-1
1
2
3
4
5
FUNCIONES SPLINES CUBICAS
Para hacer ms firme el entendimiento, escribimos la definicin
correspondiente a este caso (k=3).
Dados los
1 + n
datos:
Una spline cbica que interpola estos datos, es una funcin
) (x s
definida
como sigue :
( )
( ) [ ]
( ) [ ]
( ) [ ]
'
n n n
x x x si x s
x x x si x s
x x x si x s
x s
,
,
,
1 1
2 1 1
1 0 0
donde cada
( ) x s
i
es un polinomio cbico;
( )
i i i
y x s
, para toda
n i , , 1 , 0
y
tal que
( ) x s
tiene primera y segunda derivadas contnuas en
[ ]
n
x x ,
0
.
Ejemplo 1.
Interpolar los siguientes datos mediante una spline cbica :
Solucin.
Definimos un polinomio cbico en cada uno de los intervalos que se forman:
( )
[ ]
[ ]
'
+ + +
+ + +
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
A continuacin, hacemos que se cumpla la condicin de que la spline debe
pasar por los puntos dados en la tabla. As, tenemos que:
( ) 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
Ahora calculamos la primera derivada de
( ) x s
:
( )
[ ]
[ ]
'
+ +
+ +
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
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
3 x
. Para evitar esta discontinuidad, evaluamos
3 x
en los dos polinomios
e igualamos:
( ) ( ) ( ) ( )
2 2
2
2 1 1
2
1
3 2 3 3 3 2 3 3 c b a c b a + + + +
o lo que es lo mismo:
2 2 2 1 1 1
6 27 6 27 c b a c b a + + + +
Anlogamenete procedemos con la segunda derivada :
( )
[ ]
[ ]
'
+
+
5 , 3 2 6
3 , 2 2 6
2 2
1 1
x si b x a
x si b x a
x s
Para lograr que
( ) x s
sea continua :
( ) ( )
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 + +
En este punto contamos con 6 ecuaciones y 8 incognitas, por lo tanto
tenemos 2 grados de libertad; en general, se agregan las siguientes 2
condiciones:
( )
( ) 0
0
0
n
x s
x s
De lo cual vamos a obtener :
( ) ( ) 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
Con lo cual, hemos completado un juego de 8 ecuaciones vs. 8 incgnitas, el
cual es el siguiente:
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
Cuya forma matricial es la siguiente :
1
1
1
1
1
1
1
1
1
1
1
]
1
1
1
1
1
1
1
1
1
1
1
1
]
1
1
1
1
1
1
1
1
1
1
1
1
]
1
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
Usando MathLab, obtenemos la siguiente solucin:
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
Sustituyendo estos valores en nuestra funcin inicial, vemos que la spline
cbica para la tabla de datos dada, queda definida como sigue:
( )
[ ]
[ ]
'
+
+ +
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
Mostramos la grfica correspondiente a este ejercicio, creada tambien en
MatLab.
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
caracter bastante delicado, como podra tratarse de datos mdicos sobre algn
tipo de enfermedad.
Ejemplo 2.
Interpolar los siguientes datos utilizando splines cbicas:
Solucin.
Nuevamente, definimos un polinomio cbico en cada uno de los intervalos:
[ ]
[ ]
[ ]
'
+ + +
+ + +
+ + +
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
Despues, hacemos que la spline pase por los puntos dados en la tabla. As,
tenemos que:
1 ) 1 ( s
implica que,
1
1 1 1 1
+ + d c b a
1 ) 1 ( s
implica que,
1
1 1 1 1
+ + + d c b a
1
2 2 2 2
+ + + d c b a
5 ) 2 ( s
implica que,
5 2 4 8
2 2 2 2
+ + + d c b a
5 2 4 8
3 3 3 3
+ + + d c b a
Y finalmente
2 ) 4 ( s
implica que,
2 4 16 64
3 3 3 3
+ + + d c b a
Enseguida, calculamos la primera derivada:
[ ]
[ ]
[ ]
'
+ +
+ +
+ +
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
Vemos entonces, que las posibles discontinuidades de
) (x s
son
1 x
y
2 x
. Por lo tanto, para hacer que
) (x s
sea contnua, igualamos las
ecuaciones correspondientes en ambos valores :
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 + + + +
Ahora procedemos a calcular la segunda derivada:
[ ]
[ ]
[ ]
'
+
+
+
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
Nuevamente, las posibles discontinuidades son
1 x
y
2 x
. Por lo tanto,
para que
) (x s
sea contnua , se igualan las ecuaciones en ambos valores :
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 + + + +
Finalmente, se agregan las condiciones de que la doble derivada se anule en
los puntos inicial y final de la tabla. En este caso,
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
Con esto tenemos un juego de doce ecuaciones vs. doce incgnitas:
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 + + + +
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
Este sistema tiene la siguiente forma matricial:
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
]
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
]
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
]
1
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
Usando MathLab, obtenemos la solucin :
140
51
1
a
,
10
21
2
a
,
35
24
3
a
140
153
1
b
,
35
297
2
b
,
35
288
3
b
140
89
1
c
,
70
473
2
c
,
70
1867
3
c
40
153
1
d
,
35
48
2
d
,
35
732
3
d
Por lo tanto, la spline cbica es:
[ ]
[ ]
[ ]
'
+
+ +
+ +
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
Finalmente, mostramos la grfica correspondiente:
-1 1 2 4
-2
2
4
6
8