Está en la página 1de 12

Interpolacin de Lagrange

Interpolar: estimar el valor desconocido de una funcin en


un punto, tomando un valor aproximado de la funcin en
puntos cercanos al dado.
Interpolacin lineal: se utiliza un segmento que pasa por
dos puntos conocidos (xo,yo) (x1,y1). La pendiente que pasa
por los dos puntos es m=(y1-yo)/(x1-xo). La recta que pasa
por los dos puntos es y y ( y y )
x xo
x1 x0
0 1 0

Si reemplazamos x por xo y x1 P(xo)=yo P(x1)=y1


Lagrange descubri que este polinomio se puede escribir
de la siguiente manera:
x x1 x x0
y y0 y1
x 0 x1 x1 x 0

Llamaremos
x x1 x x0
L1, 0 ( x) L1,1 ( x)
xo x1 x1 x0
L1,0(x0)=1 L1,1(x1)=1 L1,0(x1)=0 L1,1(xo)=0

Usando esta notacin, podemos escribir:

1
P1 yk L1, k ( x )
K 0
Ejemplo: Consideremos y=f(x)=cos(x) en [0.0,1.2] vamos a usar x0=0 x1=1.2
para interpolar linealmente
>> x=[0.0:0.1:1.2]'
>> y=cos(x)
>> x0=0.0
>> x1=1.2
>> y0=cos(x0)
>> y1=cos(x1)
>> z=y0*(x-x1)/(x0-x1)+y1*(x-x0)/(x1-x0)
>> plot(x,y,x,z)
La forma de generalizar la frmula de Lagrange para construir
un polinomio PN(x) que tenga grado menor o igual que N y
pase por los N+1 puntos dados (xo,yo)(x1,y1)..(xn,yn) es la
frmula
N
PN ( x ) yk LN ,k ( x )
k 0

( x x0 )....( x xk 1 )( x xk 1 ).....( x xN )
LN ,k ( x)
( xk x0 )....( x xk 1 )( x xk 1 )....( xk xN )
N

(x x ) j
LN ,k ( x) J 0
N jk
(x
J 0
k
xj )
clear
fprintf('Interpolacin de Lagrange\n')
n=input('Ingrese el nmero de puntos : ');
for i = 1:n
fprintf('x%d = ',i)
x(i)= input(' '); % Ingreso por pantalla de los valores x(i)
fprintf('f(x(%d)) = ',i)
f(i)= input(' '); % ingreso por pantalla de los valores de
% la funcin evaluada en los x(i)
end
a=input('Ingrese el valor de x donde se quiere evaluar el polinomio interpolante : ');
for k=1:n
for i=1:n
if k==i
I(i)=1;
else
I(i)=(a-x(i))/(x(k)-x(i));
end
end
fI(k)=f(k)*prod(I); % La funcin prod calcula el producto de los elementos
% del vector I
end
fa=sum(fI); % La funcin sum calcula la suma de los elementos
% del vector fI
% La sintaxis de presentacin indica que dentro del
% argumento de la funcin se escribir un nmero punto flotante
% por lo menos 1 carcter y dos dgitos decimales %1.2f
% El valor de la funcin se escribir en una amplitud de por lo menos
% tres caracteres y seis dgitos decimales %3.6f

Polinomio interpolador de Newton


(1)
P1 ( x ) a0 a1 ( x x0 )
P2 ( x ) a0 a1 ( x x0 ) a2 ( x x0 )( x x1 )
.
.
PN ( x ) a0 a1 ( x x0 ) a2 ( x x0 )( x x1 )
a N ( x x0 )( x x1 ).....( x x N 1 )
f ( x0 ) P1 ( x0 ) a0 a1 ( x0 x0 ) a0
f ( x1 ) P1 ( x1 ) a0 a1 ( x1 x0 ) f ( x0 ) a1 ( x1 x0 )
f ( x1 ) f ( x0 )
a1
x1 x0
DIFERENCIAS DIVIDIDAS
Definicin: las diferencias divididas de una funcin f se definen como:

f xk f ( xk )
f [ xk ] f [ xk 1 ]
f [ xk 1 , xk ]
xk xk 1
f [ xk 1, xk ] f [ xk 2 , xk 1 ]
f [ xk 2 , xk 1 , xk ]
xk xk 2
f [ xk 2 , xk 1 , xk ] f [ xk 3 , xk 2 , xk 1 ]
f [ xk 3 , xk 2 , xk 1 , xk ]
xk xk 3
Ejemplo:
Ejemplo construir la tabla de dif.divididas. Para
f(x)=cos(x).

xk f [ xk ]
0.0 1.0000000

1.0 0.5403023 -0.4596977


2.0 -0.4161468 -0.9564491 -0.2483757

3.0 -0.9899925 -0.5738457 0.1913017 0.1465592

4.0 -0.6536436 0.3363499 0.4550973 0.0879318 -0.0146568


P1(x)=1 -0.4596977(x-0)
P2(x)=1 -0.4596977(x-0) -0.2483757(x)(x-1)
P3(x)= 1 -0.4596977(x-0) -0.2483757(x)(x-1)+0.1465592x(x-1)(x-2)
P4(x)= 1 -0.4596977(x-0) -0.2483757(x)(x-1)+0.1465592x(x-1)(x-2) -0.0146568
x(x-1)(x-2)(x-3)
Ejemplo:

X=
0 0.1000 0.2000 0.3000 0.4000 0.5000
>> Y=cos(X)
Y=
1.0000 0.9950 0.9801 0.9553 0.9211 0.8776
>> newpoly(X,Y)
>> [C,D]=newpoly(X,Y)
C=
-0.0021 0.0428 -0.0003 -0.5000 -0.0000 1.0000
D=

1.0000 0 0 0 0 0
0.9950 -0.0500 0 0 0 0
0.9801 -0.1494 -0.4971 0 0 0
0.9553 -0.2473 -0.4896 0.0249 0 0
0.9211 -0.3428 -0.4773 0.0412 0.0408 0
0.8776 -0.4348 -0.4601 0.0571 0.0397 -0.0021
>> polyval(C,X)
ans =
1.0000 0.9950 0.9801 0.9553 0.9211 0.8776

También podría gustarte