Está en la página 1de 11

Ejercicios de SPLINES Curso 2010-2011

Unidad Docente de Matemticas de la E.T.S.I.T.G.C. Asignatura: Complementos Formativos


1.- Dada la tabla de valores:



a) Encontrar el spline cbico natural que interpola estos datos, imponiendo las
condiciones requeridas y resolviendo el sistema.
b) Misma cuestin resolviendo previamente el sistema tridiagonal para el clculo de las
derivadas segundas del spline en los nodos.
c) Calcular el spline no nodo, hacer una grfica de nodos y del spline.
d) Dibujar el spline completo que interpola los datos, suponiendo que las derivadas
primeras del spline en los nodos inicial y final son -5 y 5, respectivamente.

Solucin
a)
( ) ( ) ( ) ( ) | |
( ) ( ) ( ) ( ) | |

e + + + =
e + + + =
=
2 1 1 1 1
2
1 1
3
1 1 1
1 0 0 0 0
2
0 0
3
0 0 0
x , x x d x x c x x b x x a x S
x , x x d x x c x x b x x a x S
) x ( S

( ) ( ) ( ) ( ) | |
( ) | |

e + + + =
e + + + + + + =
=
1 , 0 x d x c x b x a x S
0 , 1 x d 1 x c 1 x b 1 x a x S
) x ( S
1 1
2
1
3
1 1
0 0
2
0
3
0 0


( ) ( ) ( ) | |
( ) | |

e + + =
e + + + + =
=
1 , 0 x c x b 2 x a 3 x ' S
0 , 1 x c 1 x b 2 1 x a 3 x ' S
) x ( ' S
1 1
2
1 1
0 0
2
0 0


( ) ( ) | |
( ) | |

e + =
e + + =
=
1 , 0 x b 2 x a 6 x ' ' S
0 , 1 x b 2 1 x a 6 x ' ' S
) x ( ' ' S
1 1 1
0 0 0

Imponemos las 4n - 2 = 6 condiciones para que sea un spline cbico:

( )
( )
( )
( )
( ) ( )
( ) ( )

= = + =
= = + + =
= + + + =
= =
= + + + =
= =
1 1 0 0 0
1 1 0 0 0 0
1 1 1 1 1
1 1
0 0 0 0 0
0 0
b 2 0 ' ' S b 2 a 6 0 ' ' S
c 0 ' S c b 2 a 3 0 ' S
9 d c b a 1 S
7 d 0 S
7 d c b a 0 S
13 d 1 S


Adems, por tratarse de un spline natural, ha de verificarse:

( )
( )

= + =
= =
0 b 2 a 6 1 ' ' S
0 b 2 1 ' ' S
1 1 1
0 0

i
x -1 0 1
i
y 13 7 9
Ejercicios de SPLINES Curso 2010-2011
Unidad Docente de Matemticas de la E.T.S.I.T.G.C. Asignatura: Complementos Formativos

Los coeficientes del spline son, por tanto, las soluciones del sistema lineal:

0 0
0 0
0 0
0 0
1
1
1
1
0 0 0 1 0 0 0 0 13
1 1 1 1 0 0 0 0 7
0 0 0 0 0 0 0 1 7
0 0 0 0 1 1 1 1 9

3 2 1 0 0 0 1 0 0
6 2 0 0 0 2 0 0 0
0 2 0 0 0 0 0 0 0
0 0 0 0 6 2 0 0 0
a a
b b
c c
d d
a a
b
c
d
| | | | | |
| | |
| | |
| | |
| | |
| | |
=
| | |

| | |

| | |
| | |
| | |
| | |
\ . \ . \ .
1
1
1
1
2
0
8
13

2
6
2
7
b
c
d
| | | |
| |
| |
| |

| |
| |
=
| |

| |
| |
| |

| |
| |
\ . \ .


( ) ( ) | |
| |

e + +
e + + +
=
1 , 0 x 7 x 2 x 6 x 2
0 , 1 x 13 1 x 8 1 x 2
) x ( S
2 3
3


b) Por ser un spline natural, se verifica:
( )
( )

= =
= =
0 1 ' ' S r
0 1 ' ' S r
2
0

El sistema tridiagonal tiene n-1 = 1 ecuacin con una incgnita, que es ( ) 0 ' ' S r
1
= :
0
0
0 1 1
1 0
r
6
h
e e r
3
h h
=
+
,
siendo 1 h
i
= , 6
1 0
13 7
x x
y y
e
0 1
0 1
0
=
+

= , 2
0 1
7 9
x x
y y
e
1 2
1 2
1
=

