Lección 18

Transcripción

Lección 18
Lección 17. Interpolación de trazadores cúbicos
MIGUEL ANGEL UH ZAPATA1
Análisis Numérico I
Facultad de Matemáticas, UADY
Noviembre de 2014
1 Centro
de Investigación en Matemáticas, Unidad Mérida.
En esta lección se presenta la descripción de
la interpolación de trazadores cúbicos o mejor
conocidos como splines.
Al final debemos de:
conocer lo que un spline cúbico.
analizar las similitudes y diferencias con la
interpolación lineal a trozos y otros procesos
de interpolación.
programar el código que reqliza dicha interpolación.
Análisis Numérico
1.
Interpolación de trazadores cúbicos
Al igual que la interpolación lineal a trozos, este procedimiento consiste en dividir el intervalo en
una serie de subintervalos, y en cada subintervalo construir un polinomio diferente de aproximación.
A esta forma de aproximar se le conoce como aproximación polinómica fragmentaria. La aproximación polinómica fragmentaria más común utiliza polinios entre cada par consecutivo de nodos
y recibe el nombre de interpolación de trazadores cúbicos. Es decir, en este caso los polinomios
serán de grado 3, ver la siguiente figura.
Un polinomio cúbico general contiine cuatro constantes
P (x) = αx3 + βx2 + γx + δ
ası́ pues, el procedimiento de trazador cúbico ofrece suficiente flexibilidad para garantizar que el
interpolante no sólo sea continuamente diferenciable en el intervalo, sino que además tenga segunda
derivada continua en ele intervalo.
Definición
Dada una función f definida en [a, b] y un conjunto de nodos a = x0 < x1 < x2 < · · · <
xn−1 < xn = b un interpolante de trazador cúbico S para f es una función que cumple las
siguientes condiciones
(a) S(x) es un polinomio cúbico, denotado
Sj (x)
para
[xj , xj+1 ]
para cada j = 0, 1, 2, . . . , n − 1;
(b) S(xj ) = f (xj ) = yj para cada j = 0, 1, 2, . . . , n;
(c) Sj+1 (xj+1 ) = Sj (xj+1 ) para cada j = 0, 1, 2, . . . , n − 2;
0
(d) Sj+1
(xj+1 ) = Sj0 (xj+1 ) para cada j = 0, 1, 2, . . . , n − 2;
00
(e) Sj+1
(xj+1 ) = Sj00 (xj+1 ) para cada j = 0, 1, 2, . . . , n − 2;
(f) Una de las siguientes considiciones de frontera se satisface:
00
Sj+1
(x0 ) = Sj00 (xn ) = 0 (frontera libre o natural)
Frontera sujeta
Si queremos construir el interpolante del trazador cúbico de determinada función f , aplicamos las
consiciones de la definición a los polinomios cúbicos como se presentará a continuación.
Splines Cúbicos
3
1.1
1.1.
Construcción de Sj
Análisis Numérico
Construcción de Sj
Tenemos que en cada intervalo [xj , xj+1 ] podemos escribir al polinomio cúbico Sj (x) como:
Sj (x) = aj + bj (x − xj ) + cj (x − xj )2 + dj (x − xj )3
para cada j = 0, 1, 2, . . . , n − 1. Entonces debemos de encontrar cada uno de los coeficientes aj , bj ,
cj y dj para cada subintervalo. La estrategia será aplicar cada una de las condiciones y reducir nuestro
problema a encontrar en un sistema de ecuaciones donde la solución será los coeficientes buscados.
Para aplicar las condiciones (d) y (e), es necesario encontras las primeras tres derivadas de la función
S, facilmente podemos ver que
Sj (x)
=
aj + bj (x − xj ) + cj (x − xj )2 + dj (x − xj )3
Sj0 (x)
Sj00 (x)
=
bj + 2cj (x − xj ) + 3dj (x − xj )2
=
2cj + 6dj (x − xj )
Condición (b)
La ventaja de escribir el polinomio de la forma anterior es que no sólo ya hemos satisfecho la condición (a), sino también automáticamente podemos encontrar los coeficientes aj mediante la condición
(b), ası́
Sj (xj ) = aj + bj (xj − xj ) + cj (xj − xj )2 + dj (xj − xj )3 = aj
y por (b)
S(xj ) = Sj (xj ) = f (xj ) = yj
entonces
aj = f (xj ) = yj
para j = 0, 1, 2, . . . , n − 1.
(1)
Podemos observar que el último coeficiente an aún no está definido, entonces lo definimos
an = f (xn ).
Ahora sólo nos falta encontrar los coeficientes bj , cj y dj .
Condición (c)
Simplemente tenemos que evaluar la función Sj+1 y Sj en los correspondientes puntos xj+1 para
j = 0, 1, 2, . . . , n − 2, es decir Sj+1 (xj+1 ) = Sj (xj+1 ). Ası́
Sj+1 (xj+1 )
Sj (xj+1 )
=
yj+1 + bj+1 (xj+1 − xj+1 ) + cj+1 (xj+1 − xj+1 )2 + dj+1 (xj+1 − xj+1 )3
=
yj+1
=
yj + bj (xj+1 − xj ) + cj (xj+1 − xj )2 + dj (xj+1 − xj )3
Si llamamos a las constantes
hj = xj+1 − xj
entonces
bj hj + cj h2j + dj h3j = yj+1 − yj
Ası́ despejando en términos de bj
Splines Cúbicos
4
1.1
Construcción de Sj
Análisis Numérico
bj = −cj hj − dj h2j +
1
(yj+1 − yj )
hj
(2)
para j = 0, 1, 2, . . . , n − 1.
De manera similar a la condición anterior, no tenemos definido el coeficiente bn . Lo que haremos
será definirlo de la forma siguiente
bn = S 0 (xn ).
Condición (d)
De la misma manera aplicar la condición (d) significa evaluar la primera derivada de los polinomios
Sj+1 y Sj en los correspondientes puntos xj+1 e igualarlos para j = 0, 1, 2, . . . , n − 2, es decir
0
Sj+1
(xj+1 ) = Sj0 (xj+1 ). Ası́
0
Sj+1
(xj+1 )
= bj+1 + 2cj+1 (xj+1 − xj+1 ) + 3dj+1 (xj+1 − xj+1 )2
= bj+1
Sj0 (xj+1 )
=
bj + 2cj (xj+1 − xj ) + 3dj (xj+1 − xj )2
Entonces
2cj hj + 3dj h2j = bj+1 − bj
(3)
para j = 0, 1, 2, . . . , n − 1.
De la ecuación anterior faltará definir cn . En este caso lo definiremos como
cn = S 00 (xn )/2.
Condición (e)
Finalmente aplicanco la condición (e) la segunda derivada de los polinomios Sj+1 y Sj en los corres00
pondientes puntos xj+1 e igualarlos para j = 0, 1, 2, . . . , n − 2, es decir Sj+1
(xj+1 ) = Sj00 (xj+1 ).
Ası́
00
Sj+1
(xj+1 )
Sj00 (xj+1 )
=
2cj+1 + 6dj+1 (xj+1 − xj+1 )
=
2cj+1
=
2cj + 6dj (xj+1 − xj )
Entonces
6dj hj = 2cj+1 − 2cj
Por lo tanto
dj =
Splines Cúbicos
1
(cj+1 − cj )
3hj
(4)
5
1.1
Construcción de Sj
Análisis Numérico
Simplificando
Finalmente tenemos tres relacion dadas por (2), (3) y (4):
bj
=
−cj hj − dj h2j +
bj+1 − bj
=
2cj hj + 3dj h2j
dj
=
1
(cj+1 − cj )
3hj
1
(yj+1 − yj )
hj
Sustituyendo (4) en las ecuaciones (3) tenemos que
bj+1 − bj = 2cj hj + 3
1
(cj+1 − cj )h2j
3hj
Entonces
bj+1 − bj = 2cj hj + (cj+1 − cj )hj
Por lo tanto
bj+1 − bj = (cj+1 + cj )hj
(5)
Por otro lado sustituyendo (4) en las ecuaciones (2) tenemos que
bj = −cj hj −
1
1
(cj+1 − cj )h2j + (yj+1 − yj )
3hj
hj
1
1
1
bj = −cj hj − cj+1 hj + cj hj + (yj+1 − yj )
3
3
hj
Entonces
bj = −
1
hj
(cj+1 + 2cj ) + (yj+1 − yj )
3
hj
Y para bj+1 (cambiando el ı́ndice a j + 1)
bj+1 = −
1
hj+1
(cj+2 + 2cj+1 ) +
(yj+2 − yj+1 )
3
hj+1
Ası́ tomando la diferencia entre ambas ecuaciones
hj+1
1
(cj+2 + 2cj+1 ) +
(yj+2 − yj+1 )
bj+1 − bj =
−
3
hj+1
hj
1
− − (cj+1 + 2cj ) + (yj+1 − yj )
3
hj
Si llamamos
W =
1
hj+1
entonces
bj+1 − bj = −
(yj+2 − yj+1 ) −
1
(yj+1 − yj )
hj
(6)
hj+1
hj
(cj+2 + 2cj+1 ) + (cj+1 + 2cj ) + W
3
3
Ası́
Splines Cúbicos
6
1.1
Construcción de Sj
Análisis Numérico
bj+1 − bj =
hj+1
−
3
2hj+1
hj
2hj
cj+2 + −
+
cj+1 +
cj + W
3
3
3
(7)
Finalmente igualando las eciaciones (5) y (7) llegamos a la ecuación
hj+1
2hj+1
hj
2hj
cj+1 hj + cj hj = −
cj+2 + −
+
cj+1 +
cj + W
3
3
3
3
Entonces
(hj )cj+1 + (hj )cj +
hj+1
3
cj+2 +
2hj+1
hj
−
3
3
2hj
cj+1 + −
cj = W
3
Entonces
(3hj )cj+1 + (3hj )cj + (hj+1 ) cj+2 + (2hj+1 − hj ) cj+1 + (−2hj ) cj = W
Y por lo tanto
(hj+1 ) cj+2 + 2 (hj+1 + hj ) cj+1 + (hj ) cj =
3
hj+1
(yj+2 − yj+1 ) −
3
(yj+1 − yj )
hj
Para mayor claridad de la ecuación tomemos el ı́ndice reducido en 1. Entonces
[hj ] cj+1 + [2(hj + hj−1 )] cj + [hj−1 ] cj−1 =
3
3
(yj+1 − yj ) −
(yj − yj−1 )
hj
hj−1
(8)
para cada j = 1, 2, 3, ..., n − 1.
Condición (f)
El sistema anterior contiene sólo c0 , c1 , c2 , ...cn como incógnitas, pero podemos observar que sólo
hay n − 1 ecuaciones. De manera que es necesario dos ecuaciones adicionales para poder tener
una solución única. Estas condiciones estarán dadas por (f). El siguiente teorema indica que esto es
posible.
Teorema
Si definimos f en a = x0 < x1 < x2 < · · · < xn−1 < xn = b entonces f tendrá un
interpolante único de trazador natural en los nodos x0 , x1 , x2 , ..., xn ; es decir, un interpolante
de trazador que cumple con las condiciones de frontera S 00 (a) = S(b) = 0.
Las condiciones de frontera satisfacen que
S000 (x0 )
=
2c0 + 6dj (x0 − x0 ) = 2c0 = 0
entonces
c0 = 0.
Y para la otra frontera, anteriormente definimos
cn = S 00 (xn )/2 = 0
de manera que
cn = 0
.
Splines Cúbicos
7
1.2
1.2.
Sistema de ecuaciones para cj
Análisis Numérico
Sistema de ecuaciones para cj
Las dos ecuaciones c0 = 0 y cn = 0 junto con las ecuaciones de (8) producen un sistema lineal
descrito por la ecuación vectorial
Ax = b
donde A es la matrix de (n + 1) × (n + 1) dado que tenemos n + 1 puntos.

