Vous êtes sur la page 1sur 56

# h i j

d e f g
a b c
10 8 7
9 4 6 5
1 2 3
1/56
Ingeniera Elctrica
Aproximacin e
Interpolacin
de funciones
Jos Luis de la Fuente OConnor
jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_interpolacin_aproximacin_funciones_2013.pdf
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
2/56
ndice
v Introduccin
v Interpolacin polinmica
v Polinomios de Lagrange
v Polinomios de Newton
v Polinomios Ortogonales
v Interpolacin polinomial por trozos
v Interpolacin de Hermite
v Interpolacin de splines cbicas
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
3/56
Introduccin
Lecture
Lecture
8
8
I nterpolation
I nterpolation
Linear Linear Interpolation Interpolation
Polynomial Polynomial Interpolation Interpolation
Piecewise Piecewise Polynomial Interpolation Polynomial Interpolation
Numerical Methods
Numerical Methods
for
for
Civil
Civil
Engineers
Engineers
S U R A N A R E E INSTITUTE OF ENGINEERING
UNIVERSITY OF TECHNOLOGY SCHOOL OF CIVIL ENGINEERING
Visual Interpolation
Vehicle speed is approximately 49 km/h
0
20
40
60
80
100
120
km/h
Figure 10.2
kmh
2
0

4
0

6
0
8
0 1
0
0

1
2
0

1
4
0
12
1
2
3
4
5
6
7
8
9
11
10
NMM: Interpolation page 2
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
4/56
Fonts == interpolation
how do we contain our interpolation?
splines
Postscript (Adobe): rasterization on-the-y. Fonts, etc are dened as
cubic B ezier curves (linear interpolation between lower order B ezier
curves)
TrueType (Apple): similar, quadratic B ezier curves, thus cannot convert
from TrueType to PS (Type1) losslessly
T. Gambill (UIUC) CS 357 April 12, 2011 2 / 29
Why Splines?
truetype fonts, postscript,
metafonts
graphics surfaces
smooth surfaces are needed
how do we interpolate
smoothly a set of data?
keywords: Bezier Curves,
splines, B-splines, NURBS
basic tool: piecewise
interpolation
T. Gambill (UIUC) CS 357 April 12, 2011 3 / 29
v La interpolacin tiene como objeto la obtencin de nuevos puntos a
partir del conocimiento de un conjunto discreto de ellos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
5/56
v La idea es obtener una funcin que se verique en todos los puntos
conocidos y que permita calcular tantos nuevos como se desee.
v Por ejemplo, encontrar el valor de y para un x cualquiera en un
experimento en el que se han obtenido un conjunto de puntos .x; y/.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
5/82
La interpolacin tiene como objeto la obtencin de nuevos puntos a
partir del conocimiento de un conjunto discreto de ellos.
Por ejemplo, encontrar el valor de y para un x cualquiera en un
experimento en el que se han obtenido un conjunto de puntos
.x; y/.
Interpolation between data points
known data
y
x
Consider a set of xy data collected during an experiment.
We use interpolation technique to estimate y at x where theres no data.
What is the
corresponding value
of y for this x ?
BASIC IDEAS BASIC IDEAS
From the known data ( x
i
, y
i
), interpolate
Determining coefficient a
1
, a
2
, . . . , a
n
of basis function F(x)
F(x) = a
1

1
(x) + a
2

2
(x) + . . . + a
n

n
(x)
Polynomials are often used as the basis functions.
F(x) = a
1
+ a
2
x + a
3
x
2
+ . . . + a
n
x
n-1
i
x x x F y =

for )

n n
i i
i i
y x
y x
y x
y x
M M
M M
1 1
1 1
+ +
interpolate
y x

y
x
x

F(x)
y
Datos conocidos
Cul es el valor de
y que corresponde a
este x?
x
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
6/56
v La aproximacin, obtener mediante una funcin resultados tan
cercanos como sea posible a los de otra, o a un conjunto de datos.
v Por ejemplo, aproximar una funcin para evitar tener que evaluar su
complicada expresin: la de la distribucin normal estndar,
N.x/ =
1
_
2

