Está en la página 1de 13

Clculo Numrico Programacin Aplicada

INTERPOLACIN SEGMENTARIA O SPLINES


La construccin de polinomios de interpolacin de grado alto aunque justificable tericamente plantea
muchos problemas. Por un lado, la forma de la funcin polinmica de grado alto a menudo no responde
al fenmeno debido al gran nmero de extremos e inflexiones. Por otro lado, su clculo es muy
complicado, lo que limita su utilidad en anlisis numrico. Es a menudo ms conveniente dividir el
intervalo de inters en subintervalos ms pequeos y usar en cada subintervalo polinomios de grado
relativamente bajo, tratando de que la funcin a trozos definida de este modo tenga un aspecto final
adecuado al fenmeno que estamos representando.
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.
Podemos decir, que una funcin spline est formada por varios polinomios, cada uno definido en un
intervalo y que se unen entre si bajo ciertas condiciones de continuidad.
Cabe mencionar que entre todas, las splines cbicas han resultado ser las ms adecuadas.

Definicin. (Splines de grado k)


Dada nuestra tabla de datos,

donde suponemos que

x0 < x1 < L < x n , y dado

un nmero entero positivo, una funcin de

interpolacin spline de grado k, para la tabla de datos, es una funcin S (x ) tal que :

i)

S ( xi ) = y i , para toda i = 0, 1, ..., n .

ii)

S (x ) es un polinomio de grado k en cada subintervalo [xi 1 , xi ] .

iii)

S (x ) tiene derivada continua hasta de orden k 1 en [x0 , x n ] .

FUNCIONES SPLINES DE GRADO 1


Dados los n + 1 puntos

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
s ( x ) s

s( x) = 2
M
sn ( x ) si

x [x0 , x1 ]

x [x1 , x2 ]

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.

iii) S ( x j ) = y j , para j = 0,1,K , n .


Por lo tanto, la spline de grado 1 queda definida como:

si
y0 + f [x1 , x0 ]( x x0 )
y + f [x , x ]( x x )
si

1
2 1
1
s( x ) =
M

yn 1 + f [xn , xn 1 ]( x xn 1 ) si

x [x0 , x1 ]

x [x1 , x2 ]
x [xn 1 , xn ]

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

FUNCIONES SPLINES DE GRADO 2


Veamos un ejemplo concreto, consideremos los siguientes datos:

procedamos a calcular la interpolacin 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 funcin polinomial de grado 2, como sigue:

a1 x 2 + b1 x + c1

s( x ) = a2 x 2 + b2 x + c2
a x2 + b x + c
3
3
3

si
si
si

x [3,4.5]

x [4.5,7 ]
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

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
2
( 4.5) a2 + 4.5b2 + c2 = 1
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

s( x ) = 2a2 x + b2
2a x + b
3
3

si
si
si

x [3,4.5]
x [4.5,7]
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:

2a1 (4.5) + b1 = 2a 2 (4.5) + b2 9a1 + b1 = 9a 2 + b2


Tambin debe cumplirse que:

2a 2 (7) + b2 = 2a 3 (7) + b3 14a 2 + b2 = 14a 3 + b3


As, tenemos un total de 8 ecuaciones vs. 9 incgnitas; esto nos da un grado de libertad para elegir
alguna de las incgnitas. Elegimos por simple conveniencia

a1 = 0 .

De esta forma, tenemos un total de 8 ecuaciones con 8 incgnitas. Estas son las siguientes:

3b1 + c1 = 2.5

49a3 + 7b3 + c3 = 2.5

4.5b1 + c1 = 1

81a 3 + 9b3 + c3 = 0.5

20.25a 2 + 4.5b2 + c 2 = 1

b1 = 9a 2 + b2

49a 2 + 7b2 + c 2 = 2.5

14a 2 + b2 = 14a 3 + b3

Este sistema de ecuaciones tiene la siguiente forma matricial:

3
Ing. Adriana M. Apaza JTP Clculo Numrico

