Vous êtes sur la page 1sur 54

Introducción Lagrange Newton Análisis de error Hermite Splines

Análisis Numérico
Interpolación y aproximación polinomial

CNM-425

Departamento de Matemáticas
Facultad de Ciencias Exactas y Naturales
Universidad de Antioquia

Copyleft« 2010. Reproducción permitida bajo los


términos de la licencia de documentación libre GNU.
Introducción Lagrange Newton Análisis de error Hermite Splines

Contenido

1 Introducción

2 Interpolación de Lagrange

3 Interpolación de Newton

4 Error en la interpolación

5 Interpolación de Hermite

6 Splines
Introducción Lagrange Newton Análisis de error Hermite Splines

Interpolación
Dado un conjunto de datos conocidos

(x0 , y0 ) , (x1 , y1 ) , (x2 , y2 ) , . . . , (xN , yN )

buscamos una función f : R → R que satisfaga

f (xi ) = yi , i = 0, . . . , N

f es la función interpolante o interpolador

El interpolador f puede ser:


polinomio
“spline”
fracción continuada

Restricciones adicionales:
Las derivada del interpolador f en los puntos dados es fija
Suavidad, monoticidad o convexidad del interpolador f
Introducción Lagrange Newton Análisis de error Hermite Splines

Aplicaciones

Trazado de curvas atraves de un conjunto discreto de datos

Determinar valores “intermedios” de una tabla de datos

Derivar e integrar a partir de una tabla de datos.

Evaluar de manera fácil una función

Reemplazar una función “complicada” por una “simple”


Introducción Lagrange Newton Análisis de error Hermite Splines

Interpolación y aproximación

Funciones utilizadas como interpoladores


Polinomios
Funciones trigonométricas
Funciones exponenciales
Funciones racionales

Los interpoladores se ajustan a los datos de manera exacta (f (xi ) = yi )

Interpolación presenta problemas cuando los datos están sujetos a


errores signifiativos

Cuando hay “incertidumbre” en los datos resulta útil “suavizarlos” por


medio de una aproximación de mı́nimos cuadrados

Aproximaciones espectrales o aproximaciones con polinomios de


Chebyshev representan de manera efectiva soluciones numéricas de
ecuaciones diferenciales parciales
Introducción Lagrange Newton Análisis de error Hermite Splines

Teorema de aproximación de Weierstrass

Teorema 1.1 (Weierstrass)

Sea f : [a, b] → C continua. Entonces para todo ε > 0, existe un polinomio p


sobre C tal que para todo x ∈ [a, b],

|f (x) − p(x)| < ε


Introducción Lagrange Newton Análisis de error Hermite Splines

Polinomio interpolador

Teorema 1.2 (Existencia y unicidad del polinomio interpolante)

Si x0 , x1 , . . . , xn son números reales distintos, entonces para N + 1 valores


arbitrarios y0 , y1 , . . . , yn existe un único polinomio PN de grado a lo sumo
N tal que
pN (xi ) = yi

Observaciones
El teorema (1.2) generaliza:
Por dos puntos distintos del plano cartesiano pasa una y sólo
una lı́nea recta (polinomio de grado 1).

Dada una tabla de datos


x0 x1 ··· xN
y0 y1 ··· yN

existe uno y sólo un polinomio pN de grado ≤ N tal que pN (xi ) = yi

Aunque el polinomio es único, existen diversas formas de expresarlo y


diferentes algoritmos para determinarlo
Introducción Lagrange Newton Análisis de error Hermite Splines

Polinomio interpolador

Asumimos un conjunto de puntos discretos {x0 , x1 , · · · , xN } con los


valores correspondientes {f (x0), f (x1), · · · , f (xN )}

Construimos una función f (x) que pase por (xi , f (xi )) por medio de la
aproximación
XN
f (x) ≈ pN (x) = ak φk (x) (1)
i=0

pN es el polinomio interpolante

φk son polinomios conocidos a priori y forman una “base”

ak son coeficientes por determinar

(1) expresa a pN como una combinación lineal de funciones base φk


Introducción Lagrange Newton Análisis de error Hermite Splines

Interpolación de Vandermonde
Consideramos como bases los monomios

φk (x) = xk , k = 0, . . . , N (2)

Para la base (8) obtenemos la representación

f (x) = a0 + a1 x + a2 x2 + · · · + aN xN (3)

donde a0 , a1 , . . . , aN son constantes a determinar.

Las N + 1 ecuaciones que surgen al evaluar xi en (3) se pueden


expresar matricialmente como

1 x0 x20 ··· xN
2 32 3 2 3
0 a0 f (x0 )
6 1 x1 x21 ··· xN1 7 6 a1 7 6 f (x1 ) 7
76 . 7=6 .. ⇐⇒ Va = f
6 76 7 6 7
.. .. .. ..
5 4 ..
6 7
4 . . . . 5 4 . 5
1 xN x2N ··· xNN
aN f (xN )

Y
V es la matriz de Vandermonde y det(V) = (xj − xi ) 6= 0.
0≤i≤j≤N
Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo

Ejemplo 1.1
Determine el polinomio de grado 2 que interpola los tres datos

(−2, −27), (0, −1), (1, 0)

Solución

El polinomio está dado por

f (x) = a0 + a1 x + a2 x2 (4)

Para este caso el sistema está dado por


2 32 3 2 3
1 −2 4 a0 −27
4 1 0 0 5 4 a1 5 = 4 −1 5
1 1 1 a2 0

La solución está dada por [−1 5 − 4]T y

f (x) = −1 + 5x − 4x2 (5)


Introducción Lagrange Newton Análisis de error Hermite Splines

