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 número entero positivo, una función de
interpolación spline de grado k, para la tabla de datos, es una función S (x ) tal que :
Una función 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 Cálculo Numérico
Cálculo Numérico – Programación Aplicada
Claramente esta función 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 función 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 Cálculo Numérico
Cálculo Numérico – Programación Aplicada
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 Cálculo Numérico
Cálculo Numérico – Programación 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 solución:
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 función spline cuadrática 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 más importante en las aplicaciones, sigue exactamente los mismos pasos
del ejemplo que acabamos de resolver, solamente que en vez de trabajar con polinomios cuadráticos, lo
hace con polinomios cúbicos.
FUNCIONES SPLINES CUBICAS
Dados n + 1 datos:
4
Ing. Adriana M. Apaza – JTP Cálculo Numérico
Cálculo Numérico – Programación Aplicada
Una spline cúbica que interpola estos datos, es una función 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 cúbico; 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 cúbica:
Solución.
Definimos un polinomio cúbico 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 continuación, hacemos que se cumpla la condición 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 cuadráticas, 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
Análogamente 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 Cálculo Numérico
Cálculo Numérico – Programación Aplicada
En este punto contamos con 6 ecuaciones y 8 incógnitas, 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 solución:
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 función inicial, vemos que la spline cúbica para la tabla de datos
dada, queda definida como sigue:
6
Ing. Adriana M. Apaza – JTP Cálculo Numérico
Cálculo Numérico – Programación Aplicada
Prácticamente ni se nota que se trata de dos polinomios diferentes. Esto es debido a las condiciones que
se impusieron sobre las derivadas de la función. Esta finura casi artística, es la que permite aplicar las
splines cúbicas, para cuestiones como el diseño de letras por computadoras, o bien a problemas de
aplicación donde la interpolación que se necesita es de un carácter bastante delicado, como podría
tratarse de datos médicos sobre algún tipo de enfermedad.
Ejemplo 2.
Interpolar los siguientes datos utilizando splines cúbicas:
Solución.
Nuevamente, definimos un polinomio cúbico 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]
Después, hacemos que la spline pase por los puntos dados en la tabla. Así, tenemos que:
7
Ing. Adriana M. Apaza – JTP Cálculo Numérico
Cálculo Numérico – Programación 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 Cálculo Numérico
Cálculo Numérico – Programación 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 solución:
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 Cálculo Numérico
Cálculo Numérico – Programación Aplicada
Dada una función f definida en [a, b] y un conjunto de números, llamados los nodos
a = x0 < x1 < ... < x n = b , un interpolante cúbico de trazador, S, para f es una función que satisface
las siguientes condiciones:
[ ]
a) S es un polinomio cúbico, 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, además definimos a n = f ( x n ) , se puede ver que esto implica que la ecuación
S ′j ( x) = b j + 2c j ( x − x j ) + 3d j ( x − x j ) 2
10
Ing. Adriana M. Apaza – JTP Cálculo Numérico
Cálculo Numérico – Programación Aplicada
S ′′( x n )
Aplicando la condición (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 reducción del índice
(a j . - a j−1) h j−1
b j−1. = − (c j + 2c j−1) (6)
h j−1 3
{h }
j
n −1
j =0
y {a } j
n −1
j =0
están 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 Cálculo Numérico
Cálculo Numérico – Programación Aplicada
Nótese que una vez que se conocen los valores de c j encontrar las constantes restantes b j de la
ecuación (4) y d j de la ecuación (1) y construir los polinomios cúbicos Sj es una cuestión sencilla.
0 h3 2(h1 + h2 ) h2
A=
0
hn−2 2(hn −2 + hn−1 ) 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 n−1 ) − 3 (a n −1 − a n − 2 )
hn −1 hn − 2 M
c n
0
12
Ing. Adriana M. Apaza – JTP Cálculo Numérico
Cálculo Numérico – Programación Aplicada
13
Ing. Adriana M. Apaza – JTP Cálculo Numérico