Está en la página 1de 39

Aproximación de funciones

Interpolación mediante trazadores cúbicos (splines)

by Darwin E. Quiroz (UNAH)


on 21 de julio de 2020
Aproximación de funciones
∗ Interpolación mediante trazadores cúbicos (splines)
∗ Ejemplo 1
∗ Construcción de un spline cúbico con frontera natural o libre
∗ Ejemplo 2
∗ Construcción de un spline cúbico con frontera condicionada o sujeto
∗ Cota del error para un spline cúbico con frontera condicionada o sujeto
∗ Ejemplo 3
Aproximación de funciones
∗ Interpolación mediante trazadores cúbicos (splines)
∗ Ejemplo 1
∗ Construcción de un spline cúbico con frontera natural o libre
∗ Ejemplo 2
∗ Construcción de un spline cúbico con frontera condicionada o sujeto
∗ Cota del error para un spline cúbico con frontera condicionada o sujeto
∗ Ejemplo 3
Aproximación de funciones

» Aproximación polinomial por tramos

La interpolación de Lagrange se basa en la aproximación de una


función arbitraria por medio de un polinomio en un intervalo
cerrado. Sin embargo, la naturaleza oscilatoria de los polinomios
de alto grado y la propiedad de que una fluctuación en una parte
pequeña de un intervalo puede ocasionar importantes
fluctuaciones en todo el rango limita su utilización.

Un procedimiento alterno consiste en dividir el intervalo en una


serie de subintervalos, y en cada subintervalo construir un
polinomio (generalmente) diferente de aproximación. Esto se
llama aproximación polinomial por tramos.

[1/30]
Aproximación de funciones

» Aproximación polinomial por tramos


La aproximación polinomial por tramos más común usa
polinomios cúbicos entre cada par sucesivo de nodos y recibe el
nombre de interpolación de trazadores cúbicos (interpolación de
spline cúbico).

(a) Interpolación de Lagrange: P20 (x) (b) Interpolación de spline cúbico

[2/30]
Aproximación de funciones

» Interpolación mediante trazadores cúbicos (splines)


Definición
Dada una función f definida en [a, b] y un conjunto de nodos
a = x0 < x1 < · · · < xn = b un interpolante de trazador cúbico S
para f es una función que cumple con las condiciones siguientes:
a) S(x) es un polinomio cúbico, denotado Sj (x), en el
subintervalo [xj , xj+1 ] para cada j = 0, 1, . . . , n − 1;
b) Sj (xj ) = f (xj ) y Sj (xj+1 ) = f (xj+1 ) para cada
j = 0, 1, . . . , n − 1;
c) Sj+1 (xj+1 ) = Sj (xj+1 ) para cada j = 0, 1, . . . , n − 2;
d) Sj+1
′ (xj+1 ) = Sj′ (xj+1 ) para cada j = 0, 1, . . . , n − 2;
e) Sj+1
′′ (x
j+1 ) = Sj (xj+1 ) para cada j = 0, 1, . . . , n − 2;
′′

f) Una de las siguientes condiciones de frontera se satisface:


1) S ′′ (x0 ) = S ′′ (xn ) = 0 (frontera libre o natural);
2) S ′ (x0 ) = f ′ (x0 ) y S ′ (xn ) = f ′ (xn ) (frontera sujeta).
[3/30]
Aproximación de funciones

» Interpolación mediante trazadores cúbicos (splines)

Interpolante de trazador cúbico S(x)



 S0 (x) para x ∈ [x0 , x1 ],



 S1 (x) para x ∈ [x1 , x2 ],
S(x) =
 ..


 .

Sn−1 (x) para x ∈ [xn−1 , xn ],
donde

Sj (x) = aj + bj (x − xj ) + cj (x − xj )2 + dj (x − xj )3 .

Un trazador cúbico definido en un intervalo que se ha dividido en


n subintervalos requerirá determinar 4n constantes.

[4/30]
Aproximación de funciones

» Interpolación mediante trazadores cúbicos (splines)

Interpretación gráfica de la interpolación mediante trazadores cúbicos.

[5/30]
Aproximación de funciones
∗ Interpolación mediante trazadores cúbicos (splines)
∗ Ejemplo 1
∗ Construcción de un spline cúbico con frontera natural o libre
∗ Ejemplo 2
∗ Construcción de un spline cúbico con frontera condicionada o sujeto
∗ Cota del error para un spline cúbico con frontera condicionada o sujeto
∗ Ejemplo 3
Aproximación de funciones

» Ejemplo 1

