Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Interpolacion Con Splines PDF
Interpolacion Con Splines PDF
donde suponemos que x0 < x1 < L < x n , y dado k un nmero entero positivo, una funcin de
interpolacin spline de grado k, para la tabla de datos, es una funcin S (x ) tal que :
Una funcin spline de grado 1 que interpole los datos es simplemente unir cada uno de los puntos
mediante segmentos de recta, como sigue:
1
Ing. Adriana M. Apaza JTP Clculo Numrico
Clculo Numrico Programacin Aplicada
Claramente esta funcin cumple con las condiciones de la spline de grado 1. As, tenemos que para este
caso:
s1 ( x ) si x [x0 , x1 ]
s ( x ) s x [x1 , x2 ]
s( x) = 2
M
sn ( x ) si x [xn 1 , xn ]
donde:
i) S j (x) es un polinomio de grado menor o igual que 1
ii) S (x ) tiene derivada continua de orden k-1=0.
y0 + f [x1 , x0 ]( x x0 ) si x [x0 , x1 ]
y + f [x , x ]( x x ) x [x1 , x2 ]
si
s( x ) = 1 2 1 1
M
yn 1 + f [xn , xn 1 ]( x xn 1 ) si x [xn 1 , xn ]
Primero que nada, vemos que se forman tres intervalos: [3, 4.5], [4.5, 7], [7, 9]
En cada uno de estos intervalos, debemos definir una funcin polinomial de grado 2, como sigue:
a1 x 2 + b1 x + c1 si x [3,4.5]
s( x ) = a2 x 2 + b2 x + c2 si x [4.5,7 ]
a x2 + b x + c
3 3 3 si x [7,9]
Hacemos que la spline pase por los puntos de la tabla de datos, es decir, se debe cumplir que:
2
Ing. Adriana M. Apaza JTP Clculo Numrico
Clculo Numrico Programacin Aplicada
49 a2 + 7b2 + c2 = 2.5
s ( 7 ) = 2.5
49a3 + 7b3 + c3 = 2.5
s (9) = 0.5 81a3 + 9b3 + c3 = 0.5
Hasta aqu, tenemos un total de 6 ecuaciones con 9 incgnitas.
El siguiente paso es manejar la existencia de las derivadas continuas. En el caso de las splines de grado
2, necesitamos que la spline tenga derivada continua de orden k-1=1, es decir, primera derivada
continua.
Calculamos primero la primera derivada:
2a1 x + b1 si x [3,4.5]
s( x ) = 2a2 x + b2 si x [4.5,7]
2a x + b
3 3 si x [7,9]
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 x = 4.5 y x = 7 . Por lo tanto
para que s (x) sea continua, se debe cumplir que:
3
Ing. Adriana M. Apaza JTP Clculo Numrico
Clculo Numrico Programacin Aplicada
3 1 0 0 0 0 0 0 b1 2.5
4 .5
1 0 0 0 0 0 0 c1 1
0 0 20.25 4.5 1 0 0 0 a2 1
0 0 49 7 1 0 0 0 b2 2.5
=
0 0 0 0 0 49 7 1 c2 2.5
0 0 0 0 0 81 9 1 a3 0.5
1 0 9 1 0 0 0 0 b3 0
0 0 14 1 0 14 1 0 c3 0
Se obtiene la siguiente solucin:
a 2 = 0.64 a 3 = 1.6
b1 = 1
b2 = 6.76 b3 = 24.6
c1 = 5.5
c 2 = 18.46 c3 = 91.3
Sustituyendo estos valores (junto con a1 = 0 ), obtenemos 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 si x [4.5,7]
2
3 4.5 7 9
-1
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.
FUNCIONES SPLINES CUBICAS
Dados n + 1 datos:
4
Ing. Adriana M. Apaza JTP Clculo Numrico
Clculo Numrico Programacin Aplicada
Una spline cbica que interpola estos datos, es una funcin S (x ) definida como sigue:
s0 ( x ) si x [x0 , x1 ]
s ( x ) si x [x1 , x2 ]
s(x ) = 1
M
sn 1 ( x ) si x [xn 1 , xn ]
donde cada si ( x) es un polinomio cbico; si ( xi ) = y i , para toda i = 0,1,..., n y tal que s (x) tiene
primera y segunda derivadas continuas en [x 0 , x n ] .
Ejemplo 1.
Interpolar los siguientes datos mediante una spline cbica:
Solucin.
Definimos un polinomio cbico en cada uno de los intervalos que se forman:
a1 x 3 + b1 x 2 + c1 x + d1 si x [2,3]
s (x ) = 3
a2 x + b2 x + c2 x + d 2
2
si x [3,5]
A continuacin, hacemos que se cumpla la condicin de que la spline debe pasar por los puntos dados
en la tabla. As, tenemos que:
3a x 2 + 2b1 x + c1 si x [2,3]
s ( x ) = 1 2
3a 2 x + 2b2 x + c 2 si x [3,5]
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 x = 3 . Para evitar esta discontinuidad, evaluamos x = 3 en los dos
polinomios e igualamos:
3a1 (3) 2 + 2b1 (3) + c1 = 3a 2 (3) 2 + 2b2 (3) + c 2 27a1 + 6b1 + c1 = 27a 2 + 6b2 + c 2
Anlogamente procedemos con la segunda derivada:
6 a x + 2b1 si x [2,3]
s ( x ) = 1
6 a 2 x + 2b2 si x [3,5]
5
Ing. Adriana M. Apaza JTP Clculo Numrico
Clculo Numrico Programacin Aplicada
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:
s ( x 0 ) = 0
s ( x n ) = 0
De lo cual vamos a obtener:
8 4 2 1 0 0 0 0 a1 1
27
9 3 1 0 0 0 0 b1 2
0 0 0 0 27 9 3 1 c1 2
0 0 0 0 125 25 5 1 d1 7
=
27 6 1 0 27 6 1 0 a2 0
18 2 0 0 18 2 0 0 b2 0
12 2 0 0 0 0 0 0 c2 0
0 0 0 0 30 2 0 0 d 2 0
Obtenemos la siguiente solucin:
a1 = 1.25 a 2 = 0.625
b1 = 7.5 b2 = 9.375
c1 = 10.75 c 2 = 39.875
d 1 = 0 .5 d 2 = 50.125
Sustituyendo estos valores en nuestra funcin inicial, vemos que la spline cbica para la tabla de datos
dada, queda definida como sigue:
6
Ing. Adriana M. Apaza JTP Clculo Numrico
Clculo Numrico Programacin Aplicada
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.
Ejemplo 2.
Interpolar los siguientes datos utilizando splines cbicas:
Solucin.
Nuevamente, definimos un polinomio cbico en cada uno de los intervalos:
a1 x 3 + b1 x 2 + c1 x + d1 si x [ 1,1]
s ( x ) = a2 x 3 + b2 x 2 + c2 x + d 2 si x [1,2]
a x3 + b x 2 + c + d
3 3 3 3 si x [2,4]
Despus, hacemos que la spline pase por los puntos dados en la tabla. As, tenemos que:
s ( 1) = 1 implica que, a1 + b1 c1 + d1 = 1
s (1) = 1 implica que,
a1 + b1 + c1 + d1 = 1
a 2 + b2 + c 2 + d 2 = 1
s ( 2) = 5 implica que,
8a 2 + 4b2 + 2c2 + d1 = 5
8a3 + 4b3 + 2c3 + d 2 = 5
Y finalmente s ( 4) = 2 implica que,
7
Ing. Adriana M. Apaza JTP Clculo Numrico
Clculo Numrico Programacin Aplicada
Vemos entonces, que las posibles discontinuidades de s(x ) son x = 1 y x = 2 . Por lo tanto, para
hacer que s(x ) sea continua, igualamos las ecuaciones correspondientes en ambos valores:
12 a2 + 4b2 + c2 = 12 a3 + 4b3 + c3
Ahora procedemos a calcular la segunda derivada:
Nuevamente, las posibles discontinuidades son x = 1 y x = 2 . Por lo tanto, para que s(x) sea
continua, se igualan las ecuaciones en ambos valores:
12 a2 + 2b2 = 12 a3 + 2b3 6 a2 + b2 = 6 a3 + 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 + b1 c1 + d1 = 1
a1 + b1 + c1 + d1 = 1
a2 + b2 + c2 + d 2 = 1
8a2 + 4b2 + 2c2 + d 2 = 5
8a3 + 4b3 + 2c3 + d 3 = 5
64 a3 + 16b3 + 4c3 + d 3 = 2
3a1 + b1 = 3a2 + b2
6 a2 + b2 = 6 a3 + b3
3a1 + b1 = 0
12 a3 + b3 = 0
8
Ing. Adriana M. Apaza JTP Clculo Numrico
Clculo Numrico Programacin Aplicada
1 1 1 1 0 0 0 0 0 0 0 a1 1
0
1
1 1 1 0 0 0 0 0 0 0 b1 1
0
0 0 0 0 1 1 1 1 0 0 0 c1 1
0
0 0 0 0 8 4 2 1 0 0 0 d1 5
0
0 0 0 0 0 0 0 0 8 4 1 a2 5
2
0 0 0 0 0 0 0 0 64 16 4 1 b2 2
=
3 2 1 0 3 2 1 0 0 0 0 0 c2 0
0 0 0 0 12 4 1 0 12 4 1 0 d 2 0
3 1 0 0 3 1 0 0 0 0 0 0 a3 0
0 0 0 0 6 1 0 0 6 1 0 0 b3 0
3 1 0 0 0 0 0 0 0 0 0 0 c3 0
0 0 0 0 0 0 0 0 12 1 0 0 d3 0
Obtenemos la solucin:
140 x + 140
51 3
x + 140
153 2 89
x 153
40
si x [ 1,1]
21 3 297 2 473
s( x) = 10 x + 35 x 70 x + 35 48
si x [1,2]
24 x 288 x + 1867 x 732 si x [2,4]
3 2
35 35 70 35
-1 1 2 4
-2
En forma general
9
Ing. Adriana M. Apaza JTP Clculo Numrico
Clculo Numrico Programacin Aplicada
Dada una funcin f definida en [a, b] y un conjunto de nmeros, llamados los nodos
a = x0 < x1 < ... < x n = b , un interpolante cbico de trazador, S, para f es una funcin que satisface
las siguientes condiciones:
[ ]
a) S es un polinomio cbico, denotado Sj, en el subintervalo x j , x j +1 para cada j = 0, 1,..., n 1 ;
Para x = x j : S j ( x j ) = a j = f ( x j )
Si, adems definimos a n = f ( x n ) , se puede ver que esto implica que la ecuacin
S j ( x) = b j + 2c j ( x x j ) + 3d j ( x x j ) 2
10
Ing. Adriana M. Apaza JTP Clculo Numrico
Clculo Numrico Programacin Aplicada
S ( x n )
Aplicando la condicin (e) y definiendo cn = :
2
c j +1 = S j+1 ( x j +1 ) = S j( x j +1 )
= c j + 3d j h j para cada j = 0, 1,..., n 1 .
c j +1 c j
dj = (1)
3h j
(c j +1 c j )
2
hj
a j +1 = a j + b j h j + c j h j + hj = a j + bjhj + (2c j + c j +1 )
2 2
3 3
2
hj
a j +1 . = a j + b j h j + (2c j + c j +1 ) (2)
3
b j +1 = b j + 2c j h j + 3d j h j = b j + 2c j h j + (c j +1 c j ) h j = b j + (c j + c j +1 )h j
2
b j +1 = b j + (c j + c j +1 )h j (3)
b j = b j 1 + ( c j + c j 1 ) h j 1 (4)
De (2) despejo b j ,
(a j +1 . - a j ) hj
bj. = ( 2c j + c j +1 ) (5)
hj 3
con una reduccin del ndice
(a j . - a j1) h j1
b j1. = (c j + 2c j1) (6)
h j1 3
{h }
j
n 1
j =0
y {a } j
n 1
j =0
estn dados por el espaciamiento entre los nodos {x } j
n
j =0
y los valores de f en los
nodos.
11
Ing. Adriana M. Apaza JTP Clculo Numrico
Clculo Numrico Programacin Aplicada
Ntese que una vez que se conocen los valores de c j encontrar las constantes restantes b j de la
ecuacin (4) y d j de la ecuacin (1) y construir los polinomios cbicos Sj es una cuestin sencilla.
0 h3 2(h1 + h2 ) h2
A=
0
hn2 2(hn 2 + hn1 ) hn 1
0 0 0 1
0
3 3 c 0
(a 2 a1 ) (a1 a 0 ) c
h1 h0
1
b= M x = c 2
3 (a n a n1 ) 3 (a n 1 a n 2 )
hn 1 hn 2 M
c n
0
12
Ing. Adriana M. Apaza JTP Clculo Numrico
Clculo Numrico Programacin Aplicada
13
Ing. Adriana M. Apaza JTP Clculo Numrico