Clculo Numrico Programacin Aplicada

3
4 .5

0
0

0
1

1
0
0 0
0
0
1
0
0 0
0
0
0 20.25 4.5 1
0
0
0
49
7 1
0
0
0
0
0 0 49
7
0
0
0 0 81
9
0 9
1 0
0
0
0
14
1 0 14 1

0 b1 2.5
0 c1 1
0 a2 1

0 b2 2.5
=
1 c2 2.5

1 a3 0.5
0 b3 0

0 c3 0

Se obtiene la siguiente solucin:

b1 = 1
c1 = 5.5

a 2 = 0.64

a 3 = 1.6

b2 = 6.76

b3 = 24.6

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]

2
s( x ) = 0.64 x 6.76 x + 18.46 si x [4.5,7]
1.6 x 2 + 24.6 x 91.3 si x [7,9]

La grfica que se muestra a continuacin, contiene tanto los puntos iniciales de la tabla de datos, as
como la spline cuadrtica.
5
4
3
2
1

4.5

-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
s ( x ) si

s(x ) = 1
M

sn 1 ( x ) si
donde cada

x [x0 , x1 ]

x [x1 , x2 ]
x [xn 1 , xn ]

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
s (x ) = 3
2
a2 x + b2 x + c2 x + d 2

si
si

x [2,3]
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:

s(2) = 1 8a1 + 4b1 + 2c1 + d1 = 1


s(3) = 2 27a1 + 9b1 + 3c1 + d1 = 2

s(5) = 7 125a2 + 25b2 + 5c2 + d 2 = 7

Ahora calculamos la primera derivada de s (x) :

3a x 2 + 2b1 x + c1
s ( x ) = 1 2
3a 2 x + 2b2 x + c 2

si
si

x [2,3]
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
s ( x ) = 1
6 a 2 x + 2b2

si
si

x [2,3]
x [3,5]

Para lograr que s (x) sea continua:

6a1 (3) + 2b1 = 6a 2 (3) + 2b2 18a1 + 2b1 = 18a 2 + 2b2

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:

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 incgnitas, el cual es el siguiente:

8a1 + 4b1 + 2c1 + d 1 = 1


27 a1 + 9b1 + 3c1 + d 1 = 2
27 a 2 + 9b2 + 3c 2 + d 2 = 2
125a 2 + 25b2 + 5c 2 + d 2 = 7
27 a1 + 6b1 + c1 = 27 a 2 + 6b2 + c 2
18a1 + 2b1 = 18a 2 + 2b2
12a1 + 2b1 = 0
30a 2 + 2b2 = 0
Cuya forma matricial es la siguiente:

8
27

0
27

18
12

27

125

25

27

2
2

0
0

0
0

18
0

2
0

0
0

30

0 a1 1
0 b1 2
1 c1 2

1 d1 7
=
0 a2 0

0 b2 0
0 c2 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:

1.25 x 3 + 7.5 x 2 10.75 x + 0.5


s (x ) =
3
2
0.625 x 9.375 x + 39.875 x 50.125

si
si

x [2,3]
x [3,5]

Mostramos la grfica correspondiente a este ejercicio,

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

s ( x ) = a2 x 3 + b2 x 2 + c2 x + d 2
a x3 + b x 2 + c + d
3
3
3
3

x [ 1,1]
x [1,2]
x [2,4]

si
si
si

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,

64a 3 + 16b3 + 4c3 + d 2 = 2


Enseguida, calculamos la primera derivada:

7
Ing. Adriana M. Apaza JTP Clculo Numrico

Clculo Numrico Programacin Aplicada

3a1 x 2 + 2b1 x + c1

s( x ) = 3a2 x 2 + 2b2 x + c2
3a x 2 + 2b x + c
3
3
3

si1
si
si

x [ 1,1]
x [1,2]
x [2,4]

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:

3a1 + 2b1 + c1 = 3a2 + 2b2 + c2


