You are on page 1of 6

Jorge Carlos Alberto Franco Ibaez

Universidad tecnolgica de Bolvar

TALLER ANLISIS NUMRICO 2


Chapter 19: Numerics in General.
SET 19.3. Interpolation:
Lagrange interpolation,

Actividades:

1. A continuacin una funcin que calcula un vector C con los coeficientes del
polinomio de interpolacin de Lagrange y una matriz L cuyas filas son los
coeficientes de cada uno de los polinomios de Lagrange. La entrada son los nodos
(x, y). Escriba un comentario sobre lo que realiza cada lnea.

function [L, C]=f_lagrange(x,y)


n=length(x);
L=zeros(n);
for k=1:n;
v=1;
for j=1:n1;
if k~=j
v=conv(v,poly(x(j)))/(x(k)-x(j));
end
end
L(k,:)=v;
end
C=y*L;

2. Escriba un programa que realice interpolacin con polinomios de Lagrange en un


determinado punto usando la funcin anterior.

Entrada:
Parejas de datos (x, y)
Punto x0 donde se desea interpolar.

Salida
Una figura donde se muestren los puntos (x, y) y las grficas de cada uno de los
polinomios de Lagrange.
El valor encontrado de y0 para x0.
Una figura donde se muestren los puntos (x, y), una grfica del polinomio
interpolador y el punto (x0, y0) con asterisco.

Sugerencia: use la funcin polyval de Matlab para evaluar un polinomio dado sus
coeficientes.
Jorge Carlos Alberto Franco Ibaez

Universidad tecnolgica de Bolvar

3. Resolver los siguientes problemas de la sesin indicada usando el programa


escrito:
SET 19.3: Problema 3, 5, 7, 11.

SOLUCIN

1.
function [L, C] = f_lagrange_interp(x, y)

% x = vector de abscisas a interpolar

% y = vector de las ordenadas

% L = matriz que contiene los coeficientes de los polinomios de Lagrange en sus filas

% C = Vector con los coeficientes del polinomio interpolacin

n = length(x); % almacena el tamao del vector x

L = zeros(n); %matriz de ceros de tamao n x n

for k = 1: n %ciclo de iteracin y calculo de los valores

v = 1; %v en 1 para poder hacer la convolucin (como se explico en clase)

for j = 1:n %ciclo para operar el vector x pero no en la misma posicin

if k ~= j %Se verifica que las posiciones k y j no sean iguales, en caso tal

v = conv (v, polyval(x (j)))/(x(k)-x(j)); %se convoluciona y se obtienen los


coeficientes del polinomio de Lagrange

end %fin condicion

end %fin ciclo

L (k, :) = v; %para cada fila de la matriz de ceros se asigna el valor v calculado

end %fin ciclo

C = y * L %Se calcula el vector con los coeficientes del polinomio de interpolacin


Jorge Carlos Alberto Franco Ibaez

Universidad tecnolgica de Bolvar

2.

Cdigo
% Pareja de datos
x = [1, 2, 3];
y = [1.3, 2.3, 6.7];
%Punto de interpolacion
x0 = 2.1;
%Funcin dada
[L, C] = f_lagrange_interp(x,y);

%Grafica
figure

%Se muestran los puntos (x, y)


plot (x, y, 'bX')
hold on
pause
l = zeros(4)
l(1) = plot (x,L(1,1)*x.^2+L(2,1)*x+L(3,1), 'r')
l(2) = plot (x,L(1,2)*x.^2+L(2,2)*x+L(3,2), 'y')
l(3) = plot (x,L(1,3)*x.^2+L(2,3)*x+L(3,3), 'g')
l(4) = plot (x,C(1)*x.^2+C(2)*x+C(3), 'black')
pause

