Вы находитесь на странице: 1из 57

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales

Matemticas de la Especialidad
Ingeniera Elctrica

Funciones de interpolacin

y aproximacin
Jos Luis de la Fuente OConnor
jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_interpolacin_aproximacin_funciones_2014.pdf
1/57

ndice
 Introduccin

 Interpolacin polinmica


Polinomios de Lagrange
 Polinomios de Newton
 Polinomios Ortogonales

 Interpolacin polinmica por trozos




Interpolacin de Hermite
 Interpolacin por splines cbicas

2/57

TY OF TECHNOLOGY

SCHOOL OF CIVIL ENGINEERING

Introduccin

al Interpolation

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 interpolacin
tiene como objeto, en general, la obtencin 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
funcin
se verifique
en todos
los puntos conocidos y
connecting these discrete points.
que permita
calcular tantos nuevos como se desee.

 La interpolacin tiene como objeto la obtencin 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 theres
no data.
.x; y/.

el que se han obtenido un conjunto de puntos .x; y/.


y

Datos
knownconocidos
data

Cul is
esthe
el valor de
What
y que corresponde
a
corresponding
value
of
y for
este
x? this x ?

5/82

 La interpolacin se puede
como lo inverso de la evaluacin de una funcin.
BASIC ver
IDEAS
a

10

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
interpolacin, dados esos
puntos,
calcular la
que pueda generarlos.
y funcin
F(x)
i

5/57

 La aproximacin busca obtener una funcin 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 funcin para evitar tener que evaluar su
complicada expresin: la de la distribucin normal estndar,
1
N.x/ D p
2

y 2 =2

dy:

 Obtener una funcin terica preestablecida que mejor se ajusta a puntos


empricos (ajustes por mnimos cuadrados).

 Tambin, poder derivar o integrar valores dados en forma de tabla.


 Hacer pasar por datos discretos funciones continuas y derivables, : : :
6/57

 InterpolacinInterpolation
vs. aproximacin
o ajuste.
v.s. Curve
Fitting

 Interpolacin vs. aproximacin y ajuste.


yy

known
data
Datos conocidos
curve
fit aproximada
Funcin
interpolation
Interpolacin

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 interpolacin, que la funcin, o funciones, a que de lugar incluya
la aproximacin 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
& funcin,
Extrapolation
la interpolacin
que la
o funciones, a que de lugar incluya todos los
datos conocidos,
habitualmente
buenos.
Interpolation
approximate within
the range of independent variable
a

10

of the given data set.

7/57

 Numricamente: para obtener una funcin f .x/ de interpolacin, un primer


enfoque consiste en obtenerla como combinacin 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 trigonomtricas
 Otras.
8/57

 Si se tienen m datos (de un muestreo de una funcin, de un experimento, etc.)


a los que se quiere aproximar una funcin, y n funciones base, despus 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 habra que resolverlo

mediante tcnicas de mnimos cuadrados.

 Si m < n, el sistema tendr muchas soluciones.


 Si m D n se puede determinar una nica funcin.
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))

-1

10

15

20

25

30

35

40

45

50

10/57

Clases EPFL: Position du problme

11/57

Interpolacin polinmica
Teorema principal de la interpolacin polinmica Sean .x1; y1/, .x2; y2/,
: : : ; .xn; yn/ n duplas de puntos con distintas xi . Existe un polinomio, y slo
uno, P , de grado n 1 o menor, que satisface P .xi / D yi , i D 1; : : : ; n.

 La polinmica es la forma ms extendida de interpolacin. En la expresin


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
solucin 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:

Ao
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

Sustituyndolos en la expresin de p1.x/, y reordenndola, 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 interpolacin 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

son

n
Y

lj .x/ D

kD1
kj
n
Y

.x

.xj

xk /
j D 1; : : : ; n:

;
xk /

kD1
kj

 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 1T .


Funciones base de Lagrange para x=[0.00, 0.25, 0.50, 0.75, 1.00]
1.2

l2

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

15/83

 Con esta base, la matriz de antes, A, ya no es la de Vandermonde, sino la


identidad, I, y el polinomio de interpolacin
a
d
h

pn 1.x/ D y1l1.x/ C y2l2.x/ C    C ynln.x/:


i

10

17/57

 Cdigo de Matlab para obtener la interpolacin con polinomios de Lagrange.


function [l,L]=lagrang_int(x,y)
% Calcula el polinomio de interpolacin 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

6
2

1.5

0.5

0.5

1.5

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 interpolacin 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 2T . 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)

1.5

1
2

0.5

3

4

5

0.5
0

0.2

0.4

0.6

0.8

1
x

1.2

1.4

1.6

1.8

22/57
22/58

Ejemplo

 Calculemos el polinomio de interpolacin de Newton para los puntos


. 2; 27/, .0; 1/ y .1; 0/.

 El sistema que hay que resolver es


2
1
41
1

 Sustituyendo

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 solucin es c D 27 13
p.x/ D

4T . El polinomio es pues

27 C 13.x C 2/

4.x C 2/x:
23/57

 El clculo polinomio de interpolacin de Newton se puede optimizar usando las


diferencias divididas.

 Volviendo a la expresin 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 tambin 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

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

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

.x3

x1 /
.x3

y3 y1
x3 x1

x2 /.x3

.y2 y1 /.x3 x2 /
.x2 x1 /.x3 x2 /

x3

y2 y1
x2 x1

x1 /

.y2 y1 /.x2 x1 /
.x2 x1 /.x3 x2 /

x1

y3

y2 C y2