x
o
e
y
2
=2
dy:
v Tambin, poder derivar o integrar valores dados en forma de tabla.
v Hacer pasar por datos discretos funciones continuas y derivables, ...
Examples Polynomial interpolation Piecewise polynomial interpolation
Basic motivations

## Plotting a smooth curve through discrete data points

Suppose we have a sequence of data points
Coordinates x
1
x
2
x
n
Function y
1
y
2
y
n

## Try to plot a smooth curve (a continuous dierentiable function)

connecting these discrete points.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
7/56
v Interpolacin vs. aproximacin y ajuste.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
8/83
Interpolacin vs. aproximacin y ajuste.
Interpolation v.s. Curve Fitting
known data
y
x
interpolation
curve fit
Curve fitting: fit function & data not exactly agree
Interpolation: function passes exactly through known data
Interpolation & Extrapolation
Interpolation approximate within the range of independent variable
of the given data set.
Extrapolation approximate outside the range of independent variable
of the given data set.
x x
1
x
2
y
y
Datos conocidos
Interpolacin
x
El ajuste, en general, busca predecir una tendencia o el
comportamiento de datos de acuerdo con un modelo dado;
la interpolacin, que la funcin, o funciones, a que de lugar incluya
todos los datos conocidos, habitualmente buenos.
v En general,
la aproximacin o ajuste busca predecir una tendencia, o el
comportamiento de datos, acorde con un modelo establecido;
la interpolacin que la funcin, o funciones, a que de lugar
incluya todos los datos conocidos, habitualmente buenos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
8/56
v Numricamente, para aproximar o interpolar mediante una funcin
f.x/, la idea bsica consiste en obtenerla como combinacin lineal
de un conjunto de funciones base.
v Si se considera un conjunto de n funciones base,
j
, j = 1; : : : ; n,
se pretende que
f.x/ =
n

j =1
c
j

j
.x/:
v Las funciones base pueden ser diversas:
v Polinomios, polinomios por trozos o porciones
v Funciones racionales
v Funciones trigonomtricas
v Otras.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
9/56
v 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

j =1
c
j

j
.x
i
/ = f.x
i
/; i = 1; : : : ; m:
v Este sistema:
v Si m > n, lo normal es que sea incompatible y habra que
v Si m < n, el sistema tendr muchas soluciones.
v Si m = n se puede determinar una nica funcin.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
10/56
v Comprobar y discutir con chero Interpolacion_eje1.m
xdat = [1 5 10 30 50];
ydat = log(xdat);
plot(xdat,ydat, o)
hold on
pause
p = polyfit(xdat,ydat,2)
xvet=1:0.1:50;
plot(xvet,polyval(p,xvet))
hold on
pause
p = polyfit(xdat,ydat,4)
plot(xvet,polyval(p,xvet))
>> Interpolacion_eje1
p =
-0.0022 0.1802 0.3544
p =
-0.0000 0.0017 -0.0529 0.6705 -0.6192
0 5 10 15 20 25 30 35 40 45 50
-1
0
1
2
3
4
5
6
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
11/56
Clases EPFL: Position du problme
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
12/56
Interpolacin polinmica
v Es la forma ms habitual de interpolacin y aproximacin. En
n

j =1
c
j

j
.x
i
/ = f.x
i
/; i = 1; : : : ; n;
como funciones base se escogen los monomios
j
.x/ = x
j 1
. Da
lugar a
p
n1
.x/ = c
1
c
2
x c
3
x
2
c
n
x
n1
cuyos coecientes c
i
son la solucin del sistema lineal
1
Ac =
_
_
_
1 x
1
x
n1
1
1 x
2
x
n1
2
:
:
:
:
:
:
:
:
:
:
:
:
1 x
n
x
n1
n
_

