You are on page 1of 31

INTERPOLACION POLINOMICA

INTRODUCCIN
Prof. Oscar Tinoco G.
Interpolacin polinomial de
Newton

Revisaremos solo algunos casos: lineal, de segundo


grado y de tercer grado.
Interpolacin lineal
Utilizando tringulos
semejantes
f1 x f x0 f x1 f x0
f(x)
x x0 x1 x0

Reordenando
f(x1)
f x1 f x0 f1(x)
f1 x f x0 x x0
x1 x0
f(x0)

x0 x x1
Ejemplo
Estimar ln 2 mediante interpolacin lineal si ln1 = 0 y ln 6 = 1.791759 y ln 4 = 1.386294

1.791759 0 f x1 f x0
f1 2 ln 1 2 1 0.3583519 f1 x f x0 x x0
6 1 x1 x0
Valor real ln 2 = 0.6931472
1.386294 0
f1 2 ln 1 2 1 0.4620981 Error relativo porcentual = 33.3%
4 1

2.5
f(x) = ln x
2

1.5

Valor verdadero
1

f1(x)
0.5

Estimaciones
-0.5
lineales
-1
0 1 2 3 4 5 6 7 8
Interpolacin cuadrtica
Polinomio cuadrtico
f2(x) = b0 + b1(x x0) + b2(x x0)(x x1) (1)
simplificado
f2(x) = b0 + b1x b1x0 + b2x2 + b2x0 x1 b2xx0 b2xx1
Podemos escribirlo como
f2(x) = a0 + a1x + a2x2
Donde
a0 = b0 b1x0 + b2x0 x1, a1 = b1 b2x0 b2x1, a2=b2
Podemos evaluar b0, b1 y b2 sustituyendo x0, x1 y x2 en la ecuacin (1), se
obtiene
b0 = f(x0) f x2 f x1 f x1 f x0

f x1 f x0 x2 x1 x1 x0
b1 b2
x1 x0 x2 x0
ejemplo 2
Calculemos ln 2 con ln 4 y ln 6, los punto que se conocen son:
f(x) = ln x
x0 = 1 f(x0) = 0
x1 = 4 f(x0) = 1.386294 2.5

x0 = 6 f(x0) = 1.791759 2

Aplicando las ecs. anteriores Valor verdadero


1.5

b0 = 0
1
b1 = (1.386294 0)/(4 1) = 0.4620981
0.5
b2 = ((1.791759 1.386294)
0
/(6 4) 0.4620981)/(6 1) Estimacin
= 0.0518731 -0.5 cuadrtica
Estimacin lineal
El polinomio es -1
0 1 2 3 4 5 6 7 8
f2(x) = 0.4620981(x 1) 0.0518731(x 1)(x 4)

f2(2) = 0.5658444 Valor real ln 2 = 0.6931472


Error relativo porcentual = 18.4%
Forma general
Polinomio general
fn(x) = b0 + b1(x x0) +...+ bn(x x0)(x x1)... (x xn1)
Los coeficientes se calculan con
b0 = f(x0)
b1 = f [x1, x0]
b2 = f [x2, x1, x0]

bn = f [,xn, xn1, ..., x1, x0]


Donde los parntesis cuadrados se denominan diferencias divididas finitas.
La n-sima diferencia dividida finita es:

f xn , xn 1 ,..., x1 f xn 1 , xn 2 ,..., x0
f xn , xn 1 ,..., x1 , x0
xn x0

Se conoce como polinomio de interpolacin de Newton en diferencias divididas.


ejemplo 3
Calculemos ln 2 con ln 0, ln 4, ln 5 y ln 6, los punto que se conocen son:
x0 = 1 f(x0) = 0
x1 = 4 f(x1) = 1.386294
x2 = 6 f(x3) = 1.791759
x3 = 5 f(x2) = 1.609438
primeras diferencias
f [x1, x0] = (1.386294 0)/(4 1) = 0.4602981
f [x2, x1] = (1.791759 1.386294)/(6 4) = 0.2027326
f [x3, x2] = (1.609438 1.791759)/(5 6) = 0.1823216
Segundas diferencias
f [x2, x1, x0] = (0.2027326 0.4602981)/(6 1) = 0.05187311
f [x3, x2, x1] = (0.1823216 0.2027326)/(5 4) = 0.02041100
tercera diferencia
f [x3, x2, x1 , x0] = (0.02041100(0.05187311))/(5 1) = 0.007865529
Polinomio
f3(x) = 0 + 0.4602981(x 1) 0.05187311(x 1) (x 4) + 0.007865529(x 1) (x 4) (x 6)
Valor calculado con el polinomio
f3(2) = 0.6287686
Ejemplo 3 (cont.)
f3(x)

2.5

Valor verdadero
1.5

1 f(x) = ln x
0.5

-0.5