= . Sustituyendo:
( ) ( ) 0 ' ' S 12 r 8 0
6
1
6 2 r
3
2
1 1
= = = =
El spline tiene por ecuacin:

( ) ( ) ( ) ( ) | |
( ) | |

e + + + =
e + + + + + + =
=
1 , 0 x d x c x b x a x S
0 , 1 x d 1 x c 1 x b 1 x a x S
) x ( S
1 1
2
1
3
1 1
0 0
2
0
3
0 0
,

siendo:
i
i 1 i
i
h 6
r r
a

=
+
,
2
r
b
i
i
= ,
i
i 1 i
i
i 1 i
i
h
3
r
6
r
h
y y
c
|
.
|

\
|
+

=
+ +
,
i i
y d = .
2
6
r r
a
0 1
0
=

= , 0
2
r
b
0
0
= = , 8 h
3
r
6
r
h
y y
c
0
0 1
0
0 1
0
= |
.
|

\
|
+

= , 13 y d
0 0
= = ;
2
6
r r
a
1 2
1
=

= , 6
2
r
b
1
1
= = , 2 h
3
r
6
r
h
y y
c
1
1 2
1
1 2
1
= |
.
|

\
|
+

= , 7 y d
1 1
= = .
( ) ( ) | |
| |

e + +
e + + +
=
1 , 0 x 7 x 2 x 6 x 2
0 , 1 x 13 1 x 8 1 x 2
) x ( S
2 3
3
.
Ejercicios de SPLINES Curso 2010-2011
Unidad Docente de Matemticas de la E.T.S.I.T.G.C. Asignatura: Complementos Formativos
c) Utilizamos la funcin spline de Matlab para calcular el spline no nodo:
>> x=[-1 0 1];
>> y=[13 7 9];
>> spline(x,y)

ans =
form: 'pp'
breaks: [-1 1]
coefs: [4 -10 13]
pieces: 1
order: 3
dim: 1

Como en el spline no nodo los polinomios de los dos primeros intervalos son el mismo,
se trata simplemente del polinomio interpolador de grado 2. Los coeficientes vienen dados
por el campo coefs de la respuesta: ( ) ( ) 13 1 x 10 1 x 4
2
+ + + .

Representamos el polinomio con Matlab:
>> xx=-1:0.2:1;
>> yy=spline(x,y,xx);
>> plot(x,y,*,xx,yy)
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
6
7
8
9
10
11
12
13

d) Utilizamos de nuevo la misma funcin de Matlab, spline, aadiendo las dos
condiciones del spline completo:
>> x=[-1 0 1];
>> y=[13 7 9];
>> xx=-1:0.2:1;
>> zz=spline(x,[-5 y 5],xx);
>> plot(x,y,*,xx,zz)
Ejercicios de SPLINES Curso 2010-2011
Unidad Docente de Matemticas de la E.T.S.I.T.G.C. Asignatura: Complementos Formativos
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
6
7
8
9
10
11
12
13

2.- Se quiere construir la lnea fronteriza entre dos poblaciones a partir de los datos que
figuran en la siguiente tabla:

i
x 0 1 2 3 4 5 6 7
i
y 0 25 34 72 115 92 71 65

a) Calcular el polinomio de interpolacin que pasa por todos los puntos. Hallar la
ordenada del punto de abscisa 2.5. Representar los datos junto al polinomio que los
interpola, que definira la frontera entre las poblaciones.
b) Utilizar un spline no nodo para perfilar la frontera. Hallar la ordenada del punto de la
misma de abscisa 2.5. Representar los datos junto al spline que los interpola en la
misma ventana de dibujo que el apartado a).
c) Utilizar un spline natural para perfilar la curva de separacin entre las poblaciones.
Solucin
a)
>> x=[0:7];

>> y=[0 25 34 72 115 92 71 65];

>> polyfit(x,y,7)

ans =

Columns 1 through 6

-0.1079 2.4944 -22.1222 93.9861 -195.3722 181.5194

Columns 7 through 8

Ejercicios de SPLINES Curso 2010-2011
Unidad Docente de Matemticas de la E.T.S.I.T.G.C. Asignatura: Complementos Formativos
-35.3976 -0.0000

>> polyval(ans,2.5)

ans = 47.3867

>> % obien:

>> p=polyfit(x,y,7);

>> polyval(p,2.5)

ans = 47.3867

>> % Dibujo:

>> hold on

>> xx=0:0.2:7;

>> yy=polyval(p,xx);