_
_
_
_
c
1
c
2
:
:
:
c
n
_

_
=
_
_
_
f.x
1
/
f.x
2
/
:
:
:
f.x
n
/
_

_
:
1
A es una matriz de Vandermonde
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
13/56
v Ejemplo. Consideremos los precios de gas natural que siguen:
Ao x 2006 2007 2008 2009 2010 2011
Precio y 133,5 132,2 138,7 141,5 137,6 144,2
year =[2006 2007 2008 2009 2010 2011];
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,-);
v Copiar y pegar en Matlab. Luego usar Interpolacion_eje2.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
14/56
year =[2006 2007 2008 2009 2010 2011];
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
x1 = 2006:1:2011;
y = interp1(year,precio,x1,linear);
plot(year,precio,o,x1,y,-)
hold on
pause
ys = year-mean(year);
A = vander(ys);
a = A\precio;
ds = x - mean(year);
p = polyval(a,ds);
plot(year,precio,o,x,p,-);
>> Interpolacion_eje2
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 7.482181e-033.
> In Interpolacion_eje2 at 4
2006 2006.5 2007 2007.5 2008 2008.5 2009 2009.5 2010 2010.5 2011
128
130
132
134
136
138
140
142
144
146
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
15/56
Polinomios de Lagrange
v Si se tienen dos puntos .x
1
; y
1
/ y .x
2
; y
2
/, el polinomio lineal que
los interpola es
p
1
.x/ = c
1
c
2
x;
siendo los coecientes c
1
y c
2
:
c
1
=
y
1
x
2
y
2
x
1
x
2
x
1
y c
2
=
y
2
y
1
x
2
x
1
:
Sustituyndolos en la expresin de p
1
.x/ y reordenndola queda
p
1
.x/ = y
1
x x
2
x
1
x
2
y
2
x x
1
x
2
x
1
= y
1
l
1
.x/ y
2
l
2
.x/:
v l
1
y l
2
son los polinomios de interpolacin de Lagrange de primer
orden.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
16/56
v En general, para un conjunto de datos, .x
i
; y
i
/, i = 1; : : : ; n, las
funciones base de Lagrange en P
n1
son
l
j
.x/ =
n

k=1
k=j
.x x
k
/
n

k=1
k=j
.x
j
x
k
/
; j = 1; : : : ; n:
v Las funciones l
j
.x/ son polinomios de grado n 1 y cumplen que
l
j
.x
i
/ =
ij
=
_
_
_
1 si i = j
0 si i = j
; i; j = 1; : : : ; n:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
17/56
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
15/83
En la gura se ven las funciones base de Lagrange para
x D 0 0;25 0;50 0;75 1
T
.
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
1.2
x
l
k
(
x
)
Funciones base de Lagrange para x=[0.00, 0.25, 0.50, 0.75, 1.00]
l
1
l
2
l
3
l
4
l
5
v Con esta base, la matriz de antes, A, ya no es la de Vandermonde,
sino la identidad, I, y el polinomio de interpolacin
p
n1
.x/ = y
1
l
1
.x/ y
2
l
2
.x/ y
n
l
n
.x/:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
18/56
v Este es un 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)
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
19/56
v El resultado es el de la gura.
2 1.5 1 0.5 0 0.5 1 1.5 2
6
4
2
0
2
4
6
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
20/56
v Volvamos sobre el problema de los precios del gas natural.
% do_Lagrange_int_gas
year =[2006 2007 2008 2009 2010 2011];
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,-);
2006 2006.5 2007 2007.5 2008 2008.5 2009 2009.5 2010 2010.5 2011
130
135
140
145
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
21/56
Polinomios de Newton
v El polinomio de interpolacin de Newton tiene la forma
p
n1
.x/ = c
1
c
2
.x x
1
/ c
3
.x x
1
/.x x
2
/
c
n
.x x
1
/.x x
2
/ .x x
n1
/:
v Las funciones base de Newton son

