Vous êtes sur la page 1sur 9

Alexander Sánchez Ocampo.

Curso de métodos numéricos


Dr. Abner Ramírez.
CINVESTAV

Contenido: Interpolación segmentaria o splines.

La interpolación segmentaria surgió debido a la dificultad y complejidad de obtener aproximaciones


con polinomios del alto grado, por ello se optó por dividir el intervalo de interés en sub-intervalos
con el fin de obtener un polinomio de interpolación de grado bajo para cada uno de ellos. Dando
lugar a la interpolación por trozos ó función spline.

La idea radica en que en vez de utilizar un solo polinomio de interpolación, se puedan unir
adecuadamente todos los polinomios de los sub-intervalos para formar la interpolación. Es decir
que la función spline está formada por varios polinomios, cada uno definido en un intervalo
diferente y se unen bajo ciertas condiciones de continuidad con la intención de que la forma final
represente adecuadamente el sistema que deseamos presentar.

Funciones Spline de grado 1.

 Una función spline de grado uno para interpolación de datos, consiste en unir cada uno de
los puntos por media de una línea recta. Esta característica hace que los polinomios de
grado bajo no presentes grandes oscilaciones.

Una función spline de grado 1 se puede expresar de la forma

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:

s j x 
i) es un polinomio de grado menor o igual que 1

ii) s x  tiene derivada continua de orden k-1=0.

s x j   y j j  0,1,, n .
iii) , para

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 

f [ xi , x j ]
donde es la diferencia dividida de Newton.

Función spline de grado 1.

 Ejemplo para un polinomio spline de grado 2.

Se tiene los siguientes puntos


P1=(3,2.5), P2=(4.5,1), P3=(7,2.5), P4=(9,0.5).

Con estos datos, vamos a proceder a calcular la interpolación por splines de grado 2.

De los puntos obtenidos tenemos que el intervalo completo de la función es [3,9] y lo


vamos a dividir en tres sub-intervalos para los cuales de definirá una función polinomial de
grado 2 en cada uno.

Los sub-intervalos son a). [3,4.5], b).[4.5,7], c).[7,9]


Con los puntos dados tenemos 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

49a  7b2  c2  2.5


s(7)  2.5   2
 49a3  7b3  c3  2.5

s(9)  0.5  81a3  9b3  c3  0.5

En este momento tenemos un sistema de 9 incógnitas y 6 ecuaciones, por ello para completar el
sistema, se tiene la premisa de que la derivada de las funciones de interpolación de cada intervalo
son continuas de orden k-1=1.

Ahora calculamos los valores de 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

En este caso la derivada está formada por segmentos de rectas, que pudieran presentar
discontinuidad en los cambios de intervalo. Es decir, las posibles discontinuidades son para x=4.5 y
x=7 , por lo tanto para que las derivadas sean continuas, se debe cumplir que:

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


ó lo que es lo mismo,

9a1  b1  9a2  b2
También debe cumplirse que:

2a2 7  b2  2a3 7  b3

lo que es lo mismo,

14a2  b2  14a3  b3

Ahora sistema está construido por 8 ecuaciones y 9 incógnitas, esto da un grado de libertar para
elegir alguna de las incógnitas las cual por conveniencia del método será a1=0.
De esta forma el sistema queda definido por 8 ecuaciones y 8 incógnitas, el cual se representa
matricialmente de la siguiente manera.

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

Realizando la solución a la ecuación Ax=b, por medio de algún método de solución de ecuaciones.
Obtenemos que la solución del sistema está dada por.

b1  1
c1  5.5
a2  0.64
b2   6.76
c2  18.46
a3   1.6
b3  24.6
c3   91.3

Ahora sustituyendo los valores en las ecuaciones iniciales de spline tenemos que:
  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

Grafica de la función spline de grado 2


Generando la gráfica mediante el comando spline en MatLab.

%Rutina para graficar el ejemplo.