Interpolación de Lagrange
Como base tomamos los polinomios de Lagrange definidos por
N
Y (x − xi )
Lk (x) =
i=0
(x k − xi )
i6=k (6)
(x − x0 ) (x − xk−1 ) (x − xk+1 ) (x − xN )
= ··· · ···
(xk − x0 ) (xk − xk−1 ) (xk − xk+1 ) (xk − xN )

Propiedades
Lk es un polinomio de grado N

1 si k = j
Lk (xj ) = = δkj
0 si k 6= j

El polinomio de interpolación de Lagrange está dado por

pN (x) = f (x0 )L0 (x) + f (x1 )L1 (x) + · · · + f (xN )LN (x) (7)

El polinomio de interpolación de Lagrange es de grado ≤ N y pasa por


los N + 1 puntos (x0 , f (x0 )), . . . , (xN , f (xN ))
Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo 2.1
Determine los polinomios de Lagrange para N = 5 y x0 = 0 , x1 = 1 ,
x2 = 2 , x3 = 3 y x4 = 4.

(x − 1)(x − 2)(x − 3)(x − 4) 1 ` 4


x − 10x3 + 35x2 − 50x + 24
´
L0 (x) = =
(0 − 1)(0 − 2)(0 − 3)(0 − 4) 24
(x − 0)(x − 2)(x − 3)(x − 4) 1` 4
x − 9x3 + 26x2 − 24x
´
L1 (x) = = −
(1 − 0)(1 − 2)(1 − 3)(1 − 4) 6
(x − 0)(x − 1)(x − 3)(x − 4) 1` 4
x − 8x3 + 19x2 − 12x
´
L2 (x) = =
(2 − 0)(2 − 1)(2 − 3)(2 − 4) 4
(x − 0)(x − 1)(x − 2)(x − 4) 1` 4
x − 7x3 + 14x2 − 8x
´
L3 (x) = = −
(3 − 0)(3 − 1)(3 − 2)(3 − 4) 6
(x − 0)(x − 1)(x − 2)(x − 3) 1 ` 4
x − 6x3 + 11x2 − 6x
´
L4 (x) = =
(4 − 0)(4 − 1)(4 − 2)(4 − 3) 24
Introducción Lagrange Newton Análisis de error Hermite Splines

Polinomios de Lagrange (programa)


N
Y (x − xi ) (x − x0 ) (x − xk−1 ) (x − xk+1 ) (x − xN )
Lk (x) = = ··· · ···
i=0
(x k − x i ) (x k − x 0 ) (x k − x k−1 ) (x k − xk+1 ) (x k − xN )
i6=k

lagrange.m octave:#> xx = 0:4


function L = lagrange(xpuntos,k,x) xx =
% Argumentos: 0 1 2 3 4
% xpuntos: vector fila con las coordenadas en x octave:#> lagrange(xx,1,0)
% k: valor entero correspondiente Lk ans = 0
% x: valor real en el que se evalúa el polinomio octave:#> lagrange(xx,1,1)
% Salida: ans = 0
% L: valor obtenido al evaluar el polinomio de octave:#> lagrange(xx,1,2)
% Lagrange en x ans = 0
L = 1.0; octave:#> lagrange(xx,1,3)
n = length(xpuntos); ans = 0
octave:#> lagrange(xx,1,4)
for i=1:k
ans = -560
L = L * (x - xpuntos(i))/(xpuntos(k+1)-xpuntos(i));
octave:#> lagrange(xx,2,10)
end
ans = 945
for i=k+2:n
L = L * (x - xpuntos(i))/(xpuntos(k+1)-xpuntos(i));
end
end
Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo
Ejemplo 2.2
1
Determine el polinomio de interpolación de Lagrange para f (x) = en los
x
puntos x0 = 2 , x1 = 2.5 , x2 = 4 y utilı́celo para aproximar f (3).

Solución
(x − 2,5)(x − 4)
L0 (x) = = (x − 6,5)x + 10
(2 − 2,5)(2 − 4)
(x − 2)(x − 4) (−4x + 24)x − 32
L1 (x) = =
(2,5 − 2)(2,5 − 4) 3
(x − 2)(x − 2,5) (x − 4,5)x + 5
L2 (x) = =
(4 − 2)(4 − 2,5) 3

y
p(x) = f (2)L0 (x) + f (2,5)L1 (x) + f (4)L1 (x)
(−4x + 24)x − 32 (x − 4,5)x + 5
= 0,5 ((x − 6,5)x + 10) + 0,4 + 0,25
3 3
= (0,05x − 0,425)x + 1,15 =⇒ f (3) ≈ p(3) = 0,325
Introducción Lagrange Newton Análisis de error Hermite Splines

Polinomio de interpolación de Lagrange (programa)


N
X
pN (x) = f (xi )Li (x) = f (x0 )L0 (x) + f (x1 )L1 (x) + · · · + f (xN )LN (x)
i=0

polilagrange.m fun.m
function p = polilagrange(f,xpuntos,x) function y = fun(x)
% Argumentos: y = 1./x;
% xpuntos: vector fila con las coordenadas en x
% k: valor entero correspondiente Lk
% x: valor real en el que se evalúa el polinomio octave:#> fun(2)
ans = 0.50000
% Salida:
% L: valor obtenido al evaluar el polinomio de octave:#> xp = [2 2.5 4];
% Lagrange en x octave:#> fun(xp)
ans =
p = 0.0;
n = length(xpuntos); 0.50000 0.40000 0.25000
for i=0:n-1 octave:#> polilagrange(@fun,xp,1)
p = p + f(xpuntos(i+1))*lagrange(xpuntos,i,x);
ans = 0.77500
end octave:#> polilagrange(@fun,xp,2)
ans = 0.50000
end
octave:#> polilagrange(@fun,xp,3)
ans = 0.32500
Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo
Ejemplo 2.3
Grafique el polinomio de interpolación del ejemplo anterior 1.2 y compárelo
con la función f .

Solución

ejemplo13.m

clear all;
xp = [2 2.5 4];
x = -0:0.5:10;
n = length(x);
p = zeros(1,n);
y = zeros(1,n);
for i=1:n
p(i) = polilagrange(@fun,xp,x(i));
y(i) = fun(x(i));
end
plot(x,p,’r’); hold on
plot(x,y);
legend(’polinomio’,’función’)
grid on
Introducción Lagrange Newton Análisis de error Hermite Splines

Interpolación de Newton

Con el fin de reducir la complejidad computacional hacemos el


siguiente cambio de base
k−1
Y
φk (x) = (x − xi ) (8)
i=0

Ahora f (x) es aproximada por

f (x) = a0 +a1 (x−x0 )+a2 (x−x0 )(x−x1 )+· · ·+aN (x−x0 )(x−x1 ) · · · (x−xN −1 )

Las N + 1 ecuaciones que surgen al evaluar xi se pueden expresar


matricialmente como
1 0 ··· 0 a0 f (x0 )
2 32 3 2 3
6 1 (x1 − x0 ) ··· 0 7 6 a1 7 6 f (x1 ) 7
6 . . 76 . 7=6 .
6 76 7 6 7
4 . . 54 . .
7
. . . .
5 4 5
1 (xN − x0 ) (xN − x0 )(xN − x1 ) · · · (xN − x0 ) aN f (xN )
Introducción Lagrange Newton Análisis de error Hermite Splines

Fórmula de diferencias dividas

La matriz del sistema anterior es triangular inferior

O N 2 operaciones necesarias para resolver el sistema


` ´