j
.x/ =
j 1
j
k=1
.x x
k
/; j = 1; : : : ; n:
v Para i < j ,
j
.x
i
/ = 0, por lo que la matriz A es triangular
inferior, con a
ij
=
j
.x
i
/.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
22/56
v En la gura se ven las funciones base de Newton para
x = 0 0;50 1;00 1;50 2
T
.
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
0.5
0
0.5
1
1.5
2
2.5
3
x
N
e
w
k
(
x
)
Funciones base de Newton para x=[0.00, 0.50, 1.00, 1.50, 2.00]

2

3

4

5
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
23/56
v Ejemplo. Calculemos el polinomio de interpolacin de Newton para
los puntos .2; 27/, .0; 1/ y .1; 0/.
v El sistema que hay que resolver es
_
_
1 0 0
1 x
2
x
1
0
1 x
3
x
1
.x
3
x
1
/.x
3
x
2
/
_
_
_
_
c
1
c
2
c
3
_
_
=
_
_
y
1
y
2
y
3
_
_
:
v Sustituyendo
_
_
1 0 0
1 2 0
1 3 3
_
_
_
_
c
1
c
2
c
3
_
_
=
_
_
27
1
0
_
_
;
cuya solucin es c = 27 13 4
T
. El polinomio es pues
p.x/ = 27 13.x 2/ 4.x 2/x:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
24/56
v El clculo polinomio de interpolacin de Newton se puede optimizar
usando las diferencias divididas.
v Volviendo a la expresin matricial general anterior para un
_
_
1 0 0
1 x
2
x
1
0
1 x
3
x
1
.x
3
x
1
/.x
3
x
2
/
_
_
_
_
c
1
c
2
c
3
_
_
=
_
_
y
1
y
2
y
3
_
_
;
si se sustrae de la segunda la la primera, y de la tercera tambin la
primera, se tiene
_
_
1 0 0
0 x
2
x
1
0
0 x
3
x
1
.x
3
x
1
/.x
3
x
2
/
_
_
_
_
c
1
c
2
c
3
_
_
=
_
_
y
1
y
2
y
1
y
3
y
1
_
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
25/56
v Si ahora se divide la segunda la por .x
2
x
1
/ y la tercera por
.x
3
x
1
/ se llega a
_
_
1 0 0
0 1 0
0 1 x
3
x
2
_
_
_
_
c
1
c
2
c
3
_
_
=
_
_
_
_
_
_
_
y
1
y
2
y
1
x
2
x
1
y
3
y
1
x
3
x
1
_

_
:
v De la segunda la se obtiene que c
2
= .y
2
y
1
/=.x
2
x
1
/. Si se
introducen ahora las diferencias divididas de primer orden
f x
1
; x
2

y
2
y
1
x
2
x
1
y f x
1
; x
3

y
3
y
1
x
3
x
1
;
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
26/56
y se sustrae la tercera la de la segunda se llega a
_
_
1 0 0
0 1 0
0 0 x
3
x
2
_
_
_
_
c
1
c
2
c
3
_
_
=
_
_
_
y
1
f x
1
; x
2

f x
1
; x
3
f x
1
; x
2

_
:
v Si se divide la tercera la por x
3
x
2
se llega a
_
_
1 0 0
0 1 0
0 0 1
_
_
_
_
c
1
c
2
c
3
_
_
=
_
_
_
y
1
f x
1
; x
2

f x
1
; x
2
; x
3

_
;
donde
f x
1
; x
2
; x
3

f x
1
; x
3
f x
1
; x
2

x
3
x
2
no trivial
=
f x
2
; x
3
f x
1
; x
2

x
3
x
1
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
27/56
v Lo no trivial
f x
1
; x
3
f x
1
; x
2

x
3
x
2
=
y
3
y
1
x
3
x
1

y
2
y
1
x
2
x
1
x
3
x
2
=
.x
3
x
1
/
_
y
3
y
1
x
3
x
1