1
0
0
0
···
0
 h0 2(h0 + h1 )
h
0
·
·
·
0
1

 0
h
2(h
+
h
)
h
·
·
·
0
1
1
2
2

A= .
.
.
.
.
..
..
..
..
 ..
0

 0
···
0
hn−2 2(hn−2 + hn−1 ) hn−1
0
···
···
0
0
1
y donde b y x son los vectores







b=






0
3
h1 (y2
3
h2 (y3
3
h0 (y1
3
h1 (y2





− y2 ) −
− y1 )



..

.

3
3

hn−1 (yn − yn−1 ) − hn−2 (yn−1 − yn−2 ) 
0
− y1 ) −
− y0 )

c0

 c1


 c2

x=
 ..
 .

 cn−1

cn






















Como podemos observar este sistema es tridiagonal el cual podemos programar fácilmente.
1.3.
Caso particular
Para entender mejor el procedimiento anterior consideremos el caso particular cuando tenemos sólamente 6 puntos. En este caso
x
y
x0
y0
x1
y1
x2
y2
x3
y3
x4
y4
x5
y5
De modo que únicamente tenemos 5 funciones Sj determinadas por
S0 (x)
=
a0 + b0 (x − x0 ) + c0 (x − x0 )2 + d0 (x − x0 )3
S1 (x)
=
a1 + b1 (x − x1 ) + c1 (x − x1 )2 + d1 (x − x1 )3
S2 (x)
=
a2 + b2 (x − x2 ) + c2 (x − x2 )2 + d2 (x − x2 )3
S3 (x)
=
a3 + b3 (x − x3 ) + c3 (x − x3 )2 + d3 (x − x3 )3
S4 (x)
=
a4 + b4 (x − x4 ) + c4 (x − x4 )2 + d4 (x − x4 )3
Ahora los valores aj ya los conocemos y están dados por
Splines Cúbicos
a0
=
y0
a1
=
y1
a2
=
y2
a3
=
y3
a4
=
y4
8
1.3
Caso particular
Análisis Numérico
Los valores cj están determinados resolviendo el siguiente sistema

