Está en la página 1de 24

Ing Yamil Armando Cerquera Rojas

yacerque@gmail.com

INTERPOLACIN CON TRAZADORES O SPLINES

SPLINES CBICOS
DEFINICIN
FUNCIONES SPLINES DE GRADO 1
FUNCIONES SPLINES DE GRADO 2
FUNCIONES SPLINES CUBICOS
Ejemplo Spline Cbico
Un caso particular
El caso general
Solucin Con MatLab
Ejercicios

Ing. Yamil Armando Cerquera Rojas


Especialista en Sistemas U. Nacional de Colombia
Docente Universidad Surcolombiana

TRAZADORES CBICOS: SPLINES CBICOS


Este tipo de interpolacin que ha demostrado poseer una gran finura y que inclusive es
usado para el diseo asistido por computadora, por ejemplo, de tipos de letra.
Esta interpolacin se llama interpolacin segmentaria o interpolacin por splines. La
idea central es que en vez de usar un solo polinomio para interpolar todos los datos, se
pueden usar segmentos de polinomios entre pares coordenados de datos y unir cada uno de
ellos adecuadamente para ajustar los datos.
Vale la pena resaltar que entre todas las formas de ajustar datos, los splines cbicos han
resultado ser los ms adecuados para cualquier tipo de aplicacin.
As pues, se puede decir de manera informal, 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.
Para un conjunto numeroso de puntos no es muy til calcular el polinomio interpolante que
pasa por estos puntos, pues ste tiende a tener grandes oscilaciones. Ms aconsejable es
hacer una interpolacin secuencial de grado bajo sobre subconjuntos ms pequeos del
total de puntos, definiendo as una funcin a trozos.
La interpolacin a trozos ms til y de uso generalizado en diversos campos tales como el
diseo, los grficos por computadora, la economa, etc., es la que se realiza mediante
polinomios de grado tres llamados trazadores o splines cbicos que se definen en cada uno
de los sub intervalos ( x k , x k +1 ) definidos por las abscisas de los puntos ( xi , y i ) a interpolar.
La idea es construir estos polinomios cbicos de tal forma que cualesquiera dos de ellos
definidos en intervalos contiguos ( xk 1 , xk ) y ( x k , x k +1 ) , ambos coincidan en xk no solo
como funcin sino tambin en su primera y segunda derivada, con el fin de que haya
suavidad en los puntos (xk,yk) de coincidencia de ambas grficas.
En cada sub intervalo (xi-1,xi).
Universidad Surcolombiana Neiva Huila Colombia

1 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

s(x) tiene derivada continua hasta de orden k-1 en (xo,xn).


FUNCIONES SPLINES DE GRADO 0
Los splines de grado 0 son funciones constantes por zonas. Una forma explcita de presentar
un spline de grado 0 es la siguiente:

S 0 ( x) = c 0 ....x (t 0 , t1 )
S ( x) = c ....x (t , t )

1
1
2
S ( x) = 1

....

S n 1 ( x) = c n 1 ....x (t n 1 , t n )
Los intervalos (ti-1,ti) (xi-1,xi) no se intersectan entre s, por lo que no hay ambigedad
en la definicin de la funcin en los nodos.

Figura 1: Spline de grado 0 con seis puntos.

FUNCIONES SPLINES DE GRADO 1


Los splines de grado 1 son funciones polinomiales de grado 1 (Rectas de la forma f(x)=ax+b)
que se encargan de unir cada par de coordenadas mediante una recta.
Dados los n+1 puntos:

x x0 x1 x2 ..... xn
y y0 y1 y2 .... yn
Una funcin spline de grado 1 que interpole los datos es simplemente unir cada uno de los
puntos (Par coordenados) mediante segmentos de recta, como se ilustra en las siguientes
figuras:

Fig 2

Universidad Surcolombiana Neiva Huila Colombia

Fig 3: Spline de grado 1 con 6 puntos

2 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

Claramente esta funcin cumple con las condiciones de la spline de grado 1. As, se tiene
que para este caso:

S 0 ( x) = a0 x + b0 ....x (t 0 , t1 )
S ( x) = a x + b ....x (t , t )

1
1
1
1 2
S ( x) =

....

S n1 ( x) = an 1 x + bn 1 ....x (t n 1 , t n )

S 0 ( x) = a0 x + b0 ....x ( x0 , x1 )
S ( x) = a x + b ....x ( x , x )

1
1
1
1
2
S ( x) =

....

S n 1 ( x) = an 1 x + bn1 ....x ( xn 1 , xn )
Donde:

1. sj(x) es un polinomio de grado menor o igual que 1


2. s(x) tiene derivada continua de orden k-1=0.
3. s(xj)=yj, para j=0,1,2,...,n
Por lo tanto, el spline de grado 1 queda definido como:

s(x) =

y 0 + f [x1 , x 2 ]( x x 0 ) si x [x 0 , x1 ]

y1 + f [x 2 , x1 ]( x x1 ) si x [x1 , x 2 ]

y n 1 + f [x n , x n 1 ]( x x n 1 ) si x [x n 1 , x n ]

Donde f[xi,xj] es la diferencia dividida de Newton.