Ejemplo 1
Construya el trazador cúbico libre de los siguientes datos:

x 0.8 1.0 1.3


f (x) 0.223634 0.658092 0.995153

Aproxime f (0.9) y f ′ (0.9).


Solución:
Resuelto en la clase utilizando la definición.

[6/30]
Aproximación de funciones
∗ Interpolación mediante trazadores cúbicos (splines)
∗ Ejemplo 1
∗ Construcción de un spline cúbico con frontera natural o libre
∗ Ejemplo 2
∗ Construcción de un spline cúbico con frontera condicionada o sujeto
∗ Cota del error para un spline cúbico con frontera condicionada o sujeto
∗ Ejemplo 3
Aproximación de funciones

» Construcción de un spline cúbico natural


Cálculo de las constantes para un spline cúbico natural:
Calcular los valores {aj }nj=0 con la ecuación aj = f (xj ) para
cada j = 0, 1, . . . , n.
Calcular el espaciado de los nodos {hj }n−1 j=0 con la ecuación
hj = xj+1 − xj para cada j = 0, 1, . . . , n − 1.
Encontrar la solución al sistema de ecuaciones lineales Ax = b
donde A es la matriz (n + 1) × (n + 1) definida como sigue
 
1 0 0 ... ... 0
 .. .. 
h0 2(h0 + h1 )
 h1 . . 
 .. .. 
0 h1 2(h1 + h2 ) h2 . . 
A=  ..
,
.. .. .. .. 
.
 . . . . 0  
 .. .. 
. . h
n−2 2(h
n−2 +h ) h
n−1 n−1 
0 ... ... 0 0 1
[7/30]
Aproximación de funciones

» Construcción de un spline cúbico natural

b y x son los vectores


 
0  
 3 3  c0
 (a2 − a1 ) − (a1 − a0 )   c1 
 h h   
 1
..
0   .. 
b= .  y
 . 
  x =  .
 3  
 (an − an−1 ) −
3
(an−1 − an−2 ) cn−1 
h hn−2 
n−1 cn
0

[8/30]
Aproximación de funciones

» Construcción de un spline cúbico natural

Una vez que se determinan los valores de {cj }nj=0 , encuentre


las constantes {bj }n−1 j=0 a partir de la ecuación
1 hj
bj = (aj+1 − aj ) − (cj+1 + 2cj ) para cada
hj 3
j = 0, 1, . . . , n − 1.
Una vez que se determinan los valores de {cj }nj=0 , encuentre
las constantes {dj }n−1j=0 a partir de la ecuación
1
dj = (cj+1 − cj ) para cada j = 0, 1, . . . , n − 1.
3hj

[9/30]
Aproximación de funciones
∗ Interpolación mediante trazadores cúbicos (splines)
∗ Ejemplo 1
∗ Construcción de un spline cúbico con frontera natural o libre
∗ Ejemplo 2
∗ Construcción de un spline cúbico con frontera condicionada o sujeto
∗ Cota del error para un spline cúbico con frontera condicionada o sujeto
∗ Ejemplo 3
Aproximación de funciones

» Ejemplo 2
Ejemplo 2
Construya el trazador cúbico libre de los siguientes datos:

x 0.1 0.2 0.3 0.4


f (x) -0.620500 -0.283987 0.006601 0.248424

Aproxime f (0.25) y f ′ (0.25).


Solución:
Para n = 3 se tiene que
Sj (x) = aj + bj (x − xj ) + cj (x − xj )2 + dj (x − xj )3 si x ∈ [xj , xj+1 ]
para cada j = 0, 1, 2, es decir,