Las soluciones vienen dadas por

a0 = f (x0 )
f (x1 ) − f (x0 )
a1 =
x1 − x0
f (x2 ) − f (x0 ) f (x1 ) − f (x0 )

x2 − x0 x1 − x0
a2 =
x2 − x1
..
.
ak = F(x0 , x1 , . . . , xk )

La función F puede determinarse de manera recursiva


Introducción Lagrange Newton Análisis de error Hermite Splines

Fórmula de diferencias dividas


Fórmula de diferencias dividas

F(x0 , x1 , . . . , xk−1 ) − F (x1 , x2 , . . . , xk )


F(x0 , x1 , . . . , xk ) = (9)
(x0 − xk )

El polinomio de interpolación está dado por

f (x) = F(x0 ) + F(x0 , x1 )(x − x0 ) + F(x0 , x1 , x2 )(x − x0 )(x − x1 )


+ · · · + F(x0 , · · · , xN )(x − x0 ) · · · (x − xN −1 )
(10)

La fórmula de recursividad (9) aplicada a los puntos G20 = {x0 , x1 , x2 }


k=0 k=1 k=2
x0 F (x0 ) = f (x)
F (x0 )−F (x1 )
F (x0 , x1 ) = x0 −x1
F (x0 ,x1 )−F (x1 ,x2 )
x1 F (x1 ) = f (x1 ) F (x0 , x1 , x2 ) = x0 −x2
F (x1 )−F (x2 )
F (x1 , x2 ) = x1 −x2
x2 F (x2 ) = f (x2 )

f (x) = F(x0 ) + F(x0 , x1 )(x − x0 ) + F(x0 , x1 , x2 )(x − x0 )(x − x1 )


Introducción Lagrange Newton Análisis de error Hermite Splines

Fórmula de diferencias divididas (Newton)


F(x0 , x1 , . . . , xk−1 ) − F (x1 , x2 , . . . , xk )
F(x0 , x1 , . . . , xk ) =
(x0 − xk )
newtoncoef.m octave:#> xi = [1 2 3 4];
function F = newtoncoef(xpuntos,ypuntos) octave:#> yi = [1 8 27 64];
% Argumentos: octave:#> F = newtoncoef(x,y)
% xpuntos: vector fila con las coordenadas F =
% en x 1 7 6 1
% ypuntos: vector fila con las coordenadas
% en y
% Salida: p(x) = F (x0 ) + F (x0 , x1 )(x − x0 )
% F: vector fila con los coeficientes del + F (x0 , x1 , x2 )(x − x0 )(x − x1 )
% polinomio de interpolación
+ F (x0 , x1 , x2 , x3 )(x − x0 )(x − x1 )(x − x2 )
n = length(xpuntos);
F = ypuntos;
p(x) = 1 + 7(x − 1) + 6(x − 1)(x − 2)
for i=2:n
+ 1(x − 1)(x − 2)(x − 3)
for j=n:-1:i
= x3
F(j) = (F(j)- F(j-1))/...
(xpuntos(j)-xpuntos(j-i+1));
end
end
end
Introducción Lagrange Newton Análisis de error Hermite Splines

Polinomio de interpolación

p(x) = F(x0 ) + F(x0 , x1 )(x − x0 ) + F(x0 , x1 , x2 )(x − x0 )(x − x1 )


+ · · · + F(x0 , · · · , xN )(x − x0 ) · · · (x − xN −1 )

polinewton.m octave:#> polinewton(F,xi,3)


function p = polinewton(F,xpuntos,x) ans = 27
% Argumentos: octave:#> polinewton(F,xi,-5)
% F: vector fila con coeficientes ans = -125
% xpuntos: vector fila con coordendas en x
% x: número en el que se evalua el
ejemplo.m
% polinomio de interpolación
clear all;
% Salida:
% p: el valor obtenido al evaluar el xi = [1 2 3 4];
% polinomio de interpolación en x yi = [1 8 27 64];
F = newtoncoef(xi,yi);
n = length(xpuntos); x = -2:0.05:2;
p = F(n); n = length(x);
for i=1:n-1 y = zeros(1,n);
p = F(n-i) + (x - xpuntos(n-i))*p; for i=1:n
y(i) = polinewton(F,xi,x(i));
end
end
end plot(x,y); hold on
grid on
Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo 3.1