12 a2 + 4b2 + c2 = 12 a3 + 4b3 + c3
Ahora procedemos a calcular la segunda derivada:

6a1 x + 2b1

s( x) = 6a2 x + 2b2
6a x + 2b
3
3

si
si
si

x [ 1,1]
x [1,2]
x [2,4]

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:

6a1 + 2b1 = 6a2 + 2b2 3a1 + b1 = 3a2 + b2


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,

s(1) = 0 6a1 + 2b1 = 0 3a1 + b1 = 0


s( 4) = 0 24 a3 + 2b3 = 0 12 a3 + b3 = 0
Con esto tenemos un juego de doce ecuaciones con doce incgnitas:

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 + 2b1 + c1 = 3a2 + 2b2 + c2


12 a2 + 4b2 + c2 = 12 a3 + 4b3 + c3

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

Este sistema tiene la siguiente forma matricial:

1
1

0
0

0
3

0
3

3
0

1 1
1 1
0 0
0 0
0 0

1
1
0
0
0

0
2
0
1
0
1
0

0 0
0
0
0 3 2 1
0 12 4
1
0 3 1 0
0 6
1
0
0 0
0
0
0 0
0
0

0
1
0
0
0
0
0

0
0
1
8
0

0
0
1
4
0

0
0
1
2
0

0
0
1
1
0
0
0
0
0
0
0
0

0 a1 1
0 b1 1
0 c1 1

0 d1 5
1 a2 5

64 16 4 1 b2 2
=
0
0
0 0 c2 0

12 4 1 0 d 2 0
0
0
0 0 a3 0

6 1 0 0 b3 0

0
0
0 0 c3 0
12
1
0 0 d3 0
0
0
0
0
8

0
0
0
0
4

0
0
0
0
2

Obtenemos la solucin:

a1 =

51
140

a2 =

b1 =

153
140

21
297
b2 =
10
35

c1 =

89
140

c2 =

d1 =

153
40

a3 =

24
288
b3 =
35
35

c3 =

1867
732
d3 =
70
35

473
48
d2 =
70
35

Por lo tanto, la spline cbica es:


51 3
153 2
89
140
x + 140
x + 140
x 153
si x [ 1,1]
40
21 3 297 2 473
48
s( x) = 10 x + 35 x 70 x + 35
si x [1,2]
3
2
24 x 288 x + 1867 x 732 si x [2,4]
35
70
35
35

Finalmente, mostramos la grfica correspondiente


8
6
4
2

-1

-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 ;


b)

S ( x j ) = f ( x j ) para cada j = 0, 1,..., n ;

c)

S j +1 ( x j +1 ) = S j ( x j +1 ) para cada j = 0, 1,..., n 2 ;

d)

S j +1 ( x j +1 ) = S j ( x j +1 ) para cada j = 0, 1,..., n 2 ;

e)

S j+1 ( x j +1 ) = S j ( x j +1 ) para cada j = 0, 1,..., n 2 ;

f)

se satisface una del siguiente conjunto de condiciones de frontera:

S ( x0 ) = S ( x n ) = 0 (frontera libre)
S ( x0 ) = f ( x0 ) y S ( x n ) = f ( x n ) (frontera sujeta)
La ecuacin b) indica que el spline cbico se ajusta a cada uno de los puntos, que es continua c), y que
es continua en pendiente y curvatura d) y e), a lo largo de toda la regin generada por los puntos.
Para construir el interpolante cbico de trazador para una funcin f dada, se pueden aplicar las
condiciones de la definicin a los polinomios cbicos.

S j ( x) = a j + b j ( x x j ) + c j ( x x j ) 2 + d j ( x x j ) 3 para cada j = 0, 1,..., n 1 .


Para x = x j : S j ( x j ) = a j = f ( x j )
y si se aplica la condicin (c),

a j +1 = S j +1 ( x j +1 ) = S j ( x j +1 )
= a j + b j ( x j +1 x j ) + c j ( x j +1 x j ) 2 + d j ( x j +1 x j ) 3 para cada j = 0, 1,..., n 2 .
introducimos la notacin h j = x j +1 x j para cada j = 0, 1,..., n 1 .
Si, adems definimos