FUNCIONES SPLINES DE GRADO 2
Los splines de orden dos, se encargan de unir cada par coordenado con ecuaciones
2
polinomiales de orden dos. Las ecuaciones son de la forma ax + bx + c .
Para aclarar bien la idea, vea un ejemplo concreto,
Ejemplo 2: Considere los siguientes datos:

x 3 4.5 7 9
y 2.5 1 2.50.5
Proceda a calcular la interpolacin por splines de grado 2. Primero que nada, observe que
se forman tres intervalos en los datos sobre el eje x:

[3,4.5]
[4.5,7]
[7,9]

Universidad Surcolombiana Neiva Huila Colombia

3 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

Para cada uno de los tres (3) intervalos, se debe definir una funcin polinomial de grado 2,
tal como se ilustra a continuacin:
s(x) =

a1 x 2 + b1 x + c1 si x [3,4.5]

a 2 x 2 + b2 x + c 2 si x [4.5,7 ]
a3 x 2 + b3 x + c3 si x [7,9]

Vale la pena aclarar que la ecuacin a1 x 2 + b1 x + c1 , une los puntos cuyas coordenadas estn
dadas por (3,2.5) y (4.5,1), la ecuacin a 2 x 2 + b2 x + c 2 , une los puntos cuyas coordenadas
estn dadas por (4.5,1) y (7,2.5), y la ecuacin a3 x 2 + b3 x + c3 los puntos cuyas coordenadas
estn dadas por (7,2.5) y (9,0.5). En conclusin siendo 4 par coordenados se unen estos
mediante tres ecuaciones polinomiales de orden 2.
Para resolver el problema, primero, se hace que el spline pase por los puntos de la tabla de
datos (por cada par coordenado). Es decir, se debe cumplir que:
s(3)=2.5, s(4.5)=1, s(7)=2.5 y s(9)=0.5
Teniendo en cuenta lo anterior, se forman las siguientes ecuaciones:

{
{

s(3) =2.5
S(4.5)=1

9a1 + 3b1 + c1 = 2.5


4.5 2 a1 + 4.5b1 + c1 = 1
4.5 2 a 2 + 4.5b2 + c 2 = 1
49a 2 + 7b2 + c 2 = 2.5
49a3 + 7b3 + c3 = 2.5
81a3 + 9b3 + c3 = 0.5

{
{

S(7)=2.5
S(9)=0.5

}
}
}
}

Ec 1
Ec 2
Ec 3
Ec 4
Ec 5
Ec 6

Hasta aqu, se tiene un total de 6 ecuaciones vs. 9 incgnitas. El siguiente paso es manejar
la existencia de las derivadas continuas. En el caso de los splines de grado 2, se necesita
que el spline tenga derivada continua de orden k-1=1, es decir, primera derivada continua.
Se calcula primero la primera derivada:
S(x) =

2a1 x + b1 si x [3,4.5]
2a 2 x + b2 si x [4.5,7 ]
2a3 x + b3 si x [7,9]

Se observa que las derivadas anteriores, estn formadas por segmentos de rectas, que
pudieran presentar discontinuidad en los cambios de intervalo. Es decir, las posibles
discontinuidades se daran en x=4.5 y x=7.0 Por lo tanto para que s'(x) sea continua, se
debe cumplir que: 2a1(4.5)+b1=2a2(4.5)+b2, siendo igual a:
S(4.5)

9a1+b1=9a2+b2

Ec 7

y tambin debe cumplirse que: 2a2(7)+b2=2a3(7)+b3, siendo igual a:


S(7)

14a2+b2=14a3+b3

Universidad Surcolombiana Neiva Huila Colombia

Ec 8

4 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

As que ahora, se tiene un total de 8 ecuaciones versus 9 incgnitas; esto da un grado de


libertad para elegir alguna de las incgnitas. Se elige por simple conveniencia a1 = 0 .
De esta forma, se tiene un total de 8 ecuaciones vs. 8 incgnitas, siendo las ecuaciones las
siguientes:

3b1 + c1 = 2.5
4.5b1 + c1 = 1
20.25a 2 + 4.5b2 + c 2 = 1
49a 2 + 7b2 + c 2 = 2.5
49a3 + 7b3 + c3 = 2.5
81a3 + 9b3 + c3 = 0.5
b1 9a 2 b2 = 0
14a 2 + b2 14a3 b3 = 0

Ec 1
Ec 2
Ec 3
Ec 4
Ec 5
Ec 6
Ec 7
Ec 8

Este sistema de ecuaciones tiene la siguiente forma matricial:

3
4.5
0
0
0
0
1
0

1
1
0
0
0
0
0
0

0
0
20.25
49
0
0
-9
14

0
0
4.5
7
0
0
-1
1

0
0 0
0
0 0
1
0 0
1
0 0
0 49 7
0 81 7
0
0 0
0 -14 -1

0
0
0
0
1
1
0
0

b1
c1
a2
b2
c2
a3
b3
c3

2.5
1
1
2.5
2.5
0.5
0
0

Haciendo uso de MatLab Scilab, se tendra lo siguiente:


x=[3 1 0 0 0 0 0 0
4.5 1 0 0 0 0 0 0
0 0 20.25 4.5 1 0 0 0
0 0 49 7 1 0 0 0
0 0 0 0 0 49 7 1
0 0 0 0 0 81 9 1
1 0 -9 -1 0 0 0 0
0 0 14 1 0 -14 -1 0];
b=[2.5;1;1;2.5;2.5;0.5;0;0];
x=inv(x)*b
x=