Ejemplo 3.1

Los datos consignados en la tabla pertenecen a la gráfica de la función

f (x) = 3.2 sin(πx/10)

x 0.15 2.30 3.15 4.85 6.25 7.95


y 0.15074 2.1162 3.1964 3.1964 2.9564 1.9213

Determine el polinomio de interpolación por medio de diferencias divididas


de Newton.
1 Realice una tabla con los valores del polinomio interpolante en
x = 0 , 0.5 , 1.0 , . . . , 8.0
y compárelos con los valores “exactos” dados por y = f (x).

2 Realice las gráficas del polinomio de interpolación y la función.


Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo 3.1 (solución parte 1)


f (x) = 3.2 sen(πx/10)

x 0.15 2.30 3.15 4.85 6.25 7.95


y 0.15074 2.1162 3.1964 3.1964 2.9564 1.9213

ejemplo21a.m octave:#> ejemplo21a


clear all; x p y
0 0.00094347 0
xi = [0.15 2.30 3.15 4.85 6.25 7.95];
yi = [0.15074 2.11620 2.67458 3.19645 ...
0.5 0.49945 0.50059
2.95641 1.92134]; 1 0.98762 0.98885
F = newtoncoef(xi,yi); 1.5 1.4521 1.4528
2 1.8807 1.8809
x = -0:0.5:10;
2.5 2.2628 2.2627
n = length(x);
p = zeros(1,n); 3 2.5889 2.5889
y = zeros(1,n); 3.5 2.8511 2.8512
4 3.0432 3.0434
printf(" x p y \n");
4.5 3.1605 3.1606
for i=1:n 5 3.2001 3.2
p(i) = polinewton(F,xi,x(i)); 5.5 3.1608 3.1606
y(i) = 3.2*sin(pi*x(i)/10); 6 3.0435 3.0434
printf(" %10.5g %10.5g %10.5g \n",... 6.5 2.851 2.8512
x(i), p(i), y(i)); 7 2.5881 2.5889
end 7.5 2.2617 2.2627
8 1.8812 1.8809
Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo 3.1 (solución parte 2)


f (x) = 3.2 sen(πx/10)

x 0.15 2.30 3.15 4.85 6.25 7.95


y 0.15074 2.1162 3.1964 3.1964 2.9564 1.9213

ejemplo21b.m

clear all;
xi = [0.15 2.30 3.15 4.85 6.25 7.95];
yi = [0.15074 2.11620 2.67458 3.19645 ...
2.95641 1.92134];
F = newtoncoef(xi,yi);
x = -0:0.5:10;
n = length(x);
p = zeros(1,n);
y = zeros(1,n);
for i=1:n
p(i) = polinewton(F,xi,x(i));
y(i) = 3.2*sin(pi*x(i)/10);
end
plot(x,p,’r’); hold on
plot(x,y);
legend(’polinomio’,’función’)
grid on
Introducción Lagrange Newton Análisis de error Hermite Splines

Teorema (4.1)

Teorema 4.1

Sea f ∈ C n+1 [a, b] y p el polinomio de grado ≤ n que interpola a f en los


n + 1 puntos x0 , x1 , . . . , xn del intervalo [a, b]. Para todo x ∈ [a, b] existe un
ξ = ξ(x) ∈ (a, b) tal que
n
1 Y
f (x) − p(x) = f (n+1) (ξ) (x − xi ) (11)
(n + 1)! i=0

Observaciones

La cota de error para el polinomio de Taylor de grado n alrededor de


x0 concentra toda la información entorno a x0 :

f (n+1) (ξ)
(x − x0 )n+1
(n + 1)!

La cota de error (??) utiliza los n + 1 puntos x0 , x1 , . . . , xn :

f (n+1) (ξ)
(x − x0 ) · · · (x − xn )
(n + 1)!
Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo 4.1

Estime el error cometido al aproximar la función f (x) = sen x por medio


del polinomio de grado nueve que interpola a f en diez puntos del intervalo
[0, 1].

Solución
La cota de error está dada por (??)
n
1 (10) Y
f (x) − p(x) = f (ξ) (x − xi ) (12)
10! i=0

Por otra parte


˛ ˛
f (10) (ξ) = − sen ξ
˛ (10) ˛
=⇒ ˛f (ξ)˛ ≤ 1
y
n
Y
x ∈ [0, 1] =⇒ |x − xi | ≤ 1
i=0

Luego
1
|f (x) − p(x)| ≤ ≤ 2,8 × 10−7
10!
Introducción Lagrange Newton Análisis de error Hermite Splines

Cota de error para el polinomio de Newton

Teorema 4.2

Sea f ∈ C n+1 [a, b] y p el polinomio de grado ≤ n que interpola a f en los


n + 1 puntos x0 , x1 , . . . , xn del intervalo [a, b]. Entonces
n
Y
f (x) − p(x) = F(x0 , x1 , . . . , xn , x) (x − xi ) (13)
i=0
Introducción Lagrange Newton Análisis de error Hermite Splines

Observaciones

Si pn interpola a f en los n + 1 puntos x0 , x1 , . . . , xn ,


n
1 Y
f (x) − p(x) = f (n+1) (ξ) (x − xi ) (14)
(n + 1)! i=0

con ξ ∈ [x0 , xn ].

ξ es desconocido y (14) sólo es útil si la derivada está acotada


˛ ˛
Si ˛f (n+1) (x)˛ < M y h = máx{xi+1 − xi : i = 0, . . . , n},
˛ ˛

M hn+1
máx |f (x) − p(x)| ≤ (15)
x∈[x0 ,xn ] (n + 1)!

El
˛ error disminuye
˛ a medida que n crece y h disminuye, sólo si
˛ (n+1) ˛
˛f (x)˛ está acotada

Aumentar el grado del polinomio no garantiza una mejor aproximación