a n = f ( x n ) , se puede ver que esto implica que la ecuacin

a j +1 = a j + b j h j + c j h j + d j h j
2

De una manera similar, definimos

para cada j = 0, 1,..., n 1 .

bn = S ( x n ) y observamos

S j ( x) = b j + 2c j ( x x j ) + 3d j ( x x j ) 2
para x = x j :

S j ( x j ) = b j

para cada j = 0, 1,..., n 1 .

Aplicando la condicin (d),

b j +1 = S j +1 ( x j +1 ) = S j ( x j +1 )
= b j + 2c j h j + 3d j h j para cada j = 0, 1,..., n 1 .
2

Otra relacin entre los coeficientes se puede obtener

S j( x ) = 2c j + 6d j ( x x j )

10
Ing. Adriana M. Apaza JTP Clculo Numrico

Clculo Numrico Programacin Aplicada

S j ( x j ) = 2c j

para x = x j :

para cada j = 0, 1,..., n 1 .

Aplicando la condicin (e) y definiendo

cn =

S ( x n )

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 .
Despejando d j de la ecuacin anterior y sustituyendo este valor

dj =

c j +1 c j

(1)

3h j

a j +1 = a j + b j h j + c j h j +
2

hj

a j +1 . = a j + b j h j +

(c j +1 c j )
3

hj = a j + bjhj +
2

hj

(2c j + c j +1 )

(2c j + c j +1 )

(2)

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)

para cada j = 0, 1,..., n 1 .


y luego con una reduccin del ndice, para b j 1 ,

b j = b j 1 + ( c j + c j 1 ) h j 1

(4)

De (2) despejo b j ,

bj. =

(a j +1 . - a j )
hj

hj
3

( 2c j + c j +1 )

(5)

con una reduccin del ndice

b j1. =

(a j . - a j1) h j1

(c j + 2c j1) (6)
h j1
3

Reemplazando (5) y (6) en (4), tenemos

b j = b j 1 + (c j + c j 1 )h j 1
(a j +1 a j )
hj

hj
3

(4)

(2c j + c j +1 ) =

(a j a j 1 )
h j 1

h j 1
3

(c j + 2c j 1 ) + h j 1 (c j + c j 1 )

Operando algebraicamente, nos queda

h j 1c j 1 + 2(h j 1 + h j )c j + h j + c j +1 =

3
3
(a j +1 a j )
(a j a j 1 ) (7)
hj
h j 1

para cada j = 1, 2, ..., n 1 . Este sistema tiene como incgnitas slo a

{c }

{h }

n 1

j =0

{a }

n 1

j =0

estn dados por el espaciamiento entre los nodos

{x }

n
j =0

j =0

ya que los valores

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.
Si se cumplen las condiciones de frontera libre,

S ( x0 ) = S ( x n ) = 0 implican que

0 = S ( x0 ) = 2c0 + 6d 0 ( x0 x0 )
c0 = 0
cn =

S ( x n )

= 0 cn = 0

Las dos ecuaciones

c0 = 0 y c n = 0 junto con las ecuaciones en (7) producen un sistema lineal

descripto por la ecuacin vectorial

Ax = b , donde A es la matriz de (n+1) por (n+1).

h0

2(h0 + h1 )

h1

h3

2(h1 + h2 )

h2

A=

hn2
0

3
3

(a 2 a1 ) (a1 a 0 )

h1
h0

b=
M

3 (a n a n1 ) 3 (a n 1 a n 2 )
hn 1

hn 2

2(hn 2 + hn1 )

hn 1
1

c 0
c
1
x = c 2

M
c n

12
Ing. Adriana M. Apaza JTP Clculo Numrico

Clculo Numrico Programacin Aplicada

13
Ing. Adriana M. Apaza JTP Clculo Numrico

También podría gustarte