-1.0000
5.5000
0.6400
-6.7600
18.4600
-1.6000
24.6000
-91.3000

usando Mathematica se obtiene la siguiente solucin:


Universidad Surcolombiana Neiva Huila Colombia

5 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

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 a1=0), se obtiene la funcin spline cuadrtica que
interpola la tabla de datos dada:
s(x) =

x + 5.5

.0.64 x 6.76 x + 18.46


1.6 x 2 + 24.6 x 91.3
2

si
si
si

x [3,4.5]
x [4.5,7]
x [7,9]

La Figura 4, contiene tanto los puntos iniciales de la tabla de datos, as como el spline
cuadrtico. Esta grfica se gener usando Mathematica.

Fig 4

El mismo ejercicio anterior resuelto por MatLab sera de la siguiente manera


Cdigo 1: Produce Fig 5

Cdigo 2: Produce Fig 6

X=[3 4.5 7 9];


Y=[2.5 1 2.5 0.5]
X1=3:0.1:9;
Spl1=spline(X,Y,X1);
plot(X,Y,X1,Spl1);
axis([0,10,0,3.5])
grid on

X=[3 4.5 7 9];


Y=[2.5 1 2.5 0.5]
X1=3:0.1:9;
Spl1=spline(X,Y,X1);
plot(X,Y,X1,Spl1,X,Y,'o','MarkerFaceColor','g');
axis([0,10,0,3.5])
grid on

Universidad Surcolombiana Neiva Huila Colombia

6 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

Fig. 5

Fig. 6

haciendo uso de la funcin interp1 de MatLab se puede dar as:


X=[3 4.5 7 9];
Y=[2.5 1 2.5 0.5]
X1=3:0.1:9;
Int1=interp1(X,Y,X1,'spline');
plot(X,Y,X1,Int1,X,Y,'o','MarkerFaceColor','g');
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 CON SPLINES CUBICOS
El spline cbico (k=3) es el mtodo ms empleado como se ha mencionado anteriormente,
debido a que proporciona un excelente ajuste a los puntos tabulados y su clculo no es
excesivamente complejo.
Sobre cada intervalo [t 0 , t1 ], [t1 , t 2 ],..., [t n 1 , t n ] , S est definido por un polinomio cbico
diferente. Sea Si el polinomio cbico que representa a S en el intervalo [t i , t i 1 ], por tanto:

S 0 ( x)....x (t 0 , t1 )
S ( x)....x (t , t )

1 2
S ( x) = 1

....

S n 1 ( x)...x (t n1 , t n )
Los polinomios Si-1 y Si interpolan el mismo valor en el punto ti, es decir, se cumple:

Si-1(ti) = yi = Si(ti) 1 i n 1

Universidad Surcolombiana Neiva Huila Colombia

7 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

Por lo que se garantiza que S es continuo en todo el intervalo. Adems, se supone que S' y
S'' son continuas, condicin que se emplea en la deduccin de una expresin para la funcin
del spline cbico.
Aplicando las condiciones de continuidad del spline S y de las derivadas primera S' y
segunda S'', es posible encontrar la expresin analtica del spline. No vamos a obtener esta
expresin, ya que su demostracin queda fuera del mbito de estos apuntes. Simplemente
se dir que la expresin resultante es:

S i ( x) =

zi
z
y
z h
y zh
(ti +1 x) 3 + i +1 ( x t i ) 3 + ( i +1 + i +1 i )( x ti ) + ( i i i )(t i +1 x)
6hi
6hi
hi
6
hi
6

En la expresin anterior, hi=ti+1-ti y z0,z1,...,zn son incgnitas. Para determinar sus


valores, se utilizan las condiciones de continuidad que deben cumplir estas funciones. El
resultado (que tampoco se demuestra) es:

hi 1 zi 1 + 2(hi + hi 1 ) zi + hi zi +1 =

6
6
( yi +1 yi )
( yi yi 1 )
hi 1
hi 1

La ecuacin anterior, con i=1,2,....,n-1 genera un sistema de n-1 ecuaciones lineales con
n+1 incgnitas z0,z1,...,zn. Se puede elegir z0 y z1 de forma arbitraria y resolver el
sistema de ecuaciones resultante para obtener los valores de z1,z2,...,zn-1. Una eleccin
especialmente adecuada es hacer z0=z1=0. La funcin spline resultante se denomina spline
cbico natural y el sistema de ecuaciones lineal expresado en forma matricial es:

u1 h1

h1 u2

h2

h2
u3

h3
hn2

z1 v1

z
v
2 2
z = v
3 3

un1 zn2 vn1

En donde:

hi = t i +1 ti
hi21
ui = 2(hi + hi 1 )
ui 1
6
bi = ( yi +1 yi )
hi
h v
vi = bi bi 1 i 1 i 1
ui 1
Algoritmo para encontrar los coeficientes zi de un spline cbico.
Input n,ti,yi
for i=0,1,,n-1 do
Universidad Surcolombiana Neiva Huila Colombia

8 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