(pueden aparecer oscilaciones entre los puntos de interpolación)
Introducción Lagrange Newton Análisis de error Hermite Splines

Observaciones

Por fuera del intervalo que contiene a los puntos de interpolación,


n
Y
(x − xi )
i=0

puede crecer “rápido” (extrapolación)

En el interior del intervalo aumentar los puntos de interpolación no


implica mejorar la aproximación

Al aumentar el grado del polinomio, aumentan las oscilaciones

Hasta ahora las aproximaciones de los polinomios de interpolación no


dependen de la distribución de los puntos x0 , . . . , xn de interpolación

Puntos de interpolación igualmente espaciados a menudo conducen a


resultados erróneos en los extremos
Introducción Lagrange Newton Análisis de error Hermite Splines

Fenómeno Runge
Polinomios interpolantes para la función de Runge
1
f (x) = , x ∈ [−1, 1]
1 + 25x2
sobre puntos igualmente espaciados no converge.

Figura: − utiliza 10 puntos equidistantes (◦); − · − utiliza 20 puntos


equidistantes ( ).
Introducción Lagrange Newton Análisis de error Hermite Splines

Fenómeno Runge
Los puntos de interpolación se pueden distribuir no uniformemente con
el fin de minimizar el fenómeno de Runge
„ «
2i + 1
xi = cos π , i = 0, . . . , n (16)
2n

Figura: − utiliza 10 puntos equidistantes (◦); − · − utiliza 20 puntos dados


por (16) ( ).
Introducción Lagrange Newton Análisis de error Hermite Splines

Interpolación de Hermite

Vimos que al aumentar los puntos de interpolación, aumenta el grado


del polinomio de aproximación y las oscilaciones

Una solución consiste en utilizar varios polinomios de interpolación de


grado bajo en lugar de un polinomio de grado alto

La interpolación de Hermite utiliza no sólo los valores de la función a


interpolar sino también sus derivadas. Por ejemplo
x0 x1 ··· xN
f (x0 ) f (x1 ) ··· f (xN )
0 0 0
f (x0 ) f (x1 ) ··· f (xN )

Al incluir las derivadas, aumenta el número de ecuaciones del sistema


que determina los parámetros del polinomio interpolante

Los polinomios de Hermite se generan cuando se consideran sólo los


valores de la primera derivada de la función
Introducción Lagrange Newton Análisis de error Hermite Splines

Polinomio osculante
Proposición 5.1 (Existencia del polinomio osculante)

Considere n + 1 puntos distintos en [a, b]

x0 , x 1 , . . . , x n (17)

y mi un entero no negativo asociado a xi para i = 0, 1, . . . , n. Para


f ∈ C m [a, b] con m = máx0≤i≤n mi existe un único polinomio p de grado
mı́nimo tal que

dk p(xi ) dk f (xi )
k
= para i = 0, 1, . . . , n y k = 0, 1, . . . , mi (18)
dx dxk

Observaciones

El polinomio p que satisface la condición de interpolación de Hermite


(18) es llamado polinomio osculante que aproxima a f

El número de condiciones a satisfacer en (18) es n


P
i=0 mi + (n + 1) y
por tanto el grado del polinomio osculante p es a lo sumo
n
X
M = mi + n
Introducción Lagrange Newton Análisis de error Hermite Splines

Polinomio osculante
Cuando n = 0 tenemos en (17) sólo un punto de interpolación x0 y la
condición de Hermite

dk p(x0 ) dk f (x0 )
k
= para k = 0, 1, . . . , m0
dx dxk

conduce al m0 -ésimo polinomio de Taylor en torno a x0

f 00 (x0 ) f (m0 ) (x0 )


p(x) = f (x0 ) + f 0 (x0 )(x−x0 ) + (x−x0 )2 + · · · + (x−x0 )m0
2! m0 !

Cuando mi = 0 para i = 0, 1 . . . , n la condición de Hermite (18) queda

p(xi ) = f (xi ) para i = 0, 1 . . . , n

y el polinomio resultante es el polinomio de interpolación de Lagrange

Cuando mi = 1 para i = 0, 1 . . . , n la condición de Hermite (18) queda

p(xi ) = f (xi ) y p0 (xi ) = f 0 (xi ) para i = 0, 1 . . . , n

y el polinomio resultante se denomina polinomio de Hermite


Introducción Lagrange Newton Análisis de error Hermite Splines

Teorema (5.1)

Teorema 5.1

Si f ∈ C 1 [a, b] y x0 , x1 , . . . , xn son puntos distintos en [a, b], el polinomio


osculante que interpola a f y f 0 en x0 , x1 , . . . , xn es el polinomio de
Hermite de grado ≤ 2n + 1 y está dado por
n
X n
X
H2n+1 (x) = f (xj )Hn,j (x) + f 0 (xj )Ĥn,j (x) (19)
j=0 j=0

donde

Hn,j (x) = 1 − 2(x − xj )L0n,j (xj ) L2n,j (x) ,


ˆ ˜
(20)

Ĥn,j (x) = (x − xj )L2n,j (x) (21)

y Ln,j es el j-ésimo polinomio de Lagrange de grado n


n
Y (x − xi )
Ln,j = (22)
i=0
xj − xi
i6=j
Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo (5.1)

Ejemplo 5.1

Utilice el polinomio de Hermite que concuerda con los datos de la tabla para
obtener una aproximación de f (1,5).
k xk f (xk ) f 0 (xk )
0 1,3 0,6200860 −0,5220232
1 1,6 0,4554022 −0,5698959
2 1,9 0,2818186 −0,5811571

Solución
Calculamos los polinomios de Lagrange y sus derivadas

(x − x1 )(x − x2 ) 50 2 175 152