y
2
y
1
x
2
x
1
_
.x
3
x
2
/.x
3
x
1
/
=
y
3
y
2
y
2
y
1

_
y
2
y
1
x
2
x
1
_
.x
3
x
2
x
2
x
1
/
.x
3
x
2
/.x
3
x
1
/
=
y
3
y
2
x
3
x
2

y
2
y
1
x
3
x
2

.y
2
y
1
/.x
3
x
2
/
.x
2
x
1
/.x
3
x
2
/

.y
2
y
1
/.x
2
x
1
/
.x
2
x
1
/.x
3
x
2
/
x
3
x
1
=
y
3
y
2
x
3
x
2

y
2
y
1
x
2
x
1
x
3
x
1
=
f x
2
; x
3
f x
1
; x
2

x
3
x
1
v Con estas frmulas de recurrencia, para un polinomio de segundo
c
1
= f x
1
= y
1
c
2
= f x
1
; x
2
=
y
2
y
1
x
2
x
1
c
3
= f x
1
; x
2
; x
3
=
f x
2
; x
3
f x
1
; x
2

x
3
x
1
=
y
3
y
2
x
3
x
2

y
2
y
1
x
2
x
1
x
3
x
1
v En general
f x
i
; : : : ; x
j
=
f x
i 1
; : : : ; x
j
f x
i
; : : : ; x
j 1

x
j
x
i
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
28/56
v Las diferencias divididas se pueden calcular en forma de tabla
x f f ; f ; ; f ; ; ;
x
1
f x
1

f x
1
; x
2

x
2
f x
2
f x
1
; x
2
; x
3

f x
2
; x
3
f x
1
; x
2
; x
3
; x
4

x
3
f x
3
f x
2
; x
3
; x
4

f x
3
; x
4

x
4
f x
4

h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
29/56
v Ejemplo. Calcular el polinomio de interpolacin de Newton de
x 1
3
2
0 2
y 3
13
4
3
5
3
v La tabla de diferencias divididas es:
x f f ; f ; ; f ; ; ;
1
3
2
0
2
3
13
4
3
5
3
1
2
1
6

2
3
1
3

