Sei sulla pagina 1di 13

Métodos Numéricos Splines

INTERPOLACIÓN DE SPLINES

En la interpolación segmentaria o interpolación por splines es que en vez de usar un solo


polinomio para interpolar los datos, podemos usar segmentos de polinomios y unirlos
adecuadamente para formar nuestra interpolación.
Cabe mencionar que entre todas, las splines cúbicas han resultado ser las más adecuadas
para aplicaciones.

Así pues, podemos decir de manera informal, que una función spline está formada por
varios polinomios, cada uno definido en un intervalo y que se unen entre si bajo ciertas
condiciones de continuidad.

Definición. (Splines de grado k)

Dada nuestra tabla de datos,

donde suponemos que 𝑥0 < 𝑥1 < ⋯ < 𝑥𝑛 , 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 𝑠(𝑥)
tal que :
i) 𝑠(𝑥𝑖 ) = 𝑦𝑖 , para toda 𝑖 = 0,1, ⋯ 𝑛. .
ii) 𝑠(𝑥) es un polinomio de grado ≤ 𝑘 en cada subintervalo [𝑥𝑖−1 , 𝑥𝑖 ] .
iii ) 𝑠(𝑥) tiene derivada contínua hasta de orden 𝑘 − 1 en [𝑥0 , 𝑥𝑛 ] .

FUNCIONES SPLINES DE GRADO 1

Dados los 𝑛 + 1 puntos

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:

Dra. Pilar Nuñez Blas Página 1


Métodos Numéricos Splines

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
 
sn  x  si x  xn 1 , xn 
donde:

i) 𝑠𝑗 (𝑥) es un polinomio de grado menor o igual que 1(x))


ii) 𝑠(𝑥) tiene derivada continua de orden k-1=0.
iii) 𝑠(𝑥𝑗 ) = 𝑦𝑗 , para 𝑗 = 0,1, ⋯ 𝑛. .
Por lo tanto, la spline de grado 1 queda definida como:

 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

 
 yn 1  f xn , xn 1  x  xn 1  si x  xn 1 , xn 

Donde 𝑓[𝑥𝑖 , 𝑥𝑗 ] es la diferencia dividida de Newton.

FUNCIONES SPLINES DE GRADO 2

Para aclarar bien la idea, veamos un ejemplo concreto, consideremos los siguientes
datos:

Procedamos a calcular la interpolación por splines de grado 2.


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 si x  7,9
 3 3 3

Dra. Pilar Nuñez Blas Página 2


Métodos Numéricos Splines

Primero, hacemos que la spline pase por los puntos de la tabla de datos. Es decir, se
debe cumplir que:

s (3)  2.5, s (4.5) 1, s (7)  2.5, s (9)  0.5

Así, se forman las siguientes ecuaciones:

s (3)  2.5  9a1  3b1  c1  2.5


 (4.5) 2 a1  4.5b1  c1  1
s (4.5)  1  
(4.5) a2  4.5b2  c2  1
2

49 a2  7b2  c2  2.5


s (7)  2.5  
 49 a3  7b3  c3  2.5
s(9)  0.5  81a3  9b3  c3  0.5

Hasta aquí, tenemos un total de 6 ecuaciones con 9 incógnitas.


El siguiente paso es manejar la existencia de las derivadas contínuas. En el caso de las
splines de grado 2, necesitamos que la spline tenga derivada contínua 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
𝑥 = 4.5 ; 𝑦 = 7. Por lo tanto para que 𝑠 ′(𝑥) sea contínua, se debe cumplir que:

2a1 4.5  b1  2a2 4.5  b2


o lo que es lo mismo,
9a1  b1  9a2  b2

También debe cumplirse que:

2a2 7   b2  2a3 7   b3
o lo que es lo mismo,
14a2  b2  14a3  b3

Así, tenemos un total de 8 ecuaciones con 9 incógnitas; esto nos da un grado de libertad
para elegir alguna de las incógnitas. Elegimos por simple conveniencia 𝑎1 = 0.
De esta forma, tenemos un total de 8 ecuaciones vs. 8 incógnitas. Estas son las siguientes:

Dra. Pilar Nuñez Blas Página 3