L2,0 (x) = = x + x+
(x0 − x1 )(x0 − x2 ) 9 9 9
(x − x0 )(x − x2 ) 100 2 320 247
L2,1 (x) = = − x + x+
(x1 − x0 )(x1 − x2 ) 9 9 9
(x − x0 )(x − x1 ) 50 2 145 104
L2,2 (x) = = x − x+
(x2 − x0 )(x2 − x1 ) 9 9 9
Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo (5.1)

Para las derivadas tenemos


100 175
L02,0 (x) = x−
9 9
200 320
L02,1 (x) = − x+
9 9
100 145
L02,1 (x) = x−
9 9

Para los polinomios H2,j (x) tenemos


152 2
„ «
50 2 175
H2,0 (x) = [1 − 2(x − 1,3)(−5)] x − x+
9 9 9
„ «2
50 2 175 152
= (10x − 12) x − x+
9 9 9
− 100 2 247 2
„ «
320
H2,1 (x) = 1· x + x−
9 9 9
104 2
„ «
50 2 145
H2,2 (x) = 10(2 − x) x − x+
9 9 9
Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo (5.1)

Para los polinomios Ĥ2,j (x) tenemos


152 2
„ «
50 2 175
Ĥ2,0 (x) = (x − 1,3) x − x+
9 9 9

− 100 2 247 2
„ «
320
Ĥ2,1 (x) = (x − 1,6) x + x−
9 9 9
„ «2
50 2 145 104
Ĥ2,2 (x) = (x − 1,9) x − x+
9 9 9
Por el teorema (5.1)
2
X 2
X
H5 (x) = f (xj )Hn,j (x) + f 0 (xj )Ĥn,j (x)
j=0 j=0

= 0,6200860H2,0 (x) + 04554022H2,1 (x) + 0,281886H2,2 (x)

− 0,5220232Ĥ2,0 (x) − 0,5698959Ĥ2,1 (x) − 0,5811571Ĥ2,2 (x)

y evaluando
H5 (1,5) = 0,5118277
Introducción Lagrange Newton Análisis de error Hermite Splines

Polinomio de Hermite con diferencias divididas


Los cálculos requeridos para evaluar el polinomio de Hermite de
acuerdo al teorema (5.1) son tediosos. Otro método consiste en utilizar
la fórmula de diferencias divididas
n
X
pn (x) = f (x0 ) + F(x0 , . . . , xk )(x − x0 ) · · · (x − xk−1 )
k=1

y el teorema del valor medio

f (xi+1 ) − f (xi )
F(xi , xi+1 ) = = f 0 (ξ) , para algún ξ ∈ (xi , xi+1 )
xi+1 − xi

Consideramos los puntos de interpolación

x0 , x1 , . . . , xn
y formamos la sucesión
z0 , z 1 , . . . , z n
definida por
z0 = z1 = x0 , z2 = z3 = x1 , . . . , z2i = z2i+1 = xi , . . .
Introducción Lagrange Newton Análisis de error Hermite Splines

Polinomio de Hermite con diferencias divididas


z f (z) Primeras diferencias Segundas diferencias

z0 = x0 F (z0 ) = f (x0 )

F (z0 , z1 ) = f 0 (x0 )
F (z1 ,z2 )−F (z0 ,z1 )
z1 = x0 F (z1 ) = f (x0 ) F (z0 , z1 , z2 ) = z2 −z0
F (z2 )−F (z1 )
F (z1 , z2 ) = z2 −z1
··· ··· ··· ···
F (z2 ,z3 )−F (z1 ,z2 )
z2 = x1 F (z2 ) = f (x1 ) F (z1 , z2 , z3 ) = z3 −z1
0
F (z2 , z3 ) = f (x1 )
F (z3 ,z4 )−F (z2 ,z3 )
z3 = x1 F (z3 ) = f (x1 ) F (z2 , z3 , z4 ) = z4 −z2
F (z4 )−F (z3 )
F (z3 , z4 ) = z4 −z3
··· ··· ··· ···
F (z3 ,z4 )−F (z2 ,z3 )
z4 = x2 F (z4 ) = f (x2 ) F (z2 , z3 , z4 ) = z4 −z2
F (z4 , z5 ) = f 0 (x2 )
F (z1 ,z2 )−F (z0 ,z1 )
z5 = x2 F (z4 ) = f (x2 ) F (z0 , z1 , z2 ) = z2 −z0
. . . .
. . . .
. . . .

n
X
H2n+1 (x) = F(z0 ) + F(z0 , . . . , zk )(x − z0 ) · · · (x − zk−1 )
k=1
Introducción Lagrange Newton Análisis de error Hermite Splines

Aproximación polinómica fragmentaria


Al aumentar los puntos de interpolación, aumenta el grado del
polinomio de aproximación y las oscilaciones

Otro enfoque consiste en dividir el intervalo en una serie de


subintervalos y en cada uno de esos subintervarlos construir un
polinomio de interpolación de grado bajo

La interpolación lineal une los puntos mediante rectas

{(x0 , f (x0 )), (x1 , f (x1 )), . . . , (xn , f (xn ))}

Otra posibilidad es usar polinomios cuadráticos entre [xi , xi+1 ]


Introducción Lagrange Newton Análisis de error Hermite Splines

Spline (trazador) cúbico

Definición 6.1 (Spline cúbico)


Considere f : [a, b] → R y un conjunto de nodos

a = x0 < x1 < · · · < xn = b

Un spline cúbico para f es una función S : [a, b] → R tal que:

1 S |[xj ,xj+1 ] = Sj donde Sj es un polinomio cúbico en [xj , xj+1 ]

2 S(xj ) = f (xj ) para j = 0, 1, . . . , n

3 Sj+1 (xj+1 ) = Sj (xj+1 ) para j = 0, 1, . . . , n − 2