x=[3 4.5 7 9];
y=[2.5 1 2.5 0.5];
vx=linspace(3,9,50);
Sx= spline(x,y,vx);
plot(x,y,'o',vx,Sx)

Conclusión.

Con la interpolación segmentaria o spline lo que obtenemos son trayectorias suaves entre puntos,
la idea es reducir las oscilaciones entre puntos, que pueden venir de un polinomio de alto grado.
 A continuación se desarrollara un ejemplo para un polinomio spline de grado 3.

En este ejemplo se desea realizar una función spline de un grado 3, el desarrollo es similar al
ejemplo anterior lo adicional es que las funciones spline son de grado 3.

Se desea nterpolar los siguientes datos mediante una spline cúbica :


P1=[2,-1], P2=[3,2], P3=[5,-7]

De los puntos obtenidos tenemos que el intervalo completo de la función es de [2,5] y lo


vamos a dividir en dos sub-intervalos para los cuales de definirá una función polinomial de
grado 3 en cada uno.

Los sub-intervalos son a). [2,3], b). [3,5]

 a x3  b x 2  c x  d1 si x  2,3
s x    1 3 1 2 1
a2 x  b2 x  c2 x  d 2 si x  3,5
Con los puntos dados tenemos que.

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


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

En este momento tenemos un sistema de 8 incógnitas y 4 ecuaciones, por ello para completar el
sistema, se tiene la premisa de que la derivada de las funciones de interpolación de cada intervalo
son continuas de orden k-1=1.

Ahora calculamos los valores de la primera derivada.

 3a1 x 2  2b1 x  c1 si x  2,3


s x   
3a2 x  2b2 x  c2
2
si x  3,5

Al igual que en el caso de las splines de segundo grado se presentan ecuaciones que pueden
tener discontinuidad en los cambios de intervalo, las posibles discontinuidades son los puntos
donde se cambia de intervalo, en este caso es para x=3. Para evitar esta discontinuidad,
evaluamos x=3 en los dos polinomios e igualamos:

3a1 3  2b1 3  c1  3a 2 3  2b2 3  c 2


2 2

ó lo que es lo mismo:

27a1  6b1  c1  27a2  6b2  c2


En este momento tenemos un sistema de 8 incógnitas y 5 ecuaciones, por ello para completar el
sistema, se conserva la premisa de que la derivada de las funciones de interpolación de cada
intervalo son continuas hasta el orden k-1=1.

Ahora calculamos los valores de la segunda derivada.

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

Al igual que en el caso de evaluación de la primera derivada tenemos la posibilidad de la


discontinuidad en el cambio de intervalos, por ello la posible discontinuidad en x=3, la
eliminamos con la sustitución e igualación en los polinomios.

6a1 3  2b1  6a2 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:

Por lo general se asume para todos los casos lo siguiente:

s  x0   0
s  x n   0
Es decir en el inicio y el final del intervalo asumimos una igualdad a 0 para la segunda derivada
del polinomio spline.

De lo cual vamos a obtener :

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


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

Con lo cual, hemos completado un juego de 8 ecuaciones vs. 8 incógnitas, el cual en forma
matricial es el 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 
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:

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


s x   
0.625x  9.375x  39.875x  50.125 si
3 2
x  3,5
%Rutina para graficar el ejemplo.
x=[2 3 5];
y=[-1 2 -7];
vx=linspace(2,5,30);
Sx = spline(x,y,vx);
plot(x,y,'o',vx,Sx)

Como conclusión final de la interpolación segmentaria se tiene.

a. Al unir los diferente polinomios casi nota debido a la premisa de que no hay discontinuidad
debido a la condición de continuidad en sus derivadas.
b. Al aplicar una interpolación segmentaria, se tiene un trazo y unión delicada de los diferentes
puntos que componen los datos de entrada.
c. Debido a la particularidad del spline en el cual la premisa es evitar las oscilaciones de un
polinomio del alto grado, la interpolación por spline cubica es la más utilizada en el campo
de diseño y tratado de datos.

Vous aimerez peut-être aussi