Académique Documents
Professionnel Documents
Culture Documents
El origen del concepto spline proviene del uso de una lmina de plstico delgada
llamada curvgrafo ("spline") en el trazado de curvas suaves a travs de un
conjunto de puntos (Sheid 1991).Las funciones "spline" son ecuaciones cbicas
que modelan el comportamiento de las curvas realizadas por dicho instrumento,
permitiendo unir en forma suave y continua una serie de puntos.
Esta interpolacin se llama interpolacin segmentaria o interpolacin por splines.
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 , esta interpolacin posee una gran finura, y que inclusive
es usado para el diseo por computadora, por ejemplo, de tipos de letra.
La ms populares son los polinomios cbicos por tramos y en especial los splines
cbicos (naturales), por las siguientes razones:
1, Breve historia
Tomado de NA. Digest.v.98,#s6. 19 de julio de 1998.Mait to na.digest@nanet.oml.gov Information about NA-NET:Mail to nahelp@na-net.ornl.gov URL :
http://www.netlib.org/na-net/na_home.html
Hace dos semanas puse aqu una pregunta acerca de las conexiones entre el
desarrollo de aproximaciones de splines y el diseo de cuerpos automotores, y
recib cerca de 30 respuestas, todas ellas muy informativas. Dado que muchos de
ellos me pidieron que mostrara lo que haba aprendido, decid escribir un breve
resumen y subirlo al compendio. Esta es la razn de estas notas.
Se acepta comnmente que la primera referencia matemtica de los splines es el
trabajo de Schoenberg [s], donde probablemente fue el primer lugar donde el
trmino spline se us en conexin con la aproximacin polinomial tenue por
piezas. Sin embargo, estas ideas tienen sus races en las industrias de aviacin y
Construccin de barcos. En el reenvio a [BBB], Robin Forrest describe el
localizar, una tcnica en la industria britnica de aviacin usada durante la
Segunda Guerra Mundial, para construir plantillas para aviones, pasando tablones
de madera delgadas a travs de puntos en el suelo de un local de diseo grande.
Las plantillas estaran puestas en puntos discretos (llamados patos por Forrest;
2. Teora Matemtica
Los polinomios de grado mayor tienen naturaleza oscilatoria y fluctuaciones sobre
una porcin pequea del intervalo estudiado puede inducir cambios muy grandes
sobre un rango considerable, restringen el uso cuando se aproximan muchas
delas funciones en situaciones fsicas reales.
La tcnica llamada aproximacin polinmica segmentaria busca resolver este
problema dividiendo el intervalo de la funcin f
en una coleccin de subintervalos y construir polinomios aproximadamente
diferentes en cada uno.
La aproximacin de este tipo ms empleada es la interpolacin cbica de spline
Esta tcnica requiere que en el intervalo el polinomio sea diferenciable
continuamente y que adems tenga segunda derivada. Pero a pesar de esta
condicin, el trazador cbico no supone que las derivadas del interpolante
coinciden con las de la funcin.
A esta forma de aproximar se le conoce como aproximacin polinomial
fragmentaria.
Aproximacin polinomial fragmentaria.
La Aproximacin polinomial fragmentaria es la interpolacin lineal fragmentaria
que consiste en unir una serie de puntos.
[ x 0 , x 1 ] , [ x 1 , x 2 ] , [ x n1 , x n ]
[ x0 , xn ]
H3
podemos hacer el clculo sin gran dificultad, Sin embargo, para utilizar los
polinomios fragmentarios de Hermite en la interpolacin general, necesitamos
conocer la derivada de la funcin que va ser aproximada, lo cual muchas veces no
es posible.
El tipo ms simple de funcin de polinomio fragmentario diferenciable en un
x ,x
intervalo entre [ 0 n ] es la funcin obtenida al ajustar un polinomio cuadrtico
entre cada par consecutivo de nodos. Esto se hace construyendo una cuadrtica
[ x 0 , x 1 ] que concuerde con la funcin en x 0 y en x 1 ; y as
en
sucesivamente. Un polinomio cuadrtico general tiene tres constantes arbitrarias:
el trmino constante, el coeficiente de x y el coeficiente de
x2
y nicamente se
requieren dos condiciones para ajustar los datos en los extremos de cada
intervalo, por ellos, existe flexibilidad que permite seleccionar la cuadrtica de
x ,x
modo que la interpolante tenga una derivada continua en [ 0 n ] . El problema
Splines cbicos
La aproximacin polinmica fragmentaria ms comn utiliza polinomios entre cada
par consecutivo de nodos y recibe el nombre de interpolacin de trazadores
cbicos. Un polinomio cbico general contiene cuatro constantes; as pues, el
procedimiento del trazador cbico ofrece suficiente flexibilidad para garantizar que
el interpolante no slo sea continuamente diferenciable en el intervalo, sino que
adems tenga una segunda derivada continua en el intervalo. Sin embargo, en la
construccin del trazador cbico no se supone que las derivadas del interpolante
concuerdan con las de la funcin, ni siquiera en los nodos.
Definicin.
definida en
[ a , b]
y un conjunto de nodos
es una funcin
S j ( x ) ,el subintervalo
j=0,1, , n1 ;
b.
S ( x j )=f ( x j )
c.
d.
e.
para cada
j=0,1, , n ;
para cada
j=0,1, , n2 ;
para cada
j=0,1, , n2
j=0,1, , n2
[ x j , x j+1 ]
S ( x 0 ) =f ( x n ) y S ( x n ) =f ( x n )
(frontera sujeta).
Aunque los splines cbicos se definen con otras condiciones de frontera, las
condiciones dadas en ( f ) son suficientes en este caso. Cuando se presentan
las condiciones de frontera libre, el trazador recibe el nombre de spline natural y
su grfica se aproxima a la forma que adoptara una varilla larga y flexible si la
hiciramos pasar por los puntos
{( x , f ( x ) ) , ( x , f ( x ) ) , , ( x , f ( x ) ) }
0
de determinada funcin
f ,
xx j
,
S j ( x )=a j +b j ( x x j ) +c j
j=0,1 , . , n1 . Como
Para cada
S j ( x j ) =a j=f ( x j ) ,
puede aplicarse la
Para cada
j=0,1 , . , n2
Los trminos
x j+1 x j
j=0,1 , . , n1
. Si tambin definimos
an =f ( x n )
entonces la
ecuacin
(I)
Ser vlida para cada
j=0,1 , . , n1
Significa que
S ( x j )=b j
x
( n)
bn =S
para cada
y observe que
obtenemos
(II)
j=0,1 , . , n1
Para cada
Al definir
c n=S ( x n)/2
coeficientes de
SJ
j=0,1 , . , n1
c j +1=c j +3 d j h j
dj
Al despejar
(II) para cada
(III)
(IV)
Y
(V)
La relacin final que incluye los coeficientes se obtiene resolviendo la ecuacin
bj
correspondiente en la forma de la ecuacin (IV) , primero para
(VI)
Y luego, con una reduccin del ndice, para
b j1
(VII)
Para cada
j=0,1 , . , n1 .
Splines naturales
Si
est definida en
, entonces
x0 , x1 , , xn
tendr una
es decir, una
S ( a )=0 y
S ( b )=0
Demostracin. En este caso las condiciones de frontera significan que
c n=S ( x n)/2
y que
0=S ( x 0 )=2 c 0 +6 d 0 ( x 0x 0 ) ,
as que
c 0=0
c 0=0
c n=0
(VII)
Producen un sistema lineal descrito por la ecuacin vectorial
la matriz de
( n+1 ) ( n+1 )
Ax=b , donde A es
3. Solucin de problemas
a) Construya un spline natural cbico que pase por los puntos (1,2) ;(2,3) y (3,5)
Este spline consiste de dos cbicas. La primera para el intervalo
[ 1,2 ] , denotada
por:
Y la otra para
S 0 ( 2 )=S 1 (2 ) :b 0+ 2c 0 +3 c 0=b1
y S 0 ( 2 )=S 1 ( 2 ) :2 c 0 +6 d 0=2c 1
S 0 ( 1 )=0; 2 c 0=0
S 1 ( 3 ) =0 :2 c1 +6 d 1=0
4. Algoritmos
El spline cubico natural. Matlab, por defecto, calcula splines cbicos con la
condicin not-a-knot, que es cierta relacin entre derivadas en los puntos
extremos y los inmediatos. Solo se pueden calcular splines naturales con un
toolbox. El cdigo que sigue implementa el clculo del spline cubico natural de
una coleccin de puntos.
La entrada
es:
x: la lista de las coordenadas x de los puntos
y: la lista de las coordenadas y de los puntos
Devuelve un objeto" de Matlab que se denomina polinomio a trozos, que describe
exactamente un objeto polinomial definido a trozos: los intervalos en los que est
definido vienen dados por el vector x y su valor en un t (que hay que computar
utilizando la funcin ppval)
% spline cubico 'natural ': en ambos extremos , la
% derivada segunda es 0.
% la entrada es una nube de puntos con al menos
% dos puntos
function [f] = spline_cubico (x, y)
n = length (x) -1;
if(n <=1 | length (x) ~= length (y))
8
warning ('Wrong data ')
f= [];
return
end
breaks = x;
a = y (1:n);
h = diff (x);
F = zeros (n);
alpha = zeros (n, 1);
for i=1:n
18
if(i> 1& i < n)
F(i ,[i -1 i i +1]) = [h(i -1) , 2*( h(i -1) + h(i)), h(i)] ;
alpha (i) = 3*( y(i+1) -y(i))/h(i) - 3*( y(i) - y(i -1) )/h(i -1) ;
else
F(i,i) = 1;
alpha (i) = 0;
end
i=i +1;
end
c = (F\ alpha ) ';
28
b = zeros (1,n);
d = zeros (1,n);
i = 1;
while (i<n)
while (i<n)
b(i) = (y(i +1) -y(i))/h(i) - h(i) *(c(i +1) +2* c(i)) /3;
i=i +1;
end
d (1:n -1) = diff (c) ./(3* h(1:n -1) );
b(n) = b(n -1) + h(n -1) *(c(n)+c(n -1) );
d(n) = (y(n +1) -y(n)-b(n)*h(n)-c(n)*h(n) ^2) /h(n) ^3;
38
f = mkpp (x ,[d; c; b ;a ]');
end
l = l + y(m) * b/c;
end
end
Figura 2. Cdigo del algoritmo para calcular un spline c_ubico
> plot (u, ppval (f, u)); hold on;
> plot (u, sin (u), 'r');