Métodos Numéricos Splines

3b1  c1  2.5
4.5b1  c1  1
20.25a2  4.5b2  c2  1
49 a2  7b2  c2  2.5
49 a3  7b3  c3  2.5
81a3  9b3  c3  0.5
b1  9a2  b2
14 a2  b2  14 a3  b3
Este sistema de ecuaciones tiene la siguiente forma matricial:

3 1 0 0 0 0 00  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 

Usando Matlab se obtiene la siguiente solución:


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 𝑎1 = 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
2
x  4.5,7
  1.6 x 2  24.6 x  91.3 si
 x  7,9

La gráfica que se muestra a continuación, contiene tanto los puntos iniciales de la tabla
de datos, así como la spline cuadrática. Esta gráfica se generó usando Matlab.

Dra. Pilar Nuñez Blas Página 4


Métodos Numéricos Splines

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

Para hacer más firme el entendimiento, escribimos la definición correspondiente a este


caso (k=3).
Dados los 𝑛 + 1 datos:

Una spline cúbica que interpola estos datos, es una función 𝑠(𝑥) definida como sigue:

 s0  x  si x  x0 , x1 
 s  x  si x  x1 , x2 

s x    1
 
sn 1  x  si x  xn 1 , xn 

donde cada 𝑠𝑖 (𝑥) es un polinomio cúbico; 𝑠𝑖 (𝑥𝑖 ) = 𝑦𝑖 , para toda 𝑖 = 0,1, ⋯ , 𝑛 y tal
que 𝑠(𝑥) tiene primera y segunda derivadas contínuas en [𝑥0 , 𝑥𝑛 ] .

Ejemplo 1.
Interpolar los siguientes datos mediante una spline cúbica:

Solución.

Dra. Pilar Nuñez Blas Página 5


Métodos Numéricos Splines

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:

s 2   1  8a1  4b1  2c1  d1  1


s 3  2  27 a1  9b1  3c1  d1  2
s 5  7  125 a2  25b2  5c2  d 2  7

Ahora calculamos la primera derivada de 𝑠(𝑥):

 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  2b1 3  c1  3a2 3  2b2 3  c2


2 2

o lo que es lo mismo:

27 a1  6b1  c1  27 a 2  6b2  c 2

Análogamente procedemos con la segunda derivada:

 6a x  2b1 si x  2,3
s  x    1
6a 2 x  2b2 si x  3,5

Para lograr que 𝑠 ′′(𝑥) sea continúa:

6a1 3  2b1  6a 2 3  2b2


 18a1  2b1  18a2  2b2

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:

s  x 0   0
s  x n   0
De lo cual vamos a obtener:
Dra. Pilar Nuñez Blas Página 6
Métodos Numéricos Splines

s2   0  6a1 2   2b1  0


 12 a1  2b1  0
s5  0  6a2 5  2b2  0
 30 a2  2b2  0

Con lo cual, hemos completado un juego de 8 ecuaciones vs. 8 incógnitas, el cual es el


siguiente:
8a1  4b1  2c1  d1  1
27 a1  9b1  3c1  d1  2
27 a 2  9b2  3c 2  d 2  2
125 a 2  25b2  5c 2  d 2  7
27 a1  6b1  c1  27 a 2  6b2  c 2
18a1  2b1  18a 2  2b2
12 a1  2b1  0
30 a 2  2b2  0
Cuya forma matricial es la siguiente:

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 

Usando Matlab obtenemos la siguiente solución:

a1   1.25
b1  7.5
c1   10.75
d1  0.5
a2  0.625
b2   9.375
c2  39.875
d2   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:

Dra. Pilar Nuñez Blas Página 7


Métodos Numéricos Splines

  1.25 x 3  7.5 x 2  10.75 x  0.5 si x  2,3


s x   
0.625 x  9.375 x  39.875 x  50.125 si
3 2
x  3,5

Mostramos la gráfica correspondiente a este ejercicio, creada también en Matlab

Obsérvese la finura con la que se unen los polinomios cúbicos que conforman a la spline.
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 si x  2,4
 3 3 3 3

Después, hacemos que la spline pase por los puntos dados en la tabla. Así, tenemos que:

𝑠(−1) = −1 implica que, −𝑎1 + 𝑏1 − 𝑐1 + 𝑑1 = −1


𝑠(1) = 1 implica que, 𝑎1 + 𝑏1 + 𝑐1 + 𝑑1 = 1
𝑎2 + 𝑏2 + 𝑐2 + 𝑑2 = 1
𝑠(2) = 5 implica que, 8𝑎2 + 4𝑏2 + 2𝑐2 + 𝑑2 = 5
Dra. Pilar Nuñez Blas Página 8
Métodos Numéricos Splines

8𝑎3 + 4𝑏3 + 2𝑐3 + 𝑑3 = 5

Y finalmente 𝑠(4) = −2
64a3  16b3  4c3  d3  2

Enseguida, calculamos la primera derivada:

 3a1 x 2  2b1 x  c1 si1 x   1,1



s( x)  3a2 x 2  2b2 x  c2 si x  1,2
3a x 2  2b x  c si x  2,4
 3 3 3

Vemos entonces, que las posibles discontinuidades de 𝑠 ′(𝑥) son x=1 y x=2. Por lo tanto,
para hacer que 𝑠 ′(𝑥) sea contínua, igualamos las ecuaciones correspondientes en ambos
valores:
3a1  2b1  c1  3a2  2b2  c2
12a2  4b2  c2  12a3  4b3  c3

Ahora procedemos a calcular la segunda derivada:

 6a1 x  2b1 si x   1,1



s( x)  6a2 x  2b2 si x  1,2
6a x  2b
 3 3 si x  2,4

Nuevamente, las posibles discontinuidades son x =1 y x = 2. Por lo tanto, para que 𝑠 ′′(𝑥)
sea contínua, 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,

s(1)  0  6a1  2b1  0  3a1  b1  0


s(4)  0  24a3  2b3  0  12a3  b3  0

Con esto tenemos un juego de doce ecuaciones con doce incógnitas:


 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  d3  5
64a3  16b3  4c3  d3  2

Dra. Pilar Nuñez Blas Página 9


Métodos Numéricos Splines

3a1  2b1  c1  3a2  2b2  c2


12a2  4b2  c2  12a3  4b3  c3
3a1  b1  3a2  b2
6a2  b2  6a3  b3
 3a1  b1  0
12a3  b3  0

Este sistema tiene la siguiente forma matricial:

1 1 1 1 0 0 0 0 0 0  a1    1 
0 0
1
 1 1 1 0 0 0 0 0 0 0 0  b1   1 
0 0 0 0 1 1 1 1 0 0 0 0  c1   1 
    
0 0 0 0 8 4 2 1 0 0 0 0  d1   5 
0 0 0 0 0 0 0 0 8 4 2 1   a2   5 
    
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  d 3   0 

Usando Matlab obtenemos la solución:

51 21 24
a1  a2   a3 
140 , 10 , 35
153 297 288
b1  b2  b3  
140 , 35 , 35

89 473 1867
c1  c2   c3 
140 , 70 , 70

153 48 732
d1   d2  d3  
40 , 35 , 35
Por lo tanto, la spline cúbica es:

 140
51 3
x  140
153 2
x  140
89
x  153
40 si x   1,1

s( x)   1021 x 3  297
35 x  70 x  35
2 473 48
si x  1,2
 24 x 3  288 x 2  1867 x  732 si x  2,4
 35 35 70 35

Dra. Pilar Nuñez Blas Página 10


Métodos Numéricos Splines

Finalmente, mostramos la gráfica correspondiente (creada en Matlab):

CODIFICACION DE INTERPOLACION SPLINES CON MATLAB

Dra. Pilar Nuñez Blas Página 11


Métodos Numéricos Splines

EJEMPLO
Tenemos la siguiente imagen.

Y sacaremos la coordenadas de los puntos y lo ejecutaremos parte por parte


en el MatLaB.

Dra. Pilar Nuñez Blas Página 12


Métodos Numéricos Splines

Y nos saldrá el contorno de la imagen que teniamos:

Dra. Pilar Nuñez Blas Página 13

Potrebbero piacerti anche