hi=ti+1-ti
bi=6(yi+1-yi)/hi
end
U1=2(ho+h1)
V1=b1-b0
for i=2,3,,n-1 do
ui=2(hi+hi-1)-h2i-1/ui-1
vi=bi-bi-1-hi-1vi-1/ui-1
end
zn=0
for i=n-1,n-1,...,1 do
zi=)vi-hizi+1)/ui
end
zo=0
output zi
Este sistema de ecuaciones, que es tridiagonal, se puede resolver mediante eliminacin
gaussiana sin pivoteo. El cdigo acepta como entrada un conjunto de nodos (ti) y el
conjunto de los valores de la funcin correspondiente (yi) y produce un vector con los
vectores zi. Por ltimo, el valor del spline S en un punto x cualquiera interpolado se puede
calcular de forma eficiente empleando la siguiente expresin:

S i ( x) = yi + ( x ti )[Ci + ( x ti )[Bi + ( x ti ) Ai ]]
En donde: Ai =

h
h
1
1
z
( zi +1 zi ) , Bi = i , C = i zi +1 i zi + ( yi +1 yi )
2
6
3
hi
6hi

Se muestra un ejemplo para ilustrar el empleo de los splines cbicos para interpolar los
valores de una tabla. En la tabla 1 se muestran algunos valores de una serie de valores
tabulados a intervalos regulares de la funcin f ( x) = x en el intervalo [0,2.25]. Tambin
se indican los valores interpolados empleando el correspondiente spline cbico as como el
error absoluto cometido. Obsrvese que el error es cero para los nudos. En la figura 7 se
representan grficamente los valores tabulados.
Tabla 1: Valores interpolados mediante un spline cbico para la
funcin N+1 e indicacin del error cometido (en valor absoluto).

Si(x)

a (x)

0.0000 0.0000 0.0000 0.0000E+00


0.0625

0.1426 1.0732E-01

0.1250

0.2782 7.5266E-02

0.1875

0.3997 3.3261E-02

0.2500 0.5000 0.5000 0.0000E+00


0.3125

0.5744 1.5440E-02

0.3750

0.6285 1.6155E-02

0.4375

0.6701 8.6732E-03

Universidad Surcolombiana Neiva Huila Colombia

9 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

0.5000 0.7071 0.7071 0.0000E+00


1.7500 1.3228 1.3228 0.0000E+00
1.8125

1.3462 6.8994E-07

1.8750

1.3693 5.9953E-06

1.9375

1.3919 8.7004E-06

2.0000 1.4142 1.4142 0.0000E+00


2.0625

1.4361 2.4522E-05

2.1250

1.4577 4.7329E-05

2.1875

1.4790 4.6215E-05

2.2500 1.5000 1.5000 0.0000E+00

En la Fig 7 se muestra la representacin de la funcin e

x +1

en el intervalo [0,7].

x=0:0.5:7;
y=exp(x+1);
xx = 0:.25:7;
yy = spline(x,y,xx);
plot(x,y,'o',xx,yy)
xlabel('0 < x < 7')
ylabel('exp(x+1)')
title('Funcion exp(x+1)')

x +1

Figure 7: Representacin de la funcin e


. Los crculos representan los valores tabulados
de la funcin y la lnea continua los puntos interpolados mediante una funcin spline cbica.

Universidad Surcolombiana Neiva Huila Colombia

10 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

En la figura 8 se muestra otro ejemplo. Se representan grficamente los puntos


interpolados mediante una funcin spline cbico para la funcin y=sin(x) haciendo uso de
Matlab.
x=0:pi/7:2*pi;
y=sin(x);
xx = 0:.25:2*pi;
yy = spline(x,y,xx);
plot(x,y,'o',xx,yy)
xlabel('0 < x < 2\pi')
ylabel('sin(x)')
title('Funcion sin(x)')

Figure 8: Representacin de la funcin y=sin(x). Los crculos representan los valores tabulados
de la funcin y la lnea continua los puntos interpolados mediante una funcin spline cbica.

Ejemplo Spline Cbico: Para hacer ms firme el entendimiento, se escribe la definicin


correspondiente a este caso (k=3).
Dados n+1 datos:

x x0 x1 x2 ..... xn
y y0 y1 y2 .... yn
Un Spline cbico que interpola estos datos, es una funcin s(x) definida como sigue:

s0 ( x) si x [ x0 , x1 ]
s ( x) si x [ x , x ]

1
2
s( x) = 1

...

s n1 ( x) si x [ xn1 , xn ]
Donde cada si(x) es un polinomio cbico; si(xi)=yi, para toda i=0,1,....,n y tal que s(x)
tiene primera y segunda derivadas continuas en (xo,xn)
Universidad Surcolombiana Neiva Huila Colombia

11 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

Ejemplo 3. Interpolar los siguientes datos mediante un spline cbico:

-1

-7

Solucin: Se define un polinomio cbico en cada uno de los intervalos que se forman:
A continuacin, Se busca que se cumpla la condicin de que la spline debe pasar por los
puntos dados en la tabla, o sea s(x)=y, as, se tiene que:
s(2) = -1

8a1+ 4b1+2c1+d1 = -1
27a1+ 9b1+3c1+d1 = 2
s(3)

27a2+ 9b2+3c2+d2 = 2
= 2
s(5) = -7 125a2+25b2+5c2+d2 = -7