5
3
2
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
30/56
v El polinomio es entonces
p
3
.x/ = 3
1
2
.x 1/
1
3
.x 1/
_
x
3
2
_
2.x 1/
_
x
3
2
_
x
= 3
10
3
x
16
3
x
2
2x
3
:
v 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)]; % n(x)*(x-x(k-1))+a_k-1
end
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
31/56
v 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
2 1 0 1 2 3 4
10
0
10
20
30
40
50
60
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
32/56
v La salida de Matlab sera (ojo! coecientes=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 0.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
>>
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
33/56
v 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 -3.333333333333334
Column 4
3.000000000000000
DD =
Columns 1 through 3
3.000000000000000 0.500000000000000 0.333333333333333
3.250000000000000 0.166666666666667 -1.666666666666667
3.000000000000000 -0.666666666666667 0
1.666666666666667 0 0
Column 4
-2.000000000000000
0
0
0
>>
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
34/56
Polinomios Ortogonales
v Otra base interesante para interpolacin es la del espacio vectorial
de polinomios ortogonales P
n
.
v El producto interior de dos polinomios p y q, (p; q), en el intervalo
a; b, se dene como
(p; q) =
l
b
a
p.x/q.x/!.x/ dx;
donde !.x/ es una funcin de peso no negativa. Los polinomios p
y q son ortogonales si (p; q) = 0.
v Un conjunto de polinomios {p
i
] es ortonormal si
(p
i
; p
j
) =
_
_
_
1 para i = j
0 para i = j:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
35/56
v Se puede usar cualquier procedimiento de ortogonalizacin, por
ejemplo Gram-Schmidt, para obtener una base ortonormal de un
espacio de polinomios.
v Por ejemplo, si !.x/ = 1, y en el intervalo 1; 1 se aplica
Gram-Schmidt a los monomios 1, x, x
2
, x
3
; : : :, escalando los
k
.1/ = 1, para cada k, se obtienen los
polinomios de Legendre
1; x; .3x
2
1/=2; .5x
3
3x/=2;
.35x
4
30x
2
3/8; .63x
5
70x
3
15x/=8; : : : ;
los primeros n de los cuales forman una base ortogonal de P
n1
. Su
frmula general es
p
i
.x/ =
1
2
i
i
d
i
dx
i
_
.x
2
1/
i
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
36/56
v En la gura se pueden ver los seis primeros polinomios de Legendre.
v Otros polinomios ortogonales conocidos son los que siguen
Polinomio Smbolo Intervalo Funcin de peso
Legendre P
k
1; 1 1
Chebyshev, primer tipo T
k
1; 1 .1 x
2
/
1=2
Chebyshev, segundo tipo U
k
1; 1 .1 x
2
/
1=2
Jacobi J
k
1; 1 .1 x/

.1 x/

; ; > 1
Laguerre L
k
0; o/ e
x
Hermite H
k
.o; o/ e
x
2
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
37/56
v Los polinomios ortogonales tienen unas propiedades muy tiles para
algoritmos numricos.
v Satisfacen, por ejemplo, frmulas de recurrencia como
p
k1
.x/ = .
k
x
k
/p
k
.x/
k
p
k1
.x/;
que los hacen fciles de generar y evaluar. La de los polinomios de
Legendre es
.k 1/P
k1
.x/ = .2k 1/xP
k
.x/ kP
k1
.x/:
funciones mediante polinomios de cualquier grado, pues la
ortogonalidad hace que la matriz del sistema que se resuelve sea
diagonal.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
38/56
v Los polinomios de Chebyshev son otro tipo de polinomios
ortogonales bastante utilizados. En su forma trigonomtrica de
primer tipo se denen, para x 1; 1, por la identidad
T
k
.x/ = cos.k arc cos.x//
0
.x/ = 1 y T
1
.x/ = 1. La frmula de recurrencia
de tres trminos es
T
k1
.x/ = 2xT
k
.x/ T
k1
.x/:
v Los primeros son pues
1; x; 2x
2
1; 4x
3
3x;
8x
4
8x
2
1; 16x
5
20x
3
5x; : : : ;
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
39/56
v Los cinco primeros son los de la grca.
v 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 gura.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
40/56
v En interpolacin polinmica 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
v Los puntos de un polinomio de Chebyshev T
k
son los k ceros o
races de ese polinomio,
x
i
= cos
_
2i 1
2k

_
; i = 1; : : : ; k
y los k 1 puntos extremos (mximos y mnimos), incluidos los de
los extremos del intervalo, es decir
x
i
= cos
_
i
k
_
; i = 0; : : : ; k:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
41/56
v Los puntos de Chebyshev son las abcisas de los puntos igualmente
espaciados a lo largo de la semicircunferencia de radio 1 en R
2
.
cs412: introduction to numerical analysis 10/12/10
Lecture 10: Introduction to Splines
Instructor: Professor Amos Ron Scribes: Mark Cowlishaw, Nathanael Fillmore
1 Review of Chebyshev Points
Last time we talked briey about using Chebyshev points for polynomial interpolation. The idea is
that our choice of interpolation points can have a large impact on the error of our interpolant. Recall
the expression for error in polynomial interpolation (Given f the function we are approximating,
interval [a, b], interpolation points x = (x
0
, x
1
, . . . , x
n
), and interpolant p
n
):
E(t) = f(t) p
n
(t) =
f
(n+1)
(c)
(n + 1)!

_
n

i=0
(t x
i
)
_
. .
(a)
(for some c [a, b]) (1)
If we know a great deal about the function f, then we may be able to choose points so as to
reduce the error. If we dont have such information about the function, however, the best we can
do is to reduce the product (a). The Chebyshev points eectively minimize the maximum value of
the product (a).
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Figure 1: Choosing Chebyshev Points
Recall the process for selecting Chebyshev points over an interval [a, b], as shown in Figure 1:
1. Draw the semicircle on [a, b] centered at the midpoint ((a + b)/2).
2. To select N + 1 points, split the semicircle into N arcs of equal length.
3. Project the arcs onto the x-axis, giving the following formula for each Chebyshev point x
j
x
j
=
a + b
2
+
b a
2
cos
_
j
N
_
(for j = 0, 1, . . . , N)
1
v Usar puntos de Chebyshev como abcisas de interpolacin, en vez de
puntos igualmente espaciados, tiene ventajas interesantes. Por
ejemplo, se quiere interpolar la funcin de Runge
f.x/ =
1
1 25x
2
en el intervalo 1; 1.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
42/56
v Usando puntos igualmente espaciados en las abcisas y los puntos de
Chebyshev, el resultado que se obtiene es el que sigue.
1 0.5 0 0.5 1
0.5
0
0.5
1
1.5
2
1 0.5 0 0.5 1
0.2
0
0.2
0.4
0.6
0.8
1
1.2
v 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)
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
43/56
v Se puede probar que el polinomio de Chebyshev de grado n que
mejor aproxima una funcin f.x/ usando puntos de Chebyshev es:
p.x/=
1
n 1
n1