% Calculo de y0
y0 = C(1)*x0^2+C(2)*x0+C(3)
% se ubica(x0, y0) en la grficapara referencia.
plot (x0, y0, 'r*')
%legendas de las lineas dibujadas.
legend([l(1);l(2);l(3);l(4)],['Grfica de interpolacin 1';'Grfica de interpolacin 1';'Grfica de
interpolacin 1';'Grfica de interpolacin 1']);
title ('Interpolacin Polinomial de LaGrange')

Interpolacin Polinomial de LaGrange


20
Grfica de interpolacin 1
Grfica de interpolacin 1
15 Grfica de interpolacin 1
Grfica de interpolacin 1
10

-5

-10

-15
1 1.5 2 2.5 3
Jorge Carlos Alberto Franco Ibaez

Universidad tecnolgica de Bolvar

3. Problemas SET 19.3 : Interpolations

3.
%pareja de datos
x = [1.00 1.02 1.04]
y = [1.0000 0.9888 0.9784]
%aproximaciones
x0 = 1.01;
x1 = 1.03;
%funcion de lagrange
[L, C] = f_lagrange_interp(x,y);
%calculo ocn los valores obtenidos
y0 = C(1)*x0^2+C(2)*x0+C(3)
y1 = C(1)*x1^2+C(2)*x1+C(3)

Resultados
Para
x= 1.0000 1.0200 1.0400
y= 1.0000 0.9888 0.9784

Se tiene:
y0 = 0.9943
y1 = 0.9835

5.
%pareja de datos
x = [0 0.5];
y = exp(-x);
%exp2
x0 = 0.25;
%funcion
[L, C] = f_lagrange_interp(x,y);
y0 = C(1)*x0+C(2)
a = [0.5 1.0];
b = exp(-a);
%exp2
c = 0.75;
[Y, Z] = f_lagrange_interp(a,b);
y1 = Z(1)*c+Z(2)
h = [0 0.5 1.0];
i = exp(-h);
j = 0.25;
k = 0.75;
[M, N] = f_lagrange_interp(h,i);
y2 = N(1)*x0^2+N(2)*x0+N(3)
y3 = N(1)*c^2+N(2)*c+N(3)
linerror1 = abs(exp(-x0)-y0)
linerror2 = abs(exp(-c)-y1)
q1 = abs(exp(-x0)-y2)
q2 = abs(exp(-c)-y3)
Jorge Carlos Alberto Franco Ibaez

Universidad tecnolgica de Bolvar

Resultado
y0 = 0.80327
y1 = 0.48721
y2 = 0.78391
y3 = 0.46785
linerror1 = 0.024465
linerror2 = 0.014838
q1 = 0.0051123
q2 = 0.0045138

7.
x = [0 45 90];
y = sind(x);
z = [-22.5 25 67.5 112.5];
[L, C] = f_lagrange_interp(x,y);
w = C(1)*z.^2+C(2)*z+C(3)
eq1 = abs(sind(z(1))-(w(1)))
eq2 = abs(sind(z(2))-(w(2)))
eq3 = abs(sind(z(3))-(w(3)))
eq4 = abs(sind(z(4))-(w(4)))

Resultados
m = -0.50888 0.44397 0.90533 0.99112

eq1= 0.12620
eq2= 0.021356
eq3 = 0.018549
eq4= 0.067237

11.
x = [0 1 2 3];
y = [1 0.765198 0.223891 -0.260052];
z = [0.5 1.5 2.5];
[L, C] = f_lagrange_interp(x,y);
m = C(1)*z.^3+C(2)*z.^2+C(3)*z+C(4)
n = [0.938470 0.511828 -0.048384];
eq1= abs(n(1)-m(1))
eq2= abs(n(2)-m(2))
eq3= abs(n(3)-m(3))
figure
plot(x,y)
l = zeros(1,4)
l(1) = plot (x,L(1,1)*x.^3+L(2,1)*x.^2+L(3,1)*x+L(4,1),'r')
hold on
l(2) = plot (x,L(1,2)*x.^3+L(2,2)*x.^2+L(3,2)*x+L(4,2),'g')
hold on
l(3) = plot (x,L(1,3)*x.^3+L(2,3)*x.^2+L(3,3)*x+L(4,3),'y')
Jorge Carlos Alberto Franco Ibaez

Universidad tecnolgica de Bolvar

hold on
l(4) = plot (x,L(1,4)*x.^3+L(2,4)*x.^2+L(3,4)*x+L(4,4),'black')
pause
legend([l(1);l(2);l(3);l(4)],['linea 1';'linea 2';'linea 3';'linea 4']);

title ('Interpolacin Polinomial de LaGrange')

Resultado
m = 0.943654 0.510116 -0.047993

eq1= 0.0051839
eq2= 0.0017122
eq3= 3.9119e-04

30

20

10

-10

-20

-30
0 0.5 1 1.5 2 2.5 3

You might also like