y3 y2
x3 x2

x3

y1

.x3

x2 /.x3

y2 y1
x2 x1

x1

y2 y1
x2 x1

x2 C x2

.x3

x1 /

x1 /

f x2 ; x3
x3

f x1 ; x2
x1

 Con estas frmulas de recurrencia, para un polinomio de segundo grado,


c1 D

f x1

c2 D

f x1; x2

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 interpolacin de Newton de


x 1

3
2

0 2

y 3

13
4

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

2x 3:

 Este programa realiza la interpolacin de Newton.


function [n,DD]=Newton_int_1(x,y)
% Interpolacin 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

10
2

4
31/57

 La salida de Matlab sera (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 interpolacin 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

p.x/q.x/!.x/ dx;

donde !.x/ es una funcin 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 ortogonalizacin, 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 frmula


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
Smbolo 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/

Funcin de peso
1
.1 x 2 / 1=2
.1 x 2 /1=2
.1 x/ .1 C x/ ; ; >
e x
2
e x

36/57

 Los polinomios ortogonales tienen propiedades muy tiles para algoritmos


numricos.

 Satisfacen frmulas de recurrencia que los hacen fciles 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/:

 Tambin se usan frecuentemente para aproximar por mnimos 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 trigonomtrica se definen, para x 2 1; 1, por la identidad
Tk .x/ D cos.k arc cos.x//
adems de que T0.x/ D 1 y T1.x/ D 1. La frmula de recurrencia de tres
trminos 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 grfica.

 Su propiedad quizs ms interesante es la equialternancia, o equioscilacin, pues


los sucesivos puntos extremos tienen igual magnitud pero signo distinto, como
se aprecia en la figura.

39/57

 En interpolacin polinmica de puntos de una funcin continua, el error mximo


en un intervalo se minimiza si se escogen como puntos de interpolacin las
races 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 races de ese


polinomio, es decir,


2i 1
 ;
xi D cos
2k


i D 1; : : : ; k

y los k C 1 puntos extremos (mximos y mnimos), 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
dont 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.2

0.4

0.6

0.8

Figure 1: Choosing Chebyshev Points


 Usar puntos de Chebyshev
como abcisas de interpolacin, 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 funcin 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 ba

 Usando puntos igualmente espaciados en las abcisas fenmeno 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.5

0.2
1

0.5

0.5

 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 funcin 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 evalan 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

0.8

0.6

0.4

0.2

0.2
1

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

que es la misma grfica de antes.

 Aqu se pueden ver otras aproximaciones.


45/57

Interpolacin polinmica 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 funcin.

 La interpolacin ms simple es un segmento de lnea recta entre cada dos datos


o nudos.

 Aqu se pueden ver algunos casos.


46/57

Interpolacin de Hermite
 Esta interpolacin tiene en cuenta los valores de la funcin a aproximar por
interpolacin en puntos concretos y el de sus derivadas.

 Cada tramo es un polinomio de tercer grado con primera derivada continua en


los extremos.

 El nmero de ecuaciones que se aade 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


interpolacin 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/ parmetros de los


polinomios.

 El que se requiera que interpolen esos n datos aade 2.n 1/ ecuaciones, pues
cada n

1 cbica debe verificar los valores en sus extremos.

 El que tengan derivadas continuas aade otras n 2 ecuaciones para cada


punto de unin.

49/57

 El total de ecuaciones es 3n 4, lo que deja 4.n 1/ 3n C 4 D n


parmetros libres.

 La interpolacin por tanto no es nica, por lo que se pueden fijar ms

condiciones para esos grados de libertad: monotonicidad, convexidad, etc.

 La funcin que realiza esta aproximacin en Matlab es pchip.

50/57

 Una sesin 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

3
51/57

Interpolacin por splines cbicas


 Una spline es una curva definida, normalmente, mediante polinomios de grado
k, con continuidad hasta la derivada k

1.

 Una spline cbica es un polinomio de tercer grado con continuidad hasta la


segunda derivada.

 La idea de interpolar mediante splines es usar varias frmulas, cada una

correspondiente a un polinomio de grado bajo, para pasar a travs 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 ms
simple
es unof aspline
en elin que
puntos a
The simplest
example
spline islineal,
a linear spline,
whichse
oneconectan
connects thelos
dotswith
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 ygure
are (1, 2),con
(2, 1),
(4, 4), cbica.
and (5, 3), and the linear spline is given by
y

(a)

(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 cbicos para interpolar n puntos de una
funcin imponen 3n 4 condiciones, ms 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 interpolacin de tres puntos .x1; y1/, .x2; y2/ y .x3; y3/.
 Los polinomios de los dos tramos podran 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 parmetros.

 El que las cbicas 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 condicin


2 C 23x2 C 34x22 D 2 C 23x2 C 34x22:

55/57

 La continuidad de las segundas derivadas en x2 impone esta otra


23 C 64x2 D 23 C 64x2:

 Por definicin, se impone que las segundas derivadas en los extremos sean cero,
lo que hace que

23 C 64x1 D 0 y 23 C 64x3 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 63 7
6 37
37 6 7
6y47
x3 7 64 7
6 7
27 6 7 D 6 7 :
3x2
7 617 6 0 7
6x2 7 62 7
607
5
4
5
405
0
3
0
6x3
4

 Resolviendo este sistema se obtiene la solucin deseada.

56/57

 La funcin que realiza esta aproximacin en Matlab es spline.


 Una sesin 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

0.5

0.5

1.5
3

datos
pchip
spline
2

57/57

Вам также может понравиться