i =1
f.x
i
/

c
0

k=1
2
n 1
_
n1

i =1
T
k
.x
i
/f.x
i
/
_

c
k
T
k
.x/:
v Para calcular el valor de ese p.x/ en determinados puntos se puede
usar el algoritmo de Clenshaw:
n
i
k=0
c
k
T
k
.x/ = u
0
xu
1
;
donde
u
n
= c
n
; u
n1
= c
n1
2xu
n
y
u
j
= c
j
2xu
j 1
u
j 2
; j = n 2; n 1; : : : ; 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
44/56
v Los dos programas que siguen calculan ese polinomio y lo evalan
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
v 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)
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
45/56
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1
0.2
0
0.2
0.4
0.6
0.8
1
1.2
que es la misma grca de antes.
v Aqu se pueden ver otras aproximaciones.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
46/56
Interpolacin polinomial por trozos
v Como hemos podido ver, algunas veces, al aproximar mediante un
nico polinomio un conjunto amplio de datos se suelen producir
resultados poco satisfactorios en forma de oscilaciones.
v Una mejora consiste es aproximar cada intervalo entre datos
mediante un nico polinomio u otra funcin.
v La aproximacin ms simple es un segmento de lnea recta entre
v Aqu se pueden ver algunos casos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
47/56
Interpolacin de Hermite
v Esta interpolacin tiene en cuenta los valores de la funcin a
aproximar en puntos concretos y el de sus derivadas.
continua en los extremos.
v El nmero de ecuaciones que se aade as al sistema lineal que
subyace en el proceso es signicativo.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
48/56
v Supongamos que se quiere aproximar f.x/ en el intervalo x
i
; x
d
,
mediante un polinomio de tercer grado
p.x/ = a b.x x
i
/ c.x x
i
/
2
d.x x
i
/
2
.x x
d
/;
y que f.x
i
/ = y
i
, f.x
d
/ = y
d
, p.x
i
/ = y
i
, p.x
d
/ = y
d
,
p
/
.x
i
/ = s
i
y p
/
.x
d
/ = s
d
.
v Necesitaremos calcular a, b, c y d.
v La derivada del polinomio es
p
/
.x/ = b 2c.x x
i
/ d
_
2.x x
i
/.x x
d
/ .x x
i
/
2
_
.
v Sustituyendo los valores conocidos se tiene que
a = y
i
a b.x
d
x
i
/ c.x
d
x
i
/
2
= y
d
b = s
i
b 2c.x
d
x
i
/ d.x
d
x
i
/
2
= s
d
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
49/56
v Escribiendo esto en forma matricial,
_
_
_
_
1 0 0 0
0 1 0 0
1 x
i
x
d
.x
d
x
i
/
2
0
0 1 2.x
d
x
i
/ .x
d
x
i
/
2
_