Ec 1
Ec 2
Ec 3
Ec 4

Ahora se calcula la primera derivada de s(x):

s'(x)=

3a1x2+2b1x+c1
3a2x2+2b2x+c2

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

Al igual que en el caso de los splines cuadrticos, 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 x=3. Para evitar esta discontinuidad, se
evala en x=3 los dos polinomios y se igualan de la siguiente manera: 3a1(3)2+2b1(3)+c1=
3a2(3)2+2b2(3)+c2. Siendo igual a:

27a1+6b1+c1=27a2+6b2+c2 Ec 5
De la misma manera se procede con la segunda derivada:

s''(x)
=

6a1x+2b1

si x [2,3]

6a2x+2b2

si x [3,5]

Para lograr que s''(x) sea continua en el punto x=3m


correspondera a:

6a1(3)+2b1= 6a2(3)+2b2, que


18a1+2b1= 18a2+2b2 Ec 6

En este punto se cuenta con 6 ecuaciones y 8 incgnitas, por lo tanto se tienen 2 grados
de libertad; en general, se agregan las siguientes 2 condiciones:

s''(xo)=0
s''(xn)=0

De lo cual se obtiene:

s''(2)=0 entonces 6a1(2)+2b1 = 0 ::


12a1+2b1 = 0 Ec 7
s''(5)=0 entonces 6a2(5)+2b2 = 0 :: 30a2+2b2 = 0
Ec. 8
Con lo cual, se ha completado un juego de 8 ecuaciones vs. 8 incgnitas, como sigue:

8a1+ 4b1+2c1+d1
Universidad Surcolombiana Neiva Huila Colombia

= -1
12 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

27a1+ 9b1+3c1+d1

27a2+ 9b2+3c2+d2
125a2+25b2+5c2+d2
-27a2 - 6b2 - c2
-18a2 - 2b2

27a1+6b1+c1
18a1+2b1
12a1+2b1

30a2+ 2b2

= 2
= 2
= -7
= 0
=0
=0
=0

Cuya forma matricial es la siguiente:

8
27
0
0
27
18
12
0

4
9
0
0
6
2
2
0

2
3
0
0
1
0
0
0

1
0
1
0
0 27
0 125
0 -27
0 -18
0
0
0
30

0 0 0 a1
0 0 0 b1
9 3 1 c1
25 5 1 d1
-6 -1 0 a2
-2 0 0 b2
0 0 0 c2
2 0 0 d2

-1
2
2
-7
0
0
0
0

Usando Matlab se tendra la solucin con el siguiente cdigo:


hold off
Xi=[2 3 5];
Yi=[-1 2 -7];
x=[8 4 2 1 0 0 0 0; 27 9 3 1 0 0 0 0; 0 0 0 0 27 9 3 1; 0 0 0 0 125 25 5 1; 27 6 1 0 -27 -6 -1 0; 18 2 0 0 18 -2 0 0; 12 2 0 0 0 0 0 0; 0 0 0 0 30 2 0 0];
y=[-1; 2; 2; -7; 0; 0; 0; 0];
var=inv(x)*y;
plot(Xi,Yi,'o','MarkerFaceColor','g')
axis([0 6 -8 4]);
grid on
y1=2:0.1:3;
y2=3:0.1:5;
x1=var(1:4);
x2=var(5:8);
yi1=polyval(x1,y1);
yi2=polyval(x2,y2);
hold on;
plot(y1,yi1,y2,yi2)
%var =
%
7.5000
%
-67.5000
% 198.0000
% -187.0000
%
-0.0000
%
0.0000
%
-4.5000
%
15.5000

Universidad Surcolombiana Neiva Huila Colombia

13 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

Fig. 9

Si se agregan las siguientes dos lneas para realizarlo directamente con la funcin spline del
matlab se tendr la siguiente figura:
xx=0:0.1:6;
Int1=interp1(Xi,Yi,xx,spline);
plot(xx,Int1,r);

Fig. 10

usando Mathematica, se obtiene la siguiente solucin:

a1
b1
c1
d1
a2
b2
c2
d2

= -1.250
=
7.500
= -10.750
=
0.500
=
0.625
= -9.375
= 39.875
= -50.125

Universidad Surcolombiana Neiva Huila Colombia

14 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

Sustituyendo estos valores en la funcin inicial, se ve que el spline cbico para la tabla de
datos dada, queda definida como sigue:

1.25 x 3 + 7.5 x 2 10.75 x + 0.5 si x [2,3]


s ( x) =

3
2
0.625 x 9.375 x + 39.875 x 50.125 si x [3,5]
Se muestra la grfica correspondiente a este ejercicio, creada tambin en Mathematica.

Fig. 11

Obsrvese la finura con la que se unen los polinomios cbicos que conforman el spline.
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 los splines cbicos, para cuestiones como el diseo de letras por
computadoras, o bien a problemas de aplicacin donde la interpolacin que se necesita es
de un caracter bastante delicado, como podra tratarse de datos mdicos sobre algn tipo
de enfermedad.
Ejemplo 4: Interpolar los siguientes datos utilizando splines cbicos:

x -1 1 2 4
y -1 1 5 -2
Solucin: Nuevamente, se define un polinomio cbico en cada uno de los intervalos:

a1 x 3 + b1 x 2 + c1 x + d 1 , si x [ 1,1]

S ( x) = a2 x 3 + b2 x 2 + c2 x + d 2 , si x [1,2]
a x 3 + b x 2 + c x + d , si x [2,4]
3

3
3
3
Despus, se hace que el Spline pase por los puntos dados en la tabla. As, se tiene que:
s(-1)= -1 implica que, a1 + b1 c1 + d1 = 1
s(1)=1 implica que, a1 + b1 + c1 + d1 = 1 , a2 + b2 + c2 + d 2 = 1
s(2)=5 implica que, 8a2 + 4b2 + 2c2 + d 2 = 5 , 8a3 + 4b3 + 2c3 + d 3 = 5
Y finalmente s(4)= -2 implica que, 64a3 + 16b3 + 4c3 + d 3 = 2

Universidad Surcolombiana Neiva Huila Colombia

15 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

Enseguida, se calcula la primera derivada:

3a1 x 2 + 2b1 x + c1 , si x [ 1,1]

S `( x) = 3a2 x 2 + 2b2 x + c2 , si x [1,2]

2
3a3 x + 2b3 x + c3 , si x [2,4]
Se nota entonces, que las posibles discontinuidades de s'(x) son x=1 y x=2. Por lo tanto,
para hacer que s'(x) sea continua, se igualan las ecuaciones correspondientes en ambos
valores:

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


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

6a1 x + 2b1 , si x [ 1,1]

S ``( x) = 6a2 x + 2b2 , si x [1,2]


6a x + 2b , si x [2,4]
3
3

Nuevamente, las posibles discontinuidades se podran dar en los puntos 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


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,

Con esto se tiene un juego de Doce ecuaciones vs. Doce incgnitas:

Universidad Surcolombiana Neiva Huila Colombia

16 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

Este sistema tiene la siguiente forma matricial:

1
1

0
0

0
3

0
3

3
0

1 1 1 0 0 0 0 0 0 0 0 a1 1
1 1 1 0 0 0 0 0 0 0 0 b1 1
0 0 0 1 1 1 1 0 0 0 0 c1 1

0 0 0 8 4 2 1 0 0 0 0 d1 5
0 0 0 0 0 0 0 8 4 0 1 a 2 5

0 0 0 0 0 0 0 64 16 4 1 b2 2
=
2 1 0 3 2 1 0 0 0 0 0 c 2 0

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

0 0 0 6 1 0 0 6 1 0 0 b3 0

1 0 0 0 0 0 0 0 0 0 0 c3 0
0 0 0 0 0 0 0 12 1 0 0 d 3 0

Usando Mathematica, se obtiene la solucin:

, a = 21 , a3 = 24
a1 = 51
140 2
10
35
, b = 297 , b3 = 288
b1 = 153
140 2
35
35
,

,
,

Por lo tanto, la Spline cbico es:

Finalmente, se muestra la grfica correspondiente.

Universidad Surcolombiana Neiva Huila Colombia

17 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

Fig. 12

Un caso particular
Se ilustra un proceso de construccin con el ejemplo siguiente, en el cual se trata de hallar
el trazador cbico para los puntos:

( x 0 , y 0 ) = (1,2),

( x1 , y1 ) = (3,4), ( x 2 , y 2 ) = (4,3), ( x 3 , y 3 ) = (6,2) .

Fig. 13

Como puede observarse, es necesario construir el trazador S(x) que se define como So(x)
en el intervalo [1,3], como S1(x) en el intervalo [3,4] y como S2(x) en el intervalo [4,6],
donde

Como x0 = 1 , x1 = 3 , x2 = 4 y x3 = 6 , es claro que


Adems se define a3 = S 2 ( x3 ) .
En los siguientes pasos se dan condiciones que deben cumplir los coeficientes de los
polinomios cbicos a j , b j , c j , d j , para j=0,1,2

Universidad Surcolombiana Neiva Huila Colombia

18 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

1. Continuidad.
En primer lugar, se pide que So(x) coincida con S1(x) en x1. Adems, S1(x) debe
coincidir con S2(x) en x2. Estas dos condiciones, junto a la definicin que se hizo
antes de que a3 = S 2 ( x3 ) conducir a las tres ecuaciones:
Ec 1

2. donde: hj = x j +1 x j , para j=0,1,2.


3. Suavidad. Como S j ( x) = b j + 2c j ( x x j ) + 3d j ( x x j ) , para j=0,1,2
'

Ahora debe cumplirse que S o ( x1 ) = S1 ( x1 ) y que S1 ( x2 ) = S 2 ( x2 ) . Al agregarle a


estas dos condiciones la definicin de b3 = S ' 2 ( x3 ) , se obtienen las tres ecuaciones:
'

'

'

'

b j +1 = b j + c j h j + 3d j h 2j , para j=0,1,2 Ec 2
4. Coincidencia en concavidad.
Calculando la segunda derivada de cada uno de los polinomios S j ( x) :
S "j ( x) = 2c j + 6d j ( x x j ) Para j=0,1,2

Ahora se le pide la condicin S o ( x1 ) = S1 ( x1 ) y S1 ( x2 ) = S 2 ( x2 ) . Como S ' ' j ( x j ) = 2c j


para j=0,1,2. De manera similar a como se hizo en los anteriores casos, se agrega la
definicin de c3 = S ' ' 2 ( x3 ) / 2 , se obtienen las ecuaciones:
"

"

"

"

Ec 3
5. Despejando d j de la ecuacin 3 se obtiene:

Ec 4
6. sustituyendo d j en 1 y en 2 se obtienen las relaciones 5 y 6:
a j +1 = a j + b j h j +

b j +1

h 2j

(2c j + c j +1 ) , j=0,1,2
3
= b j + (c j + c j 1 )h j , j=0,1,2

Ec 5
Ec 6

7. Despejando b j de la ecuacin 5

Ec 7
8. y haciendo un corrimiento de ndices, se obtiene:

Universidad Surcolombiana Neiva Huila Colombia

19 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

Ec 8
9. De igual forma, en la ecuacin 6 se hace un corrimiento de ndices para obtener
b j = b j 1 + (c j 1 + c j )h j 1 , j=1,2,3 Ec 9
10. Al sustituir en esta ltima ecuacin la expresin para bj obtenida en Ec7 y en Ec8, y
haciendo las simplificaciones del caso se obtiene el sistema de ecuaciones:
11. 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 ) , para j=1,2
hj
h j 1

12. Concretamente, es el sistema:

13. Trazador cbico con frontera libre


Hay varios tipos de trazadores que se pueden obtener, dependiendo de las
condiciones de frontera que le pongamos en los extremos x0 ,xn, en el cual se est
haciendo la interpolacin. En este material, y continuando con el ejemplo que
estamos trabajando, le pedimos al trazador S ( x) las condiciones:
S ' ' ( x0 ) = 0 y S ' ' ( x3 ) = 0 , por lo que se concluye que c0 =0y que c3 = 0 . De esta manera
el sistema anterior puede escribirse en forma matricial:

En el ejemplo, el sistema anterior toma la forma:

La solucin de este sistema es: c0 = 0 , c1 = 1.0714286 , c2 = 0.4285714 , c3 = 0


Como ya se saba desde antes,: a0 = 2 , a1 = 4 , a 2 = 3 , a3 = 2
d 0 = 0.1785714
De la ecuacin 4 se calcula: d1 = 0.5
d = 0.0714857
2

Universidad Surcolombiana Neiva Huila Colombia

20 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

b0 = 1.7142857
De la ecuacin 7 se obtiene: b1 = 0.4285714
b = 1.0714285
2

Finalmente, se concluye que el trazador cbico con frontera libre es:


S 0 ( x) = 2 + 1.7142857( x 1) 0.1785714( x 1) 3
si x [1,3]

2
3
S ( x) = S1 ( x) = 4 0.4285714( x 3) 1.0714286( x 3) + 0.5( x 3)
si x [3,4]

2
3
S 2 ( x) = 3 1.0714285( x 4) + 0.4285714( x 4) 0.0714857( x 4) si x [4,6]

Fig. 14

El caso general
Para un conjunto de N+1 puntos ( x , y 0 ), ( x1 , y1 ), ( x 2 , y 2 ),..., ( x n , y n ) , en el proceso de
construccin del trazador cbico, se buscan los coeficientes a j , b j , c j y d j , que cumplan
las siguientes relaciones:
1. S j ( x) = a j + b j ( x x j ) + c j ( x x j ) 2 + d j ( x x j ) 3 , para j=0,1,2,n-1

2. a j = S j ( x j ) = y j , para j=0,1,2,.. n-1. Adems, a n = s n1 ( xn ) = y n


3. h j = x j +1 x j , para j=0,1,2,n-1
4. d j =

1
(c j +1 c j ) , para j=0,1,2,n-1
3h j

5. b j =

hj
1
(a j +1 a j ) (2c j + c j +1 ) , para j=0,1,2,n-1
hj
3

6. Se forma un sistema de n 1 ecuaciones con N + 1 incgnitas c0 , c1 ,..., cn :

Universidad Surcolombiana Neiva Huila Colombia

21 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

Al agregarle a este sistema las condiciones de frontera libre S " ( xo ) = S " ( x n ) = 0 , se


concluye que c0 = cn = 0 y el sistema resulta con una matriz tridiagonal de
coeficientes que tiene solucin nica. Adems, esta es una solucin explcita.
7. Algoritmo de trazador con frontera libre.

Entrada: ( x0 , y 0 ), ( x1 , y1 ),...( xn , y n ) , con x0 < x1 < ...xn .


Salida: a j , b j , c j , d j para j = 0,1,..., n 1
1.

Para j = 0,1,..., n 1 : se define

h j = x j +1 x j

aj = yj
2.

an = y n

3. Para j = 0,1,...,n 1 : se define

j =
4.

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

h j 1h j

Se define

io = 1 , 0 = 0 , z 0 = 0 , in = 1 , z n = 0 , cn = 0
5. Para j = 1,2,..., n 1 se define
li = 2(hi + hi 1 ) hi 1 i 1

i = hi / li
zi = ( i hi 1 zi 1 ) / li

6. Para j = n 1, n 1,...,0 se define

c j = z j j c j +1
bj = (a j +1 a j ) / hj hj (c j +1 + 2c j ) / 3

d j = (c j +1 c j ) /(3h j )
Prctica con MATLAB
En primer lugar se espera que el usuario resuelva el sistema de ecuaciones lineales con el
que se concluy la seccin introductoria y use los comandos especficos de MATLAB para su
solucin.
En efecto, se puede seguir la siguiente secuencia de instrucciones para determinar la
solucin del sistema.
A=[

1.331 1.21 1.1 1;


12.167 5.29 2.3 1;

Universidad Surcolombiana Neiva Huila Colombia

22 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

59.319 15.21 3.9 1;


132.651 26.01 5.1 1];
b = [];
b = [3.887; 4.276; 4.651; 2.117];
c = A\b
c = -0.2015
1.4385
-2.7477
5.4370
Con este proceso se han obtenido los coeficientes del polinomio.
Otra manera de resolverlo es directamente con comandos especficos del software, como se
explica a continuacin.
MATLAB realiza varias tareas de interpolacin mediante el comando INTERP1, el cual,
dependiendo de los parmetros con que sea evaluado, ejecuta mtodos diferentes de
interpolacin2
Para hallar los coeficientes del polinomio interpolante podemos recurrir al comando polyfit,
que tiene sintaxis polyfit(X,Y,m), el cual retorna el polinomio de mnimos cuadrados de
grado de mejor ajuste a los datos. Es bien sabido que si tenemos puntos el polinomio de
grado que mejor se ajusta a esos datos en el sentido de mnimos cuadrados es precisamente
el polinomio interpolante.
Por ejemplo, para hallar el resultado del polinomio interpolante que pasa por los cuatro
puntos ,, y al evaluarlo en el valor de , se puede seguir la siguiente secuencia de
instrucciones:
X=[1.1, 2.3, 3.9, 5.1];
Y=[3.8870, 4.2760, 4.65110, 2.1170];
P = polyfit(X,Y,3)
Resultado=Polyval(P,2.5)
Esto da como resultado
P=
-0.2015 1.4387 -2.7481
Resultado =
4.4108

5.4372

El resultado obtenido en la variable P son los coeficientes del polinomio de interpolacin


dispuestos en un vector:
P = -0.2015

1.4387 -2.7481

5.4372

Estos coeficientes se interpretan como el polinomio:


0.2015 x 3 + 1.4387 x 2 2.7481x + 5.4372

Note que la instruccin >> Resultado=Polyval(P,2.5), permite encontrar el valor del


polinomio evaluado en 2.5. Esta funcin de MATLAB permite tambin evaluar un polinomio
en un vector de valores y en este caso retornara un vector de resultados. Esta
adaptabilidad de la funcin Polyval para evaluarse en un vector de valores la hace muy til

Universidad Surcolombiana Neiva Huila Colombia

23 de 24

Ing Yamil Armando Cerquera Rojas


yacerque@gmail.com

para graficar cualquier polinomio en un intervalo dado, como se ver en el siguiente


ejemplo.
La siguiente secuencia de instrucciones est orientada al clculo del polinomio interpolante
para los puntos (1,5), (3,1), (4,3), (5,-1), (7,4) y (10,2) y, alternativamente la aproximacin
y visualizacin del trazador cbico (splines).
hold off
x=[1 3 4 5 7 10];
y=[5 1 3 -1 4 2];
P = polyfit(x,y,5);
t=0:0.1:11;
W=polyval(P,t);
plot(x,y,'*k')
hold on;
plot(t,W,'k')
z=interp1(x,y,t,'spline');
plot(t,z,'r')
En figura 15 puede compararse el trazador cbico con el polinomio interpolante para los
seis puntos. Como puede notarse, el trazador cbico se acomoda mejor a los datos y no
produce oscilaciones indeseables para efecto de hacer extrapolaciones ms apropiadas.

Fig. 15

Universidad Surcolombiana Neiva Huila Colombia

24 de 24

También podría gustarte

  • Presentación Myhill
    Presentación Myhill
    Documento19 páginas
    Presentación Myhill
    Sase Schiffer Fiori
    Aún no hay calificaciones
  • Lec 4
    Lec 4
    Documento16 páginas
    Lec 4
    Sase Schiffer Fiori
    Aún no hay calificaciones
  • Teorema Fundamental de Laaritmetica
    Teorema Fundamental de Laaritmetica
    Documento30 páginas
    Teorema Fundamental de Laaritmetica
    William Alberto Valencia Pinzon
    Aún no hay calificaciones
  • Planeacion de Proyectos
    Planeacion de Proyectos
    Documento26 páginas
    Planeacion de Proyectos
    Sase Schiffer Fiori
    Aún no hay calificaciones
  • Comp Il Adores
    Comp Il Adores
    Documento24 páginas
    Comp Il Adores
    Sase Schiffer Fiori
    Aún no hay calificaciones
  • Eb Splines Cubicos
    Eb Splines Cubicos
    Documento24 páginas
    Eb Splines Cubicos
    Sase Schiffer Fiori
    Aún no hay calificaciones
  • Tutorial BM
    Tutorial BM
    Documento18 páginas
    Tutorial BM
    Jeremy Reed
    Aún no hay calificaciones
  • Autómatas
    Autómatas
    Documento16 páginas
    Autómatas
    Sase Schiffer Fiori
    Aún no hay calificaciones