a0 + b0 (x − 0.1) + c0 (x − 0.1) + d0 (x − 0.1) , x ∈ [0.1, 0.2[,
2 3

S(x) = a1 + b1 (x − 0.2) + c1 (x − 0.2)2 + d1 (x − 0.2)3 , x ∈ [0.2, 0.3[,


a2 + b2 (x − 0.3) + c2 (x − 0.3)2 + d2 (x − 0.3)3 , x ∈ [0.3, 0.4].
[10/30]
Aproximación de funciones

» Ejemplo 2
Los valores de aj = f (xj ) para cada j = 0, 1, 2, 3 están dados por
a0 = −0.620500, a1 = −0.283987, a2 = 0.006601 y a3 = 0.248424.
El espaciado de los nodos son h0 = x1 − x0 = 0.1,
h1 = x2 − x1 = 0.1 y h2 = x3 − x2 = 0.1. La matriz de 4 × 4 está
dada por  
1 0 0 0
h0 2(h0 + h1 ) h1 0
A= 0
,
h1 2(h1 + h2 ) h2 
0 0 0 1
sustituyendo
   
1 0 0 0 1 0 0 0
0.1 2(0.1 + 0.1) 0.1 0  
A=  = 0.1 0.4 0.1 0  .
0 0.1 2(0.1 + 0.1) 0.1  0 0.1 0.4 0.1
0 0 0 1 0 0 0 1

[11/30]
Aproximación de funciones

» Ejemplo 2
El vector b está dado por
 
0    
3 3  0 c0
 (a2 − a1 ) − (a1 − a0 ) 
  −1.37775 c1 
b =  h31 h0 =  y x= 
c2  .
 (a − a ) − 3 (a − a ) −1.46295
h 3 2
h1
2 1 
2 0 c3
0

La solución del sistema Ax = b está dada por


   
c0 0
c1  −2.6987
x=   
c2  = −2.9827 .
c3 0

[12/30]
Aproximación de funciones

» Ejemplo 2
Ahora, calculamos los valores bj para cada j = 0, 1, 2.
1 h0
Para j = 0, b0 = (a1 − a0 ) − (c1 + 2c0 ) = 3.455087,
h0 3
=⇒ b0 = 3.455087.
1 h1
Para j = 1, b1 = (a2 − a1 ) − (c2 + 2c1 ) = 3.185217,
h1 3
=⇒ b1 = 3.185217.
1 h2
Para j = 2, b2 = (a3 − a2 ) − (c3 + 2c2 ) = 2.617077,
h2 3
=⇒ b2 = 2.617077.

[13/30]
Aproximación de funciones

» Ejemplo 2
Ahora, calculamos los valores dj para cada j = 0, 1, 2.
1
Para j = 0, d0 = (c1 − c0 ) = −8.995667,
3h0
=⇒ d0 = −8.995667.
1
Para j = 1, d1 = (c2 − c1 ) = −0.946667,
3h1
=⇒ d1 = −0.946667.
1
Para j = 2, d2 = (c3 − c2 ) = 9.942333,
3h2
=⇒ d2 = 9.942333.

[14/30]
Aproximación de funciones

» Ejemplo 2
Ahora, procedemos a calcular la aproximación de f (0.25).
Como x = 0.25 está en el intervalo [0.2, 0.3], entonces

f (0.25) ≈ S1 (0.25) = a1 +b1 (0.25−0.2)+c1 (0.25−0.2)2 +d1 (0.25−0.2)3 ,

=⇒ S1 (0.25) = −0.131591 =⇒ f (0.25) ≈ −0.131591

Ahora, procedemos a calcular la aproximación de f ′ (0.25).


Como x = 0.25 está en el intervalo [0.2, 0.3], entonces

f ′ (0.25) ≈ S1′ (0.25) = b1 + 2c1 (0.25 − 0.2) + 3d1 (0.25 − 0.2)2 ,

=⇒ S1′ (0.25) = 2.908247 =⇒ f ′ (0.25) ≈ 2.908247.

[15/30]
Aproximación de funciones
∗ Interpolación mediante trazadores cúbicos (splines)
∗ Ejemplo 1
∗ Construcción de un spline cúbico con frontera natural o libre
∗ Ejemplo 2
∗ Construcción de un spline cúbico con frontera condicionada o sujeto
∗ Cota del error para un spline cúbico con frontera condicionada o sujeto
∗ Ejemplo 3
Aproximación de funciones

» Construcción de un spline cúbico condicionado


Cálculo de las constantes para un spline cúbico condicionado:
Calcular los valores {aj }nj=0 con la ecuación aj = f (xj ) para
cada j = 0, 1, . . . , n.
Calcular el espaciado de los nodos {hj }n−1 j=0 con la ecuación
hj = xj+1 − xj para cada j = 0, 1, . . . , n − 1.
Encontrar la solución al sistema de ecuaciones lineales Ax = b
donde A es la matriz (n + 1) × (n + 1) definida como sigue
 
2h0 h0 0 ... ... 0
 . .. .. 
 h0 2(h0 + h1 )
 h1 . 

 . .. .. 
 0
 h1 2(h1 + h2 ) h2 . 

A= .
 .. . .. . .. . .. . .. 

 0 
 .. .. 
 . . hn−2 2(h
n−2 +h ) h
n−1 n−1 
0 ... ... 0 hn−1 2hn−1
[16/30]
Aproximación de funciones

» Construcción de un spline cúbico condicionado

b y x son los vectores


 3 
(a1 − a0 ) − 3f ′ (a)
 h0   
 3 3  c0
 (a2 − a1 ) − (a1 − a0 ) 
   c1 
 h1 h0   
 ..   .. 
b= .  y x =  . .
   
 3 3  cn−1 
 (a − an−1 ) − (an−1 − an−2 )
 hn−1 n hn−2  cn
 3 

3f (b) − (an − an−1 )
hn−1

[17/30]
Aproximación de funciones

» Construcción de un spline cúbico condicionado

Una vez que se determinan los valores de {cj }nj=0 , encuentre


las constantes {bj }n−1 j=0 a partir de la ecuación
1 hj
bj = (aj+1 − aj ) − (cj+1 + 2cj ) para cada
hj 3
j = 0, 1, . . . , n − 1.
Una vez que se determinan los valores de {cj }nj=0 , encuentre
las constantes {dj }n−1j=0 a partir de la ecuación
1
dj = (cj+1 − cj ) para cada j = 0, 1, . . . , n − 1.
3hj

[18/30]
Aproximación de funciones
∗ Interpolación mediante trazadores cúbicos (splines)
∗ Ejemplo 1
∗ Construcción de un spline cúbico con frontera natural o libre
∗ Ejemplo 2
∗ Construcción de un spline cúbico con frontera condicionada o sujeto
∗ Cota del error para un spline cúbico con frontera condicionada o sujeto
∗ Ejemplo 3
Aproximación de funciones

» Cota del error para un spline cúbico condicionado

Teorema


Sea f ∈ C 4 [a, b] con máx f (4) (x) = M . Si S es el unico spline
a≤x≤b
cúbico condicionado interpolante para f respecto a los nodos
a = x0 < x1 < · · · < xn = b, entonces, para todas las x en [a, b]

5M
|f (x) − S(x)| ≤ máx (xj+1 − xj )4 .
384 0≤j≤n−1

Note que,

máx (xj+1 − xj )4 = máx (x1 − x0 )4 , (x2 − x1 )4 , . . . , (xn − xn−1 )4
0≤j≤n−1

= máx h40 , h41 , . . . , h4n−1 .

[19/30]
Aproximación de funciones
∗ Interpolación mediante trazadores cúbicos (splines)
∗ Ejemplo 1
∗ Construcción de un spline cúbico con frontera natural o libre
∗ Ejemplo 2
∗ Construcción de un spline cúbico con frontera condicionada o sujeto
∗ Cota del error para un spline cúbico con frontera condicionada o sujeto
∗ Ejemplo 3
Aproximación de funciones

» Ejemplo 3

Ejemplo 3
Dada la partición x0 = 1.0, x1 = 2.5, x2 = 4.0, x3 = 5.0 de [1, 5] y
sin(x)
f (x) = .
x
a) Obtenga el trazador cúbico S con frontera condicionada que
interpola a f .
b) Calcular una cota para el error |f (x) − S(x)|.
Z 5
sin(x)
c) Obtenga una aproximación de dx evaluando
Z 1 x
5
S(x)dx.
1

[20/30]
Aproximación de funciones

» Ejemplo 3

Solución: a)
Para n = 3 se tiene que
Sj (x) = aj + bj (x − xj ) + cj (x − xj )2 + dj (x − xj )3 si x ∈ [xj , xj+1 ]
para cada j = 0, 1, 2, es decir,