_
_
_
_
_
a
b
c
d
_

_
=
_
_
_
_
y
i
s
i
y
d
s
d
_

_
:
v Si se tienen n nudos o datos, har falta determinar 4.n 1/
parmetros de los polinomios.
v El que se requiera que interpolen esos n datos aade 2.n 1/
ecuaciones, pues cada n 1 cbica debe vericar los valores en sus
extremos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
50/56
v El total de ecuaciones es 3n 4, lo que deja
4.n 1/ 3n 4 = n parmetros libres.
v La interpolacin por tanto no es nica, por lo que se pueden jar
v La funcin que realiza esta aproximacin en Matlab es pchip.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
51/56
v 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)
3 2 1 0 1 2 3
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1

datos
pchip
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
52/56
Interpolacin de splines cbicas
v Una spline es una curva denida, normalmente, mediante
v Una spline cbica es un polinomio de tercer grado con continuidad
v Como en el caso de Hermite, las splines cbicos para aproximar n
puntos de una funcin imponen 3n 4 condiciones, ms n 2
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
53/56
v Las primeras derivadas en los extremos izquierdo y derecho se
jan en sendos valores.
v Las segundas derivadas en los extremos son cero.
v Las primeras y segundas derivadas en los extremos son iguales
dos a dos, etc.
v Ejemplo. Estudiemos el caso de la interpolacin a tres puntos
.x
1
; y
1
/, .x
2
; y
2
/ y .x
3
; y
3
/.
v Los polinomios de los dos tramos podran ser
p
1
.x/ =
1

2
x
3
x
2

4
x
3
p
2
.x/ =
1

2
x
3
x
2

4
x
3
:
Se necesitan 8 ecuaciones para determinar los parmetros.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
54/56
v El que las cbicas pasen por los puntos dados impone las siguientes
condiciones

2
x
1

3
x
2
1

4
x
3
1
= y
1

2
x
2

3
x
2
2

4
x
3
2
= y
2

2
x
2

3
x
2
2

4
x
3
2
= y
2

2
x
3

3
x
2
3

4
x
3
3
= y
3
:
2
impone esta
condicin

2
2
3
x
2
3
4
x
2
2
=
2
2
3
x
2
3
4
x
2
2
:
2
impone esta otra
2
3
6
4
x
2
= 2
3
6
4
x
2
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
55/56
v Por denicin, se impone que las segundas derivadas en los
extremos sean cero, lo que hace que
2
3
6
4
x
1
= 0 y 2
3
6
4
x
3
= 0:
v Todo en forma matricial queda
_
_
_
_
_
_
_
_
_
_
_
_
1 x
1
x
2
1
x
3
1
0 0 0 0
1 x
2
x
2
2
x
3
2
0 0 0 0
0 0 0 0 1 x
2
x
2
2
x
3
2
0 0 0 0 1 x
3
x
2
3
x
3
3
0 1 2x
2
3x
2
2
0 1 2x
2
3x
2
2
0 0 2 6x
2
0 0 2 6x
2
0 0 2 6x
1
0 0 0 0
0 0 0 0 0 0 2 6x
3
_

_
_
_
_
_
_
_
_
_
_
_
_
_

4
_

_
=
_
_
_
_
_
_
_
_
_
_
_
_
y
1
y
2
y
3
y
4
0
0
0
0
_

_
:
v Resolviendo este sistema se obtiene la solucin deseada.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
56/56
v La funcin que realiza esta aproximacin en Matlab es spline.
v 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)
3 2 1 0 1 2 3
1.5
1
0.5
0
0.5
1
1.5

datos
pchip
spline