0
4 Sj+1 (xj+1 ) = Sj0 (xj+1 ) para j = 0, 1, . . . , n − 2
00
5 Sj+1 (xj+1 ) = Sj00 (xj+1 ) para j = 0, 1, . . . , n − 2
6 Una de las siguientes condiciones de frontera se satisfacen
1 S 00 (x0 ) = S 00 (xn ) = 0 (frontera libre)
2 S 0 (x 0) = f 0 (x 0) y S 0 (x n) = f 0 (xn ) (frontera sujeta)
Introducción Lagrange Newton Análisis de error Hermite Splines

Construcción del spline cúbico


En cada intervalo [xj , xj+1 ] consideramos el polinomio cúbico

Sj (x) = aj + bj (x − xj ) + cj (x − xj )2 + dj (x − xj )3
Sj0 (x) = bj + 2cj (x − xj ) + 3dj (x − xj )2 (23)
Sj00 (x) = 2cj + 6dj (x − xj )

con j = 0, . . . , n − 1.

Por la condición de interpolación (2),

S(xj ) = f (xj ) =⇒ aj = f (xj )

De la condición (3),

Sj+1 (xj+1 ) = Sj (xj+1 )


aj+1 = aj + bj (xj+1 − xj ) + cj (xj+1 − xj )2 + dj (xj+1 − xj )3
aj+1 = aj + bj hj + cj h2j + dj h3j
(24)
Introducción Lagrange Newton Análisis de error Hermite Splines

Construcción del spline cúbico


De la condición (4) para la primera derivada,
0
Sj+1 (xj+1 ) = Sj0 (xj+1 )
bj+1 = bj + 2cj (xj+1 − xj ) + 3dj (xj+1 − xj )2 (25)
bj+1 = bj + 2cj hj + 3dj h2j

De la condición (5) para la segunda derivada,


00
Sj+1 (xj+1 ) = Sj00 (xj+1 )
2cj+1 = 2cj + 6dj (xj+1 − xj )
(26)
cj+1 = cj + 3dj hj
cj+1 − cj
dj =
3hj

Al reemplazar dj en (24)
h2j
aj+1 = aj + bj hj + (2cj + cj+1 )
3
(27)
1 hj
bj = (aj+1 − aj ) − (2cj + cj+1 )
hj 3
Introducción Lagrange Newton Análisis de error Hermite Splines

Construcción del spline cúbico


De la última ecuación

1 hj−1
bj−1 = (aj − aj−1 ) − (2cj−1 + cj ) (28)
hj−1 3

De nuevo, al reemplazar dj (26) en (25),

bj+1 = bj + hj (cj + cj+1 ) (29)

Resumiendo: tenemos las ecuaciones (27) y (28)

1 hj
bj = (aj+1 − aj ) − (2cj + cj+1 )
hj 3
(30)
1 hj−1
bj−1 = (aj − aj−1 ) − (2cj−1 + cj )
hj−1 3

La ecuación (29) se puede expresar como

bj = bj−1 + hj−1 (cj−1 + cj ) (31)


Introducción Lagrange Newton Análisis de error Hermite Splines

Construcción del spline cúbico

Finalmente reemplazamos (30) en (31)

bj = bj−1 + hj−1 (cj−1 + cj )


1 hj 1 hj−1
(aj+1 − aj ) − (2cj + cj+1 ) = (aj − aj−1 ) − (2cj−1 + cj ) + hj−1 (cj−1 + cj )
hj 3 hj−1 3
1 1 hj hj−1
(aj+1 − aj ) − (aj − aj−1 ) = (2cj + cj+1 ) − (2cj−1 + cj ) + hj−1 (cj−1 + cj )
hj hj−1 3 3
3 3
(aj+1 − aj ) − (aj − aj−1 ) = hj (2cj + cj+1 ) − hj−1 (2cj−1 + cj ) + 3hj−1 (cj−1 + cj )
hj hj−1

El lado derecho se puede escribir como

hj (2cj + cj+1 ) − hj−1 (2cj−1 + cj ) + 3hj−1 (cj−1 + cj )

= 2hj cj + hj cj+1 − 2hj−1 2cj−1 − hj−1 cj + 3hj−1 cj−1 + 3hj−1 cj

= 2hj cj + hj cj+1 + hj−1 cj−1 + 2hj−1 cj

= hj−1 cj−1 + 2(hj + hj−1 )cj + hj cj+1


Introducción Lagrange Newton Análisis de error Hermite Splines

Construcción del spline cúbico

Obtenemos para los coeficientes cj el sistema de ecuaciones


3 3
hj−1 cj−1 + 2(hj + hj−1 )cj + hj cj+1 = (aj+1 − aj ) − (aj − aj−1 )
hj hj−1
| {z }
tj
con j = 1, 2, . . . , n − 1

El sistema es (n − 1) × (n + 1):

h0 c0 + 2 (h0 + h1 ) c1 + h1 c2 + 0 + 0 + · · · · · · · · · · · · · · · + 0 = t1
0 + h1 c1 + 2 (h1 + h2 ) c2 + h2 c3 + 0 + · · · · · · · · · · · · · · · + 0 = t2
..
.
0 + · · · + 0 + hn−2 cn−3 + 2 (hn−2 + hn−1 ) cn−2 + hn−1 cn−1 = tn−1

Se requieren dos ecuaciones más para “cerrar” el sistema (condiciones


de frontera (61), (62))
Introducción Lagrange Newton Análisis de error Hermite Splines

Construcción del spline cúbico

Para la condición de frontera (61)

S 00 (x0 ) = S 00 (xn ) = 0

De (23),

Sj00 (x) = 2cj + 6dj (x − xj ) =⇒ S000 (x0 ) = 2c0 + 6dj (x0 − x0 ) = 0


=⇒ c0 = 0

Las ecuaciones c0 = 0 y cn = 0 generan el sistema (n + 1) × (n + 1):