a0 + b0 (x − 1.0) + c0 (x − 1.0) + d0 (x − 1.0) , x ∈ [1.0, 2.5[,
2 3

S(x) = a1 + b1 (x − 2.5) + c1 (x − 2.5)2 + d1 (x − 2.5)3 , x ∈ [2.5, 4.0[,


a2 + b2 (x − 4.0) + c2 (x − 4.0)2 + d2 (x − 4.0)3 , x ∈ [4.0, 5.0].

[21/30]
Aproximación de funciones

» Ejemplo 3
Los valores de aj = f (xj ) para cada j = 0, 1, 2, 3 están dados por
a0 = 0.841471, a1 = 0.239389, a2 = −0.189201 y a3 = −0.191785.
El espaciado de los nodos son h0 = x1 − x0 = 1.5,
h1 = x2 − x1 = 1.5 y h2 = x3 − x2 = 1.0. La matriz de 4 × 4 está
dada por
 
2h0 h0 0 0
 h0 2(h0 + h1 ) h1 0 
A=  ,
0 h1 2(h1 + h2 ) h2 
0 0 h2 2h2
sustituyendo los valores de h0 , h1 y h2 en la matriz A, se obtiene
 
3 1.5 0 0
1.5 6.0 1.5 0 
A=  0 1.5
.
5.0 1.0
0 0 1.0 2.0

[22/30]
Aproximación de funciones

» Ejemplo 3
El vector b está dado por
 3 
(a1 − a0 ) − 3f ′ (x0 )
 h0     
3 3  −0.300658 c0
 (a − a ) − (a − a )
h 2 1 1 0    c1 
b= 1 h0  =  0.346984  y x= 
3 3   0.849428  c2  .
 (a3 − a2 ) − (a2 − a1 )
 h2 h  0.293020 c3
 3
1 

3f (x3 ) − (a3 − a2 )
h2
La solución del sistema Ax = b está dada por
   
c0 −0.127904
c1   0.055370 
x=   
c2  =  0.137747  .
c3 0.077636

[23/30]
Aproximación de funciones

» Ejemplo 3
Ahora, calculamos los valores bj para cada j = 0, 1, 2.
1 h0
Para j = 0, b0 = (a1 − a0 ) − (c1 + 2c0 ) = −0.301169,
h0 3
=⇒ b0 = −0.301169.
1 h1
Para j = 1, b1 = (a2 − a1 ) − (c2 + 2c1 ) = −0.409970
h1 3
=⇒ b1 = −0.409970.
1 h2
Para j = 2, b2 = (a3 − a2 ) − (c3 + 2c2 ) = −0.120294,
h2 3
=⇒ b2 = −0.120294.

[24/30]
Aproximación de funciones

» Ejemplo 3
Ahora, calculamos los valores dj para cada j = 0, 1, 2.
1
Para j = 0, d0 = (c1 − c0 ) = 0.040728,
3h0
=⇒ d0 = 0.040728.
1
Para j = 1, d1 = (c2 − c1 ) = 0.018306,
3h1
=⇒ d1 = 0.018306.
1
Para j = 2, d2 = (c3 − c2 ) = −0.020037,
3h2
=⇒ d2 = −0.020037.

[25/30]
Aproximación de funciones

» Ejemplo 3

Gráfica del trazador cúbico S con frontera condicionada para el ejemplo 3.


[26/30]
Aproximación de funciones

» Ejemplo 3
b) Ahora, procedemos a calcular la cota del error
5M
|f (x) − S(x)| ≤ máx (xj+1 − xj )4 .
384 0≤j≤n−1
   
4 24 1 12 24
Se tiene que f (x) =
(4) − cos(x) + − + sin(x),
x2 x4 x x3 x5
con
(4) (4)
máx f (x) = máx f (x) = M = 0.175429.
x0 ≤x≤x3 1≤x≤5
Luego,
5M 5(0.175429) 
máx (xj+1 − xj )4 = máx h40 , h41 , h42 ,
384 0≤j≤2 384
5M 5(0.175429)
=⇒ máx (xj+1 − xj )4 = (5.0625) = 0.011564,
384 0≤j≤2 384
=⇒ |f (x) − S(x)| ≤ 0.011564

[27/30]
Aproximación de funciones

» Ejemplo 3
Z 5
sin(x)
c) Ahora, procedemos a calcular la aproximación de dx.
1 x
Se tiene que
Z 5 Z 5 Z 2.5 Z 4 Z 5
sin(x)
dx ≈ S(x)dx = S0 (x)dx+ S1 (x)dx+ S2 (x)dx,
1 x 1 1 2.5 4

luego
Z 2.5 Z 2.5 
S0 (x)dx = a0 + b0 (x − 1.0) + c0 (x − 1.0)2 + d0 (x − 1.0)3 dx
1 1
= 0.831046,
Z Z 4
4 
S1 (x)dx = a1 + b1 (x − 2.5) + c1 (x − 2.5)2 + d1 (x − 2.5)3 dx
2.5 2.5
= −0.016673,

[28/30]
Aproximación de funciones

» Ejemplo 3

Z Z
5 5 
S2 (x)dx = a2 + b2 (x − 4.0) + c2 (x − 4.0)2 + d2 (x − 4.0)3 dx
4 4
= −0.208442,
Z 5
=⇒ S(x)dx = 0.831046 − 0.016673 − 0.208442 = 0.605931,
1
Z 5
sin(x)
=⇒ dx ≈ 0.605931
1 x

[29/30]
Aproximación de funciones

... Gracias!!

[30/30]

También podría gustarte