1
0
0
0
0












h0
2(h0 + h1 )
h1
0
0
0
h1
0
0
0
0
0
0
0


0 


2(h1 + h2 )
h2
0
0 


h2
2(h2 + h3 )
h3
0 


0
h3
2(h3 + h4 ) h4  

0
0
0
1
c0
0


c1  


c2  


c3  


c4  

c5
3
h1 (y2
3
h2 (y3
3
h3 (y4
− y1 ) −

3
h0 (y1
3
h1 (y2
3
h2 (y3

− y0 ) 


− y2 ) −
− y1 ) 


− y3 ) −
− y2 ) 


3
3
(y
−
y
)
−
(y
−
y
)

5
4
4
3
h4
h3

0
donde
h0
= x1 − x0
h1
= x2 − x1
h2
= x3 − x2
h3
= x4 − x3
h4
= x5 − x4
Una vez calculados los valores de cj podemos calcular los valores de dj y bj usando las fórmulas
bj
=
−cj hj − dj h2j +
dj
=
1
(cj+1 − cj )
3hj
1
(yj+1 − yj )
hj
para j = 0, 1, 2, 3, 4, 5
para
j = 0, 1, 2, 3, 4, 5
Ası́ finalmente tenemos completado todos los coeficientes correspondientes a los polinomios Sj (x).
Es importante recordar que si se desea encontrar todos los coeficientes con MATLAB, este no admite ı́nices 0, por lo que los ı́ndices deben ser determinados desde j = 1, ..., 6 para los puntos xj y
j = 1, ..., 5 para los coeficientes aj , bj , cj , dj y polinomios Sj .
Ahora si deseamos interpolar un valor u (o un vector), necesitamos determinar en que intervalo se
encuentra y ası́ usar la función correcta. En Matlab el ı́ndice j correcpondiente al intervalo [xj , xj+1 ]
estarı́a dada por
%______________________________________
% Encontrar el indices j del intervalo
%
x(j)≤ u(k) <x(j+1)
m = length(u);
indicej = ones(m,1);
for k=1:m
for j=2:n-1
if x(j)≤u(k)
indicej(k)=j;
end
end
end
Finalemente, cada valor x = u(k) puede ser interpolado y obtener el valor S(x) = v(k) mediante las
evaluaciones
Splines Cúbicos
9
1.4
Programa
Análisis Numérico
%______________________________________
% Evaluar la interpolación
v = zeros(m,1);
for k =1:m
j = indicej(k);
v(k) = a(j)
...
+ b(j)*(u(k)-x(j))
...
+ c(j)*(u(k)-x(j))ˆ2 ...
+ d(j)*(u(k)-x(j))ˆ3;
end
1.4.
Programa
PROXIMAMENTE ...
function v = InterpoSplines(x,y,u)
n = length(x);
.
.
.
end
Aquı́ la interpolación que pasa por los puntos
x
y
Splines Cúbicos
1
16
2
18
3
21
4
17
5
15
6
12
10

Documentos relacionados