Estimacin cbica
-1
0 1 2 3 4 5 6 7 8
Estimacin del error
Para estimar el error requerimos de un datos ms (xn+1).
La siguiente frmula puede utilizarse para estimar el
error.

Rn = f [,xn+1, xn, ..., x1, x0](x x0) (x x1)... (x


xn)
Un problema de interpolacin

Evolucin de la temperatura diurna

Hora 6 8 10 12 14 16 18 20
Grados 7 9 12 18 21 19 15 10
2
2
01
Grados

81
16
41
12
08
6
4 6 8 1 1 1 1 1 2 2
0 2 Hora
4 6 8 0 2
Grfico de la temperatura
en Matlab

% Hora
t = [6 8 10 12 14 16 18 20]'
% Temperatura
T = [7 9 12 18 21 19 15 10]'
plot(t,T,'*'), grid
xlabel('Horas'), ylabel('Grados')
Interpolacin lineal

Recta que pasa por 25


los puntos (x0,y0) y
20
(x1,y1)
P1(x) = a0 + a1x 15

Grados
a0 + a1x0 = y0 10
a0 + a1x1 = y1
5
5 10 15 20
a0 + 12a1 = 18 Hora
a0 + 14a1 = 21
Interpolacin cuadrtica
Polinomio de grado2
25

P2(x) = a0 + a1x + a2x2


20

a0 + a1x0 + a2x02 = y0
a0 + a1x1 + a2x12 = y1 15

a0 + a1x2 + a2x22 = y2 Grados

10

1 10 100 a 0 12 5
5 10
Hora
15 20

1 12 144 a 1 18
X=10:2:14 polyval(p,X)
1 14 196 a 2 21 Y=[12 18 21]' x=5:0.1:22;
A=vander(X) y=polyval(p,x);
cond(A) plot(x,y)
p=A\Y
Desplazamiento del origen
P2(x) = b0 + b1(xx1) + b2(xx1)2

2 4 b1 6

2 4 b2 3

P2(x) = 18 + 9/4(x12) 3/8(x12)2

A=[4 -2;4 2]; c=[-6,3]';


