Interpolación y Aproximación de funciones - dmaii

Anuncio
Universidad Politécnica de Madrid–Escuela Técnica Superior de Ingenieros Industriales
Matemáticas de la Especialidad
Ingeniería Eléctrica
Funciones de interpolación
y aproximación
José Luis de la Fuente O’Connor
[email protected]
[email protected]
Clase_interpolación_aproximación_funciones_2014.pdf
1/57
Índice
Introducción
Interpolación polinómica
Polinomios de Lagrange
Polinomios de Newton
Polinomios Ortogonales
Interpolación polinómica por trozos
Interpolación de Hermite
Interpolación por splines cúbicas
2/57
TY OF TECHNOLOGY
SCHOOL OF CIVIL ENGINEERING
Introducción
al Interpolation
0
40
60
80
20
km/h
80 100
12
0
0
1
120
0
4
kmh
100
11 12 1
10
2
9
3
4
8
7
5
6
Vehicle speed is approximately 49 km/h
3/57
Why Splines?
nterpolation
tru
m
gr
sm
ho
sm
ke
sp
ba
int
T. Gambill (UIUC)
CS 357
La interpolación
tiene como objeto, en general, la obtención de nuevos
e ”contain”
our interpolation?
puntos a partir del conocimiento de un conjunto discreto de ellos.
(Adobe): rasterization on-the-fly. Fonts, etc are defined as
4/57
to plot una
a smooth
curveque
(a continuous
differentiable
function)
La idea Ies Try
obtener
función
se verifique
en todos
los puntos conocidos y
connecting these discrete points.
que permita
calcular tantos nuevos como se desee.
La interpolación tiene como objeto la obtención de nuevos puntos a
partir
del conocimiento
un conjunto
Interpolation
betweendedata
points discreto de ellos.
Por ejemplo, encontrar
Por ejemplo,
encontrar
de yun
paraxuncualquiera
x cualquiera en un
el valor
de yel valor
para
en un experimento en
Consider a set of xy data collected during an experiment.
experimento
en el technique
que se han
obtenidoy at
unx conjunto
de puntos
We use interpolation
to estimate
where there’s
no data.
.x; y/.
el que se han obtenido un conjunto de puntos .x; y/.
y
Datos
knownconocidos
data
y
¿Cuál is
esthe
el valor de
What
y que corresponde
a
corresponding
value
of
y for
este
x? this x ?
x
5/82
La interpolación se puede
como lo inverso de la evaluación de una función.
BASIC ver
IDEAS
a
b
c
d
e
f
h
i
j
g
1
2
3
9
4
6
10
8
7
5
En ésta, se pide evaluar
un valor de y para un valor dado de x. En la
From the known data ( x , y ), interpolate yˆ = F ( xˆ ) for xˆ ≠ x
x
y
interpolación, dados esos
puntos,
calcular la
que pueda generarlos.
y función
F(x)
i
1
1
i
i
5/57
La aproximación busca obtener una función que de resultados tan cercanos
como sea posible a los de otra, o a un conjunto de datos, no necesariamente
pasando por todos ellos.
Por ejemplo, aproximar una función para evitar tener que evaluar su
“complicada” expresión: la de la distribución normal estándar,
1
N.x/ D p
2
x
ˇ
e
y 2 =2
dy:
1
Obtener una función teórica preestablecida que mejor se ajusta a puntos
empíricos (ajustes por mínimos cuadrados).
También, poder derivar o integrar valores dados en forma de tabla.
Hacer pasar por datos discretos funciones continuas y derivables, : : :
6/57
InterpolaciónInterpolation
vs. aproximación
o ajuste.
v.s. Curve
Fitting
Interpolación vs. aproximación y ajuste.
yy
known
data
Datos conocidos
curve
fit aproximada
Función
interpolation
Interpolación
x
x
Curve fitting:
fit function
data notuna
exactly
agree o el
El ajuste,
en general,
busca &predecir
tendencia
de datospasses
de acuerdo
un modelo
En general, comportamiento
Interpolation: function
exactlycon
through
known dado;
data
la interpolación, que la función, o funciones, a que de lugar incluya
la aproximación o ajuste busca predecir una tendencia, o el
todos los datos conocidos, habitualmente buenos.
comportamiento de datos, acorde con un modelo establecido;
8/83
Interpolation
& función,
Extrapolation
la interpolación
que la
o funciones, a que de lugar incluya todos los
datos conocidos,
habitualmente
buenos.
Interpolation
approximate within
the range of independent variable
a
b
c
d
e
f
h
i
j
g
1
2
3
9
4
6
10
8
7
of the given data set.
5
7/57
Numéricamente: para obtener una función f .x/ de interpolación, un primer
enfoque consiste en obtenerla como combinación lineal de un conjunto de
funciones base.
Si se considera un conjunto de n funciones base, j , j D 1; : : : ; n, se pretende
que
f .x/ D
n
i
cj j .x/:
j D1
Las funciones base pueden ser diversas:
Polinomios, polinomios por trozos o porciones
Funciones racionales
Funciones trigonométricas
Otras.
8/57
Si se tienen m datos (de un muestreo de una función, de un experimento, etc.)
a los que se quiere aproximar una función, y n funciones base, después de un
sencillo proceso se llega a un sistema de ecuaciones lineales
n
i
cj j .xi / D f .xi /;
i D 1; : : : ; m:
j D1
Este sistema:
Si m > n, lo normal es que sea incompatible y habría que resolverlo
mediante técnicas de mínimos cuadrados.
Si m < n, el sistema tendrá muchas soluciones.
Si m D n se puede determinar una única función.
9/57
Comprobar, ejecutar y discutir el fichero Interpolacion_eje1.m
xdat = [1 5 10 30 50];
ydat = log(xdat);
plot(xdat,ydat, ’o’)
hold on
>> Interpolacion_eje1
p =
-0.0022
0.1802
p =
-0.0000
0.0017
pause
p = polyfit(xdat,ydat,2)
xvet=1:0.1:50;
plot(xvet,polyval(p,xvet))
hold on
0.3544
-0.0529
0.6705
-0.6192
pause
p = polyfit(xdat,ydat,4)
plot(xvet,polyval(p,xvet))
6
5
4
3
2
1
0
-1
0
5
10
15
20
25
30
35
40
45
50
10/57
Clases EPFL: Position du problème
11/57
Interpolación polinómica
Teorema principal de la interpolación polinómica Sean .x1; y1/, .x2; y2/,
: : : ; .xn; yn/ n duplas de puntos con distintas xi . Existe un polinomio, y sólo
uno, P , de grado n 1 o menor, que satisface P .xi / D yi , i D 1; : : : ; n.
La polinómica es la forma más extendida de interpolación. En la expresión
n
i
cj j .xi / D f .xi /;
i D 1; : : : ; n;
j D1
como funciones base se escogen los monomios j .x/ D x j 1. Da lugar a
pn 1.x/ D c1 C c2x C c3x 2 C 2
C cnx n 1 cuyos coeficientes
ci son la3
3
2
3
2
1 x1 x1n 1
c1
f .x1/
7
6
7
6
7
6
n
1
/
2
solución del sistema lineal1 Ac D 41:: x::2 : : x2:: 5 4c::2 5 D 4f .x
::: 5.
: :
: :
:
cn
f .xn/
1 xn xnn 1
1
A es una matriz de Vandermonde
12/57
Ejemplo. Consideremos los precios de gas natural que siguen:
Año
x 2007 2008 2009 2010 2011 2012
Precio y 133,5 132,2 138,7 141,5 137,6 144,2
year=[2007 2008 2009 2010 2011 2012]’;
precio=[133.5 132.2 138.7 141.5 137.6 144.2]’;
M = vander(year);
a = M\precio;
x=linspace(min(year),max(year));
p=polyval(a,x);
plot(year,precio ,’o’,x,p,’-’);
13/57
Copiar y pegar en Matlab. Luego usar Interpolacion_eje2.
year=[2007 2008 2009 2010 2011 2012]’;
precio=[133.5 132.2 138.7 141.5 137.6 144.2]’;
M = vander(year);
a = M\precio;
x=linspace(min(year),max(year));
p=polyval(a,x);
plot(year,precio ,’o’,x,p,’-’);
hold on
pause
>> Interpolacion_eje2
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 7.482181e-033.
> In Interpolacion_eje2 at 4
x1 = 2007:1:2012;
y = interp1(year,precio,x1,’linear’);
plot(year,precio,’o’,x1,y,’-’)
hold on
pause
146
ys = year-mean(year);
A = vander(ys);
a = A\precio;
ds = x - mean(year);
p = polyval(a,ds);
plot(year,precio,’o’,x,p,’-’);
144
142
140
138
136
134
132
130
128
2006
2006.5
2007
2007.5
2008
2008.5
2009
2009.5
2010
2010.5
2011
14/57
Polinomios de Lagrange
Si se tienen dos puntos .x1; y1/ y .x2; y2/, el polinomio lineal que los interpola
es
siendo los coeficientes c1 y c2:
c1 D
p1.x/ D c1 C c2x;
y1 x 2
x2
y2 x 1
x1
y c2 D
y2
x2
y1
:
x1
Sustituyéndolos en la expresión de p1.x/, y reordenándola, queda
p1.x/ D y1
x
x1
x2
x
C y2
x2
x2
x1
D y1l1.x/ C y2l2.x/:
x1
l1 y l2 son los polinomios de interpolación de Lagrange de primer orden.
15/57
En general, para un conjunto de datos, .xi ; yi /, i D 1; : : : ; n, las funciones
base de Lagrange en Pn
1
son
n
Y
lj .x/ D
kD1
k¤j
n
Y
.x
.xj
xk /
j D 1; : : : ; n:
;
xk /
kD1
k¤j
Las funciones lj .x/ son polinomios de grado n 1 y cumplen que
(
lj .xi / D ıij D
1 si i D j
0 si i ¤ j
;
i; j D 1; : : : ; n:
16/57
x D Œ0 0;25 0;50 0;75 1T .
Funciones base de Lagrange para x=[0.00, 0.25, 0.50, 0.75, 1.00]
1.2
l2
1
l4
0.8
l3
0.6
l1
l5
lk(x)
0.4
0.2
0
−0.2
−0.4
−0.6
0
0.1
0.2
0.3
0.4
0.5
x
0.6
0.7
0.8
0.9
1
15/83
Con esta base, la matriz de antes, A, ya no es la de Vandermonde, sino la
identidad, I, y el polinomio de interpolación
a
d
h
b
e
c
f
g
1
2
3
9
4
6
5
pn 1.x/ D y1l1.x/ C y2l2.x/ C C ynln.x/:
i
j
10
8
7
17/57
Código de Matlab para obtener la interpolación con polinomios de Lagrange.
function [l,L]=lagrang_int(x,y)
% Calcula el polinomio de interpolación de Lagrange
%
x e y vectores de datos; l, coeficientes polinomio resultante,
%
L polinomio base
N=length(x)-1; l=0;
for m=1:N+1
P=1;
for k=1:N+1
if k~=m, P=conv(P,poly(x(k)))/(x(m)-x(k)); end
end
L(m,:)=P;
% Polinomios de Lagrange base
l=l+y(m)*P;
% Coeficientes el polinomio resultante
end
% do_Lagrange_int
x = [-2 -1 1 2]; y=[-6 0 0 6];
l = lagrang_int(x,y)
xx = [-2:0.02:2]; yy = polyval(l,xx);
plot(xx,yy,’b’,x,y,’o’)
18/57
El resultado es el de la figura.
6
4
2
0
−2
−4
−6
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
19/57
Volvamos sobre el problema de los precios del gas natural.
% do_Lagrange_int_gas_1
year = [2007 2008 2009 2010 2011 2012]’;
precio= [133.5 132.2 138.7 141.5 137.6 144.2]’;
ys
= year-mean(year);
l
= lagrang_int(ys,precio)
x
= linspace(min(year),max(year),200);
ds
= x - mean(year);
p=polyval(l,ds); plot(year,precio ,’o’,x,p,’-’);
145
140
135
130
2007
2008
2009
2010
2011
2012
20/57
Polinomios de Newton
El polinomio de interpolación de Newton tiene la forma
pn 1.x/ D c1 C c2.x x1/ C c3.x x1/.x x2/C
C cn.x x1/.x x2/ .x xn 1/:
Las funciones base de Newton son
j .x/ D
j 1
j
.x
xk /;
j D 1; : : : ; n:
kD1
Para i < j , j .xi / D 0, por lo que la matriz A es triangular inferior, con
aij D j .xi /.
21/57
En la figura se ven las funciones base de Newton para
En la figura se ven las funciones base de Newton para
x D Œ0 0;50 1;00 1;50 2T . T
x D Œ0 0;50 1;00 1;50 2 .
Funciones base de Newton para x=[0.00, 0.50, 1.00, 1.50, 2.00]
3
2.5
Newk(x)
2
1.5
1
1
2
0.5
3
4
5
0
−0.5
0
0.2
0.4
0.6
0.8
1
x
1.2
1.4
1.6
1.8
2
22/57
22/58
Ejemplo
Calculemos el polinomio de interpolación de Newton para los puntos
. 2; 27/, .0; 1/ y .1; 0/.
El sistema que hay que resolver es
2
1
41
1
Sustituyendo
0
x2
x3
x1
x1
.x3
0
0
x1/.x3
32 3 2 3
c1
y1
5 4c25 D 4y25 :
x2 /
c3
y3
2
32 3 2
3
1 0 0
c1
27
41 2 05 4c25 D 4 15 ;
1 3 3
c3
0
cuya solución es c D Œ 27 13
p.x/ D
4T . El polinomio es pues
27 C 13.x C 2/
4.x C 2/x:
23/57
El cálculo polinomio de interpolación de Newton se puede optimizar usando las
diferencias divididas.
Volviendo a la expresión matricial general anterior para un polinomio de
segundo grado,
2
1
41
1
0
x2
x3
x1
x1
.x3
0
0
x1/.x3
32 3 2 3
c1
y1
5 4c25 D 4y25 ;
x2/
c3
y3
si se sustrae de la segunda fila la primera, y de la tercera también la primera, se
tiene
3
2
32 3 2
1
0
0
c1
y1
40 x2 x1
5 4c25 D 4y2 y15 :
0
0 x3 x1 .x3 x1/.x3 x2/
c3
y3 y1
24/57
Si se divide la segunda fila por .x2 x1/ y la tercera por .x3 x1/ se llega a
2
2
1
40
0
0
1
1
y1
32 3 6
6 y2
0
c1
6
0 5 4c25 D 6
6 x2
6
x 3 x2
c3
4 y3
x3
De la segunda fila se obtiene que c2 D .y2
3
y1/=.x2
7
y1 7
7
x1 7
7:
7
y1 5
x1
x1/.
Se introducen ahora las diferencias divididas de primer orden
f Œx1; x2 y2
x2
y1
x1
y f Œx1; x3 y3
x3
y1
:
x1
25/57
Si se sustrae la tercera fila de la segunda se llega a
3
2
32 3 2
y1
1 0
0
c1
6
7
40 1
0 5 4c25 D 4
f Œx1; x2
5:
0 0 x3 x2
c3
f Œx1; x3 f Œx1; x2
Si se divide la tercera fila por x3 x2 se llega a
3
2
32 3 2
y1
1 0 0
c1
7
40 1 05 4c25 D 6
4 f Œx1; x2 5 ;
0 0 1
c3
f Œx1; x2; x3
donde
f Œx1; x2; x3 f Œx1; x3
x3
f Œx1; x2
x2
no trivial
D
f Œx2; x3
x3
f Œx1; x2
:
x1
26/57
Lo no trivial
f Œx1 ; x3 
x3
f Œx1 ; x2 
x2
D
D
y2 y1
x2 x1
y3 y1
x3 x1
x3
y3 y2
x3 x2
x2
C
y2 y1
x3 x2
D
.x3
x1 /
.x3
y3 y1
x3 x1
x2 /.x3
.y2 y1 /.x3 x2 /
.x2 x1 /.x3 x2 /
x3
y2 y1
x2 x1
x1 /
D
.y2 y1 /.x2 x1 /
.x2 x1 /.x3 x2 /
x1
y3
D
y2 C y2
y3 y2
x3 x2
x3
y1
.x3
x2 /.x3
y2 y1
x2 x1
x1
D
y2 y1
x2 x1
x2 C x2
.x3
x1 /
x1 /
f Œx2 ; x3 
x3
f Œx1 ; x2 
x1
Con estas fórmulas de recurrencia, para un polinomio de segundo grado,
c1 D
f Œx1
D
c2 D
f Œx1; x2
D
y1
y2
x2
f Œx2; x3
c3 D f Œx1; x2; x3 D
x3
En general
f Œxi ; : : : ; xj  D
y1
x1
f Œx1; x2
D
x1
f ŒxiC1; : : : ; xj 
xj
y3 y2
x3 x2
x3
y2 y1
x2 x1
x1
f Œxi ; : : : ; xj 1
:
xi
27/57
Las diferencias divididas se pueden calcular en forma de tabla
x f Œ
x1 f Œx1
f Œ; 
f Œ; ; 
f Œ; ; ; 
f Œx1; x2
x2 f Œx2
f Œx1; x2; x3
f Œx2; x3
x3 f Œx3
f Œx1; x2; x3; x4
f Œx2; x3; x4
f Œx3; x4
x4 f Œx4
28/57
Ejemplo
Calcular el polinomio de interpolación de Newton de
x 1
3
2
0 2
y 3
13
4
3
5
3
La tabla de diferencias divididas es:
x
1
3
2
0
2
f Œ f Œ;  f Œ; ;  f Œ; ; ; 
3
13
4
1
2
1
6
3
5
3
2
3
1
3
2
5
3
29/57
El polinomio es entonces
p3.x/ D 3 C 12 .x
D 3
1/ C 31 .x
16
10
x C x2
3
3
1/ x
3
2
2.x
1/ x
3
2
x
2x 3:
Este programa realiza la interpolación de Newton.
function [n,DD]=Newton_int_1(x,y)
% Interpolación con polinomios de Newton
%
Vectores de entrada x e y; salida: coeficientes en n y dif. en DD
N = length(x)-1;
DD = zeros(N+1,N+1); DD(1:N+1,1) = y(:);
for k=2:N+1
for m=1:N+2-k
DD(m,k)=(DD(m+1,k-1)-DD(m,k-1))/(x(m+k-1)-x(m)); % Diferencias divididas
end
end
a = DD(1,:); n = a(N+1);
for k=N:-1:1
n = [n a(k)] - [0 n*x(k)];
end
% n(x)*(x-x(k-1))+a_k-1
30/57
Ahora resolvamos un ejemplo cualquiera con este programa.
%do_newton_int_1.m
x=[-2 -1 1 2 4]; y=[-6 0 0 6 60];
% datos ordenados
[n,DD] = Newton_int_1(x,y)
n0
= lagrang_int(x,y)
% por comparar con Lagrange
x
= [1 2 4 -1 -2]; y=[0 6 60 0 -6];
% orden aleatorio datos
[n1,DD]= Newton_int_1(x,y)
xx = [-2: 0.02 : 4]; yy = polyval(n,xx);
clf, plot(xx,yy,’b-’,x,y,’o’)
% se dibuja último caso
60
50
40
30
20
10
0
−10
−2
−1
0
1
2
3
4
31/57
La salida de Matlab sería (¡ojo! coeficientes=pol. Lagrange):
>> do_newton_int_1
n =
0
1
0
-1
0
DD =
-6
6
-2
1
0
0
0
2
1
0
0
6
7
0
0
6
27
0
0
0
60
0
0
0
0
n0 =
Columns 1 through 3
0.000000000000000
1.000000000000000
Columns 4 through 5
-1.000000000000000
0
n1 =
0
1
0
-1
0
DD =
0
6
7
1
0
6
27
5
1
0
60
12
1
0
0
0
6
0
0
0
-6
0
0
0
0
>>
0.000000000000000
32/57
Resolvamos a mano el ejemplo anterior con la tabla.
>> x=[1 3/2 0 2];
>> y=[3 13/4 3 5/3];
>> [n DD]=Newton_int_1(x,y)
n =
Columns 1 through 3
-2.000000000000000
5.333333333333334
Column 4
3.000000000000000
DD =
Columns 1 through 3
3.000000000000000
0.500000000000000
3.250000000000000
0.166666666666667
3.000000000000000 -0.666666666666667
1.666666666666667
0
Column 4
-2.000000000000000
0
0
0
>>
-3.333333333333334
0.333333333333333
-1.666666666666667
0
0
33/57
Polinomios Ortogonales
Otra base interesante para interpolación es la del espacio vectorial de
polinomios ortogonales Pn.
El producto interior de dos polinomios p y q, hp; qi, en el intervalo Œa; b, se
define como
hp; qi D
l
b
p.x/q.x/!.x/ dx;
a
donde !.x/ es una función de peso no negativa. Los polinomios p y q son
ortogonales si hp; qi D 0.
Un conjunto de polinomios fpi g es ortonormal si
(
hpi ; pj i D
1 para i D j
0 para i ¤ j:
34/57
Se puede usar cualquier procedimiento de ortogonalización, por ejemplo
Gram-Schmidt, para obtener una base ortonormal de un espacio de polinomios.
Por ejemplo, si !.x/ D 1, y en el intervalo Œ 1; 1 se aplica Gram-Schmidt a
los monomios 1, x, x 2, x 3; : : :, escalando los resultados para que pk .1/ D 1,
para cada k, se obtienen los polinomios de Legendre
1; x; .3x 2
.35x 4
1/=2; .5x 3
3x/=2;
30x 2 C 3/8; .63x 5
70x 3 C 15x/=8; : : : ;
los primeros n de los cuales forman una base ortogonal de Pn 1. Su fórmula
general es
1 di 2
i
.x
1/ :
pi .x/ D i
2 i Š dx i
35/57
En la figura se representan los seis primeros polinomios de Legendre.
Otros polinomios ortogonales conocidos:
Polinomio
Símbolo Intervalo
Legendre
Pk
Œ 1; 1
Chebyshev, primer tipo
Tk
Œ 1; 1
Chebyshev, segundo tipo
Uk
Œ 1; 1
Jacobi
Jk
Œ 1; 1
Laguerre
Lk
Œ0; 1/
Hermite
Hk
. 1; 1/
Función de peso
1
.1 x 2 / 1=2
.1 x 2 /1=2
.1 x/˛ .1 C x/ˇ ; ˛; ˇ >
e x
2
e x
1
36/57
Los polinomios ortogonales tienen propiedades muy útiles para algoritmos
numéricos.
Satisfacen fórmulas de recurrencia que los hacen fáciles de generar y evaluar:
pkC1.x/ D .˛k x C ˇk /pk .x/
k pk 1.x/:
La de los polinomios de Legendre, por ejemplo, es
.k C 1/PkC1.x/ D .2k C 1/xPk .x/
kPk 1.x/:
También se usan frecuentemente para aproximar por mínimos cuadrados
funciones mediante polinomios de cualquier grado, pues la ortogonalidad hace
que la matriz del sistema que se resuelve sea diagonal.
37/57
Los polinomios de Chebyshev son otro tipo de polinomios de uso frecuente.
En su forma trigonométrica se definen, para x 2 Œ 1; 1, por la identidad
Tk .x/ D cos.k arc cos.x//
además de que T0.x/ D 1 y T1.x/ D 1. La fórmula de recurrencia de tres
términos es
TkC1.x/ D 2xTk .x/ Tk 1.x/:
Los primeros son pues
1; x; 2x 2
8x 4
1; 4x 3
3x;
8x 2 C 1; 16x 5
20x 3 C 5x; : : : ;
38/57
Los cinco primeros los representa esta gráfica.
Su propiedad quizás más interesante es la equialternancia, o equioscilación, pues
los sucesivos puntos extremos tienen igual magnitud pero signo distinto, como
se aprecia en la figura.
39/57
En interpolación polinómica de puntos de una función continua, el error máximo
en un intervalo se minimiza si se escogen como puntos de interpolación las
raíces de los extremos de un polinomio de Chebyshev de grado adecuado: los
nudos o puntos de Chebyshev.
Los puntos de un polinomio de Chebyshev Tk son los k ceros o raíces de ese
polinomio, es decir,
2i 1
;
xi D cos
2k
i D 1; : : : ; k
y los k C 1 puntos extremos (máximos y mínimos), incluidos los de los extremos
del intervalo, es decir
i
xi D cos
; i D 0; : : : ; k:
k
40/57
If we know a great deal about the function f , then we may be able to choose points so as
Losthepuntos
dewe
Chebyshev
lasinformation
abcisas deabout
los puntos
igualmente
espaciados
educe
error. If
don’t haveson
such
the function,
however,
the best awe
o is lo
to largo
reducede
thelaproduct
(a). The Chebyshev
minimize the maximum valu
semicircunferencia
de radiopoints
1 en effectively
R 2.
he product (a).
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Figure 1: Choosing Chebyshev Points
Usar puntos de Chebyshev
como abcisas de interpolación, en vez de puntos
igualmente
espaciados,
tieneChebyshev
ventajas interesantes.
ejemplo,
quiere in Figure
Recall
the process
for selecting
points over an Por
interval
[a, b], se
as shown
interpolar puntos de la función de Runge
1. Draw the semicircle on [a, b] centered at the midpoint ((a + b)/2).
1
2. To select N + 1 points, split the f
semicircle
.x/ D into N arcs of equal length.
1 C 25x 2
3. Project the arcs onto the x-axis, giving the following formula for each Chebyshev point x
¶
µ
en el intervalo Œ 1; 1.
41/57
j·π
a+b b−a
Usando puntos igualmente espaciados en las abcisas –fenómeno de Runge– y
los puntos de Chebyshev, el resultado que se obtiene con polinomios de Newton
es el que sigue.
2
1.2
1
1.5
0.8
1
0.6
0.4
0.5
0.2
0
0
−0.5
−1
−0.5
0
0.5
1
−0.2
−1
−0.5
0
0.5
1
El programa que se ha usado es este.
% Chebyshev_ejemplo_1.m
f = @(x) 1./(1+25*x.^2); n = 11;
xe = linspace(-1,1,n);
xc = cos((2*(1:n)-1)*pi/2/n);
t = -1:.01:1;
c = Newton_int_1(xe,f(xe)); t1 = polyval(c,t);
subplot(121), plot(t,f(t),’b’,t,t1,’r’,xe,f(xe),’o’)
c = Newton_int_1(xc,f(xc)); t1 = polyval(c,t);
subplot(122), plot(t,f(t),’b’,t,t1,’r’,xc,f(xc),’o’)
42/57
Se puede probar que el polinomio de Chebyshev de grado n que mejor interpola,
o aproxima, puntos de una función f .x/ usando puntos de Chebyshev es:
!
n
i
nC1
nC1
X
1 X
2
p.x/ D
f .xi / C
Tk .xi /f .xi / Tk .x/:
n C 1 i D1
n C 1 iD1
œ
kD1
c0
ck
Para calcular el valor de ese p.x/ en determinados puntos se puede usar el
algoritmo de Clenshaw:
n
i
ck Tk .x/ D u0
xu1;
kD0
donde
un D cn; un 1 D cn 1 C 2xun y
uj D cj C 2xuj C1 uj C2; j D n
2; n
1; : : : ; 0:
43/57
Los dos programas que siguen calculan ese polinomio y lo evalúan para
determinados puntos.
function [c,x] = chebpol_int(fn,n)
x = cos((2*(1:n)’-1)*pi/2/n);
y = feval(fn,x);
T = [zeros(n,1) ones(n,1)];
c = [sum(y)/n zeros(1,n-1)];
a = 1;
for k = 2:n
T
= [T(:,2) a*x.*T(:,2)-T(:,1)];
c(k) = sum(T(:,2).* y)*2/n;
a
= 2;
end
function u = chebpol_clenshaw(c,x)
n = length(c);
u = c(n)*ones(size(x));
if n > 1
ujp1 = u;
u = c(n-1)+2*x*c(n);
for j = n-2:-1:1
ujp2 = ujp1;
ujp1 = u;
u
= c(j)+2*x.*ujp1-ujp2;
end
u = u-x.*ujp1;
end
Si se utilizan con
>>
>>
>>
>>
f = @(x) 1./(1+25*x.^2);
[c,x] = chebpol_int(f,11);
t = -1:.01:1;
plot(t,f(t),’b’,t,chebpol_clenshaw(c,t),’r’,x,f(x),’ok’)
44/57
Da como resultado:
1.2
1
0.8
0.6
0.4
0.2
0
−0.2
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
que es la misma gráfica de antes.
Aquí se pueden ver otras aproximaciones.
45/57
Interpolación polinómica por trozos
Como hemos podido ver, algunas veces, al interpolar mediante un único
polinomio un conjunto amplio de datos se suelen producir resultados poco
satisfactorios en forma de oscilaciones.
Una mejora consiste en interpolar cada intervalo entre datos mediante un único
polinomio u otra función.
La interpolación más simple es un segmento de línea recta entre cada dos datos
o nudos.
Aquí se pueden ver algunos casos.
46/57
Interpolación de Hermite
Esta interpolación tiene en cuenta los valores de la función a aproximar por
interpolación en puntos concretos y el de sus derivadas.
Cada tramo es un polinomio de tercer grado con primera derivada continua en
los extremos.
El número de ecuaciones que se añade así al sistema lineal que subyace en el
proceso es significativo.
47/57
Supongamos que se quiere aproximar f .x/ en el intervalo Œxi ; xd , mediante
interpolación con un polinomio de tercer grado
p.x/ D a C b.x
xi / C c.x
xi /2 C d.x
xi /2.x
xd /;
y que f .xi / D yi , f .xd / D yd , p.xi / D yi , p.xd / D yd , p 0.xi / D si y
p 0.xd / D sd .
Necesitaremos calcular a, b, c y d .
La derivada del polinomio es
p 0.x/ D b C 2c.x
xi / C d 2.x
xi /.x
xd / C .x
Sustituyendo los valores conocidos se tiene que
a D yi
a C b.xd
b D si
b C 2c.xd
xi / C c.xd
xi / C d.xd
xi / 2
xi /2 .
D yd
xi /2 D sd :
48/57
Escribiendo esto en forma matricial,
2
32 3 2 3
a
1
0
0
0
yi
6
76 7 6 7
1
0
0
60
7 6 b 7 6 si 7
6
76 7 D 6 7:
0
41 xi xd .xd xi /2
5 4 c 5 4yd 5
d
0
1
2.xd xi / .xd xi /2
sd
Si se tienen n nudos o datos, hará falta determinar 4.n 1/ parámetros de los
polinomios.
El que se requiera que interpolen esos n datos añade 2.n 1/ ecuaciones, pues
cada n
1 cúbica debe verificar los valores en sus extremos.
El que tengan derivadas continuas añade otras n 2 ecuaciones para cada
punto de unión.
49/57
El total de ecuaciones es 3n 4, lo que deja 4.n 1/ 3n C 4 D n
parámetros libres.
La interpolación por tanto no es única, por lo que se pueden fijar más
condiciones para esos grados de libertad: monotonicidad, convexidad, etc.
La función que realiza esta aproximación en Matlab es pchip.
50/57
Una sesión de trabajo con un ejemplo sencillo puede ser
>>
>>
>>
>>
>>
>>
x = -3:3;
y = [-1 -1 -1 0 1 1 1];
t = -3:.01:3;
p = pchip(x,y,t);
plot(x,y,’o’,t,p,’-’)
legend(’datos’,’pchip’,3)
1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8
−1
−3
datos
pchip
−2
−1
0
1
2
3
51/57
Interpolación por splines cúbicas
Una spline es una curva definida, normalmente, mediante polinomios de grado
k, con continuidad hasta la derivada k
1.
Una spline cúbica es un polinomio de tercer grado con continuidad hasta la
segunda derivada.
La idea de interpolar mediante splines es usar varias fórmulas, cada una
correspondiente a un polinomio de grado bajo, para pasar a través de varios
puntos.
52/57
Splines represent an alternative approach to data interpolation. In polynomial interpolation, a single formula, given by a polynomial, is used to meet all data points. The idea of
splines is to use several formulas, each a low-degree polynomial, to pass through the data
points.
El ejemplo más
simple
es unof aspline
en elin que
puntos a
The simplest
example
spline islineal,
a linear spline,
whichse
oneconectan
“connects thelos
dots’’with
segments. Assume that we are given a set of data points (x1 , y1 ), . . . , (xn , yn )
interpolarstraight-line
mediante
segmentos de recta.
with x1 < · · · < xn . A linear spline consists of the n − 1 line segments that are drawn
between neighboring pairs of points. Figure 3.12(a) shows a linear spline where, between
each neighboring pair of points (xi , yi ), (xi+1 , yi+1 ), the linear function y = ai + bi x is
En la figura
muestra
unpoints.
ejemplo
de data
spline
lineal
el mismo
spline
drawnse
through
the two
The given
points
in the yfigure
are (1, 2),con
(2, 1),
(4, 4), cúbica.
and (5, 3), and the linear spline is given by
y
y
4
4
3
3
2
2
1
1
1
2
3
(a)
4
5
x
1
2
3
4
5
x
(b)
Figure 3.12 Splines through four data points. (a) Linear spline through (1,2), (2,1),
(4,4), and (5,3) consists of three linear polynomials given by (3.15). (b) Cubic spline
through the same points, given by (3.16).
53/57
Como en el caso de Hermite, las splines cúbicos para interpolar n puntos de una
función imponen 3n 4 condiciones, más n
continuidad de la segunda derivada.
2 adicionales por requerirse la
Los dos grados de libertad adicionales se fijan si, por ejemplo,
Las primeras derivadas en los extremos izquierdo y derecho se fijan en
sendos valores.
Las segundas derivadas en los extremos son cero.
Las primeras y segundas derivadas en los extremos son iguales dos a dos, etc.
54/57
Ejemplo
Estudiemos la interpolación de tres puntos .x1; y1/, .x2; y2/ y .x3; y3/.
Los polinomios de los dos tramos podrían ser
p1.x/ D ˛1 C ˛2x C ˛3x 2 C ˛4x 3
p2.x/ D ˇ1 C ˇ2x C ˇ3x 2 C ˇ4x 3:
Se necesitan 8 ecuaciones para determinar los parámetros.
El que las cúbicas pasen por los puntos dados impone las siguientes condiciones
˛1 C ˛2x1 C ˛3x12 C ˛4x13
˛1 C ˛2x2 C ˛3x22 C ˛4x23
ˇ1 C ˇ2x2 C ˇ3x22 C ˇ4x23
ˇ1 C ˇ2x3 C ˇ3x32 C ˇ4x33
D
D
D
D
y1
y2
y2
y3 :
La continuidad de las primeras derivadas en x2 impone esta condición
˛2 C 2˛3x2 C 3˛4x22 D ˇ2 C 2ˇ3x2 C 3ˇ4x22:
55/57
La continuidad de las segundas derivadas en x2 impone esta otra
2˛3 C 6˛4x2 D 2ˇ3 C 6ˇ4x2:
Por definición, se impone que las segundas derivadas en los extremos sean cero,
lo que hace que
2˛3 C 6˛4x1 D 0 y 2ˇ3 C 6ˇ4x3 D 0:
Todo en forma matricial queda
2
1 x1 x12 x13
61 x2 x22 x23
60 0 0 0
6
60 0 0 0
6
60 1 2x2 3x22
6
60 0 2 6x2
40 0 2 6x1
0 0
0
0
0 0
0 0
1 x2
1 x3
0 1
0 0
0 0
0 0
0
0
x22
x32
2x2
2
0
2
32 3
2 3
0
y1
˛1
6y27
0 7 6 ˛2 7
6y 7
37 6 7
x2 7 6˛3 7
6 37
37 6 7
6y47
x3 7 6˛4 7
6 7
27 6 7 D 6 7 :
3x2
7 6ˇ17 6 0 7
6x2 7 6ˇ2 7
607
5
4
5
405
0
ˇ3
0
6x3
ˇ4
Resolviendo este sistema se obtiene la solución deseada.
56/57
La función que realiza esta aproximación en Matlab es spline.
Una sesión de trabajo puede ser, comparando con Hermite,
x = -3:3;
y = [-1 -1 -1 0 1 1 1];
t = -3:.01:3;
p = pchip(x,y,t);
s = spline(x,y,t);
plot(x,y,’o’,t,p,’-’,t,s,’-.’)
legend(’datos’,’pchip’,’spline’,4)
1.5
1
0.5
0
−0.5
−1
−1.5
−3
datos
pchip
spline
−2
−1
0
1
2
3
57/57
Descargar