32 c 2 0
1 0 0 ··· 0
2 3 3
0
6 h0 2(h0 + h1 ) h1 ··· 0 7 6 c1 7 6 t1 7
6 0 h1 2(h1 + h2 ) h2 0 76 . 6 .
76 7 6 7
76 . 6 .
6 7 7
6 . 76 . 7=6 .
6 7 7
6 . .. .. .. 7
6 . . . . 0 76 .
76 7
6 .
6 7
54 . 4 .
7 7
4 0 ··· ··· hn−2 2(hn−2 + hn−1 ) hn−1 .
5
.
5
0 ··· ··· 0 0 1 cn 0
Introducción Lagrange Newton Análisis de error Hermite Splines

Existencia del spline cúbico


Teorema 6.1 (Spline cúbico con frontera libre)

Sea f : [a, b] → R. Entonces existe un único spline cúbico S que interpola a


f en
a = x0 < x1 < · · · < xn = b
y que satisface la condición de frontera

S 00 (a) = 0 y S 00 (b) = 0

Observaciones
El interpolador S : [a, b] → R está dado por

S(x) = Sj (x) = aj +bj (x−xj )+cj (x−xj )2 +dj (x−xj )3 , x ∈ [xj , xj+1 ]

donde
1 aj = f (xj ), j = 0, . . . , n
2 c0 , c1 , . . . , cn se obtienen de resolver el sistema lineal
3 bj = (aj+1 − aj )/hj − hj (cj+1 + 2cj )/3 (ecuación (30))
4 dj = (cj+1 − cj )/(3 hj ) (ecuación (26))
Introducción Lagrange Newton Análisis de error Hermite Splines

Construcción del spline cúbico

Para la condición de frontera (62)

S 0 (x0 ) = f 0 (x0 ) y S 0 (xn ) = f 0 (xn )

el sistema de ecuaciones queda

32 c
2 h0 h0 0 ··· 0
2 3
0
6 h0 2(h0 + h1 ) h1 ··· 0 7 6 c1 7
6 0 h1 2(h1 + h2 ) h2 0 76 .
76 7
76 .
6 7
. 76 . 7=b
6 7
6
. .. .. ..
6
. . . . 0 76 .
76 7
54 .
6 7
4 0 ··· ··· hn−2 2(hn−2 + hn−1 ) hn−1 .
5
0 ··· ··· 0 hn−1 2 hn−1 cn

con
3 0
h0 (a1 − a0 ) − 3 f (a)
2 3
3
6
h1 (a2 − a1 ) − h3 (a1 − a0 ) 7
6 0 7
.
6 7
b=6
6 . 7
6 . 7
7
3 3
hn−1 (an − an−1 ) − hn−2 (an−1 − an−2 ) 5
6 7
4
3 f 0 (b) − h 3 (an − an−1 )
n−1
Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo

Ejemplo 6.1 (Spline cúbico con frontera libre)


Encuentre el spline cúbico de frontera libre que interpola
x 1 2 3 4 5
y 0 1 0 1 0

y determine el valor de y en x = 1,5.

Solución

El interpolador S : [a, b] → R está dado por

S(x) = Sj (x) = aj +bj (x−xj )+cj (x−xj )2 +dj (x−xj )3 , x ∈ [xj , xj+1 ]

a0 = 0, a1 = 1, a2 = 0, a3 = 1, a4 = 1

h0 = h1 = h2 = h3 = h4 = 0
1 0 0 0 0 1 0 0 0 0
2 3 2 3
6 h0 2(h0 + h1 ) h1 0 0 7 6 1 4 1 0 0 7
A=6 0 h1 2(h1 + h2 ) h2 0 7=6 0 1 4 1 0
6 7 6 7
7
4 0 0 h2 2(h2 + h3 ) h3 5 4 0 0 1 4 1 5
0 0 0 0 1 0 0 0 0 1
Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo
Para b tenemos
2 0 3
6 3 3
0 (a2 − a1 ) − (a1 − a0 ) 0
2 3 7 2 3
6 7
6 h1 h0
t1 7 6 −6
7
6 6 3 3 7 7
A=6 t2 7 = 6 (a − a2 ) − (a2 − a1 ) 7=6 6
6 7 6 7 6 7
6 h2 3
7
4 t3 5 h1 7 4 −6 5
3 3
6 7
0 6
4 (a4 − a3 ) − (a3 − a2 )
7
5 0
h4 h2
0

La solución del sistema


Ax = b
viene dada por
x = [ 0,00000000 − 2,14285714 2,57142857 − 2,14285714 ]T

Para el resto de coeficientes podemos usar las fórmulas vistas

aj+1 − aj cj+1 + 2cj


bj = − hj
hj 3
cj+1 − cj
dj =
3 hj
Introducción Lagrange Newton Análisis de error Hermite Splines

Ejemplo

Para el resto de coeficientes del spline


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

podemos usar también el programa SplineLibre.c

Resultados obtenidos
ai bi ci di
0,00000000 1,71428571 0,00000000 −0,71428571
1,00000000 −0,42857143 −2,14285714 1,57142857
0,00000000 0,00000000 2,57142857 −1,57142857
1,00000000 0,42857143 −2,14285714 0,71428571

El valor solicitado es en x = 1,5 ∈ [x0 , x1 ]

S(x) = S0 (x) = 1,71428571(x − 1) − 0,71428571(x − 1)3


y
S(1,5) = S0 (1,5) = 0,767857141
Introducción Lagrange Newton Análisis de error Hermite Splines

Referencias

R.L. Burden, J.D. Faires.


Análisis numérico
Séptima Edición. Editorial Thomson. 2002.
http://www.as.ysu.edu/∼faires/Numerical-Analysis/

J.W. Eaton
GNU Octave: A high-level interactive language for numerical
computations
Network Theory Ltd., 2002
http://www.network-theory.co.uk/octave/manual/

Vous aimerez peut-être aussi