cond(A)
p=(A\c)
p=[p' 18]; polyval(p,X-12)
Forma normal del polinomio de
interpolacin
Pn(x) = a0 + a1x + a2x2 + + anxn

1 x0 x 20 x 0n-1 a0 y0

1 x1 x12 n-1
x1 1 a y1
1 x x 22 x 2n-1 a2 y2
2



1 xn x 2n n
x n-1 an yn

Dados n+1 puntos de abscisas distintas (x0,y0),..., (xn,yn),


existe un nico polinomio de grado no superior a n tal que
P(xi) = yi, i=1,2,...,n
Forma de Lagrange del
polinomio de interpolacin

Polinomios de Lagrange
( x x 0 ) ( x x i 1 )( x x i 1 ) ( x x n )
Lin ( x)
( x i x 0 ) ( x i x i 1 )( x i x i 1 ) ( x i x n )

Existencia del polinomio de


interpolacin.
Pn(x) = y0 L0n(x) + y1 L1n(x) + y2 L2n(x) + + yn Lnn(x)
Forma de Newton del
polinomio de interpolacin
Pn(x) = c0 + c1(xx0) + c2(xx0)(xx1) + +
+ cn(xx0)(xx1) (xxn-1)

Determinacin algebraica

Pn(x0) = y0 = c0
Pn(x1) = y1 = c0+ c1(x1x0)
Pn(x2) = y2 = c0+ c1(x2x0) + c2(x2x0)(x2x1)

Ventajas
El sistema es triangular
Permite aadir nuevos puntos sin rehacer todos los
clculos.
Tabla de diferencias divididas

c0 = f[x0] = y0
y1 c 0 f x1 f x 0
c1 = f x 0 , x1
x1 x 0 x1 x 0
f x1 , x 2 f x 0 , x1
f x 0 ,x1 , x 2
x2 x0

f x1 , x 2 , x k f x 0 , x 1 , x k 1

f x 0 , x 1 , x k
xk x0
Tabla de diferencias divididas

y0 f[x0 ]
y1 f [ x1 ] f [ x 0 , x1 ]
y2 f[x2 ] f [ x1 , x 2 ] f [ x 0 , x1 , x 2 ]
y3 f[x3 ] f[x2 , x3 ] f [ x1 , x 2 , x 3 ] f [ x 0 , x1 , x 2 , x 3 ]

12 18
14 21 1.5000
10 12 2.2500 -0.3750
16 19 1.1667 -0.5417 -0.0417
Evaluacin del polinomio de
interpolacin

Pn(x) = c0+ = (((cn(xx n-1)


c1(xx0) + + cn-1)(xx n-2)
c2(xx0)(xx1) + + cn-2)(xx n-3)
+ +
+ cn(xx0)(xx1) (xxn-1) = + c1)(xx0)
+ c0
Error de interpolacin

f (n 1) ( )
f(x) Pn (x) (x x 0 )(x x1 ) (x x n )
(n 1)!

(n 1)
f ( )

f x 0 , x1 , , x n , x n+1
(n 1)!
Conclusiones

El polinomio de interpolacin suele usarse para estimar


valores de una funcin tabulada, en las abscisas que no
aparecen en la tabla.
El aumento de grado no siempre mejora la aproximacin.
El polinomio es muy sensible a los errores de los datos.
Alternativas

Mtodo de Mnimos Cuadrados


Interpolacin polinmica segmentaria.
Splines
Interpolacin y polinomio de
Lagrange

Se trata de encontrar un polinomio de grado n que


pase por los puntos (x0, f(x0)), (x1, f(x1)), ... (xn, f(xn)), se
construye un cociente Ln,k(xk) con la propiedad de que
Ln,k(xi) = 0 cuando i k y Ln,k(xk) = 1
Se requiere entonces que el numerador contenga
(x x0) (x x1)... (x xk1)(x xk+1)... (x xn)
El denominador debe coincidir con el numerador
cuando x = xk.
Ln ,k x
x x0 x x1 x xk 1 x xk 1 x xn

n
x xi
xk x0 xk x1 xk xk 1 xk xk 1 xk xn i 0 xk xi
ik
N-simo polinomio
interpolante de Lagrange

Teorema
Si x0, x1, x2, ... xn, son n+1 nmeros distintos y si f es una
funcin cuyos valores estn dados en esos nmeros,
entonces existe un polinomio de grado a lo ms n, con la
propiedad de que
f(xk) = P(xk) para cada k = 0, 1, 2, ...n
Este polinomio est dado por n
P x f x0 Ln , 0 x f xn Ln ,n x f xk Ln ,k x
k 0
donde
Ln ,k x
x x0 x x1 x xk 1 x xk 1 x xn

n
x xi
xk x0 xk x1 xk xk 1 xk xk 1 xk xn i 0 xk xi
ik
Aproximacin a 1/x con
interpolantes de Lagrange
Usaremos x0 = 2, x1 = 2.5 y x2 = 4, para obtener un polinomio de
grado 2 para 1/x. f(x0) = 0.5, f(x1)= 0.4 y f(x2) = 0.25.
Los polinomios de Lagrange son:

L x
x 2.5 x 4 x 6.5 x 10
n,0 2 0.5 2 4
L x
x 2 x 4 4 x 24 x 32
n,1 2.5 2 2.5 4 3

L x
x 2 x 2.5 x 4.5 x 5
n, 2 4 2 4 2.5 3

P(x) = 0.5*((x6.5)x+10)+0.4*((4x+24)x32)/3+ 0.25*((x + 4.5)x+5)/3


P(x) = (0.05x 0.425)x + 1.15 = 0.05x2 0.425x + 1.15
f(3) = P(3) = 0.325
Aproximacin a 1/x con
interpolantes de Lagrange

P(x) = (0.05x 0.425)x + 1.15


f(3) = P(3) = 0.325
El error en la interpolacin
de Lagrange

El error en la interpolacin de Lagrange puede


calcularse con

f n 1 x
f x0 P x x x0 x x1 ... x xn
n 1!
Algoritmo en Matlab
function fi = Lagran_(x, f, xi)
fi=zeros(size(xi));
np1=length(f);
for i=1:np1
z=ones(size(xi));
for j=1:np1
if i~=j, z = z.*(xi - x(j))/(x(i)-x(j));end
end
fi=fi+z*f(i);
end
return
Calcula coeficientes de P2(x)

%Calcula el polinomio interpolante de Lagrange


de grado 2
function [a,b,c] =
Lagrange(x0,x1,x2,fx0,fx1,fx2)
t0 = (x0 - x1)*(x0 - x2);
t1 = (x1 - x0)*(x1 - x2);
t2 = (x2 - x0)*(x2 - x1);
a = fx0/t0 +fx1/t1 +fx2/t2;
b = -fx0*(x1 + x2)/t0 - fx1*(x0 + x2)/t1 -
fx2*(x0 + x1)/t2;
c = fx0*x1*x2/t0 + fx1*x0*x2/t1 + fx2*x0*x1/t2;
Comandos de Matlab
poly(r) toma un vector con las races de un polinomio y
genera el polinomio

poly([1 2 3]) = 1 -6 11 -6
roots(1 -6 11 -6) = 3 2 1

polifit(x,y,n) genera un polinomio interpolante para los


datos x, y de grado n, x y y deben tener n+1 datos

polyfit([1.1 2.3 3.9 5.1],[3.887 4.276 4.651 2.117],3) =


ans =
-0.20145 1.43852 -2.74771 5.43700
El polinomio es

-0.20145x^3 + 1.43852x^2 -2.74771x + 5.43700

You might also like