>> plot(x,y,'*',xx,yy)
0 1 2 3 4 5 6 7
-20
0
20
40
60
80
100
120

b)
>> % Spline no nodo

>> x=[0:7];

>> y=[0 25 34 72 115 92 71 65];

>> ppval(spline(x,y),2.5)

Ejercicios de SPLINES Curso 2010-2011
Unidad Docente de Matemticas de la E.T.S.I.T.G.C. Asignatura: Complementos Formativos
ans = 48.8484

>> % o bien:

>> spline(x,y,2.5)

ans = 48.8484

>> % Dibujo:

>> xx=0:0.2:7;

>> zz=spline(x,y,xx);

>> plot(x,y,'*',xx,zz)
0 1 2 3 4 5 6 7
-20
0
20
40
60
80
100
120

>> hold off

c) Utilizar un spline natural para perfilar la curva de separacin entre poblaciones.

n = 7, r
0
= S(0) = 0, r
7
= S(7) = 0.
Sistema tridiagonal para calcular r
i,
= S(x
i
) , i = 1, , 6:
Ejercicios de SPLINES Curso 2010-2011
Unidad Docente de Matemticas de la E.T.S.I.T.G.C. Asignatura: Complementos Formativos
0 1 1
0
1 1 2 2
1 0 0
1
2 2 1
2 3 3 2
3 3 2
4 3 3 4 4 3 4
5 5 4
4 5 5 4
6 6
6 5 7
5 5 6
0 0 0 0
3 6
0 0 0
6
6 3 6
0 0 0
6 3 6
0 0 0
6 3 6
0 0 0
6 3 6
6
0 0 0 0
6 3
h h h
h
h h h h
e e r
r
r e e
h h h h
r e e
r h h h e e h
r e e
h h h h
r h
e e r
h h h
+ | |
|
|
|
+
|

| |
|

|
|

+
|
|
|

|
=
|
|
+
|
|
|
|
|
|
| +
\ .
|

| \
| +
|
\ .
|
|
|
|
|
|
|
|
|
|
|
.

i 1 i i
x x h =
+
= 1, i = 0, , 6.
i 1 i
i 1 i
i
x x
y y
e

=
+
+
, i = 0, , 6
i
x
0 1 2 3 4 5 6 7
i
y
0 25 34 72 115 92 71 65
i
e
25 9 38 43 -23 -21 -6

1
2
3
4
5
6
2 1
0 0 0 0
3 6
1 2 1
0 0 0
1 6
6 3 6
2 9
1 2 1
0 0 0
5
6 3 6
1 2 1 6 6
0 0 0
6 3 6
2
1 2 1
1 5
0 0 0
6 3 6
1 2
0 0 0 0
6 3
r
r
r
r
r
r
| |
|
|
|
| | | |
|
| |
|
| |
|
| |
|
=
| |
|

| |
|
| |
|
| |
|
| |
\ . \ .
|
|
|
|
\ .

1 1
2 2
3 3
4 4
5 5
6 6
3 5 . 6 1 2 5 4 1 0 0 0 0 9 6
4 6 . 4 5 0 0 1 4 1 0 0 0 1 7 4
2 3 . 8 1 2 4 0 1 4 1 0 0 3 0
1 1 1 . 6 9 9 8 0 0 1 4 1 0 3 9 6
2 6 . 9 8 6 6 0 0 0 1 4 1 1 2
1 5 . 7 5 3 3 0 0 0 0 1 4 9 0
r r
r r
r r
r r
r r
r r
= | | | | | |
| | |
=
| | |
| | | =

=
| | |
=
| | |
| | |
=
| | |
| | |
=

\ . \ . \ .

Ejercicios de SPLINES Curso 2010-2011
Unidad Docente de Matemticas de la E.T.S.I.T.G.C. Asignatura: Complementos Formativos
A partir de las derivadas segundas se calculan los coeficientes del spline:

i
i 1 i
i
h 6
r r
a

=
+
,
2
r
b
i
i
= ,
i
i 1 i
i
i 1 i
i
h
3
r
6
r
h
y y
c
|
.
|

\
|
+

=
+ +
,
i i
y d = , i = 0, , 6
tales que ( ) ( ) ( ) ( )
i i i
2
i i
3
i i i
d x x c x x b x x a x S + + + = , | |
1 i i
x , x x
+
e ,
i = 0, , 6.

Se obtiene el spline:
( )
3
0
5.9354 30.9354 S x x x = +
( ) ( ) ( ) ( )
3 2
1
13.6771 1 17.8063 1 13.1292 1 25 S x x x x = + +
( ) ( ) ( ) ( )
3 2
2
3.7729 2 23.2250 2 18.5479 2 34 S x x x x = + + +
( ) ( ) ( ) ( )
3 2
3
22.5854 3 11.9062 3 53.6791 3 72 S x x x x = + + +
( ) ( ) ( ) ( )
3 2
4
23.1144 4 55.8499 4 9.7355 4 115 S x x x x = + +
( ) ( ) ( ) ( )
3 2
5
1.8722 5 13.4933 5 32.6211 5 92 S x x x x = + +
( ) ( ) ( ) ( )
3 2
6
2.6256 6 7.8767 6 11.2511 6 71 S x x x x = + +


Ejercicios de SPLINES Curso 2010-2011
Unidad Docente de Matemticas de la E.T.S.I.T.G.C. Asignatura: Complementos Formativos
3.- Un robot debe tomar un objeto situado en la posicin 1 y dejarlo en la posicin 6 del
recinto esquematizado en la figura. Para ello recorre una trayectoria definida por los puntos de
la tabla, que tratan de evitar los obstculos del recinto.


Paso 1 2 3 4 5 6
x 1 1 4 4 7 7
y 1 4 4 1 1 4


La trayectoria se obtiene interpolando los puntos dados ( )
k k
y , x mediante funciones p y q
tales que (p(t), q(t)) es la posicin del brazo en el instante t | | 1 , 0 e y (p(t
k
), q(t
k
)) = ( )
k k
y , x ,
siendo t
k
= 0.2 k, k = 0,1,,5. Representar grficamente la trayectoria obtenida si p y q son:

a) Los polinomios de interpolacin de ( )
k k
x , t y ( )
k k
y , t , respectivamente.
b) Splines no nodo.
c) Splines tales que la velocidad inicial y final del robot es 0.
d) Splines tales que la aceleracin inicial y final del robot es 0.
En qu casos la trayectoria no choca contra los obstculos ni las paredes del recinto?

Solucin
a)
>> %Interpolamos las abscisas:
>> t=0:0.2:1;
>> x=[1 1 4 4 7 7];
>> p=polyfit(t,x,5)

p =

1.0e+003 *

-0.6250 1.5625 -1.3750 0.5000 -0.0565 0.0010

>> %Interpolamos las ordenadas:
>> y=[1 4 4 1 1 4];
>> q=polyfit(t,y,5)

q =

-312.5000 781.2500 -625.0000 156.2500 3.0000 1.0000

>> %Representamos conjuntamente la trayectoria:
>> tt=0:0.01:1;
1
2 3
4 5
6
Ejercicios de SPLINES Curso 2010-2011
Unidad Docente de Matemticas de la E.T.S.I.T.G.C. Asignatura: Complementos Formativos
>> xx=polyval(p,tt);
>> yy=polyval(q,tt);
>> plot(x,y,'*',xx,yy)
-1 0 1 2 3 4 5 6 7 8 9
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5

b)
>> % Splines no nodo
>> tt=0:0.01:1;
>> xx=spline(t,x,tt);
>> yy=spline(t,y,tt);
>> plot(x,y,'*',xx,yy)
-1 0 1 2 3 4 5 6 7 8 9
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5

c)
>> % El interpolante pedido es el spline completo o de frontera sujeta
>> %en el que la derivada primera en los extremos es nula.
>> %Se obtiene con la orden "spline", aadiendo los valores de la
>> %derivada al vector de imgenes".
Ejercicios de SPLINES Curso 2010-2011
Unidad Docente de Matemticas de la E.T.S.I.T.G.C. Asignatura: Complementos Formativos
>> tt=0:0.01:1;
>> xx=spline(t,[0 x 0],tt);
>> yy=spline(t,[0 y 0],tt);
>> plot(x,y,'*',xx,yy)
0 1 2 3 4 5 6 7 8
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5

d) El spline pedido es el spline natural cuya derivada segunda se anula en los extremos
del intervalo.
Para calcularlo hay que resolver un sistema tridiagonal del tipo al utilizado en el ejercicio
2 apartado c). Saldra una grfica muy similar a la del spline completo.

En qu casos la trayectoria no choca contra los obstculos ni las paredes del recinto?
En el caso a) la trayectoria se sale de los lmites del recinto.
El spline no nodo roza ligeramente las paredes del recinto.
Los splines con condiciones sobre la primera (spline completo) o segunda derivada (spline
natural) en los extremos se comportan mucho mejor, quedando alejados en todo momento de
los bordes y los obstculos del recinto.