Está en la página 1de 6

Laboratorio 2 Mtodos Numricos Michael Andrs Puentes

Figura:

Mtodo de Lagrange

Tabla 1 Parte de arriba

i xi yi
0 0 0
1 5 3.1
2 9 4.5
3 15 8
4 18 9
5 22 8.3
6 25 6.2
7 29 2.8
8 35 0
Tabla 2 Parte de abajo

i xi yi
0 0 0
1 5 -7.8
2 9 -9.2
3 15 -11.4
4 18 -9.3
5 22 -6.5
6 25 -6.1
7 29 -5.9
8 35 0

Cdigo Matlab:
clear;
clc;
fprintf('Interpolacion con el Metodo del Polinomio de Lagrange \n\n');
%Parte de arriba de la grafica
n=input('grado del polinomio: ');

for i=1 : n+1


x(1,i)=input('valores xi: ')
end
for i=1 : n+1
xi(1,i)=input('valores f(xi): ');
end
x
xi
xint=input('Numero que desa interpolar x: ');

fxint=0;
i=1;
while i<=n+1
L=1;
J=0;
while J<=n
if i~=J+1
L=L*(xint-x(1,J+1))/(x(1,i)-x(1,J+1));
end
J=J+1;
end
fxint=fxint+L*xi(1,i);
i=i+1;
end

fprintf('\nresultado xi: %d',fxint');


plot(x,xi)
grid
xlabel('x');ylabel('y')
hold on
%Parte de abajo
fprintf('Interpolacion con el Metodo del Polinomio de Lagrange \n\n');
n=input('grado del polinomio: ');

for i=1 : n+1


x(1,i)=input('valores xi: ')
end
for i=1 : n+1
xi(1,i)=input('valores f(xi): ');
end
x
xi
xint=input('Numero que desa interpolar x: ');

fxint=0;
i=1;
while i<=n+1
L=1;
J=0;
while J<=n
if i~=J+1
L=L*(xint-x(1,J+1))/(x(1,i)-x(1,J+1));
end
J=J+1;
end
fxint=fxint+L*xi(1,i);
i=i+1;
end
fprintf('\nresultado xi: %d',fxint');
plot(x,xi)
grid
xlabel('x');ylabel('y')

Grafica Resultante:
Mtodo de diferencias divididas:

Tabla 1 Parte de arriba

i xi yi
0 0 0
1 4.37 2.8
2 8.74 4.5
3 13.11 6.4
4 17.48 8.7
5 21.85 8.8
6 26.22 7.6
7 30.59 4
8 35 0

Tabla 2 Parte de abajo

i xi yi
0 0 0
1 4.37 -7.1
2 8.74 -9
3 13.11 -11.4
4 17.48 -10
5 21.85 -6.6
6 26.22 -6
7 30.59 -5.1
8 35 0

%Interpolacion de newton
clear;clc;
disp('metodos numericos');
disp('interpolacion de diferencias divididas');
n=input('ingrese el grado del polinomio, n=');
fprintf('Se necesitan %.0f puntos\n',n+1);
disp('ingrese los puntos');
for i=1:n+1
fprintf('x%.0f=',i-1);
X(i)=input(' ');
fprintf('y%.0f=',i-1);
Y(i)=input(' ');
end
DD=zeros(n+1);
DD(:,1)=Y;
for k=2:n+1
for J=k:n+1
DD(J,k)=[DD(J,k-1)-DD(J-1,k-1)]/[X(J)-X(J-k+1)];
end
end
disp('La matriz de diferencias divididas es:');
disp(DD);
disp('El polinomio de newton es');
syms x;
polnew=DD(1,1);
P=1;
for i=1:n
P=P*(x-X(i));
polnew=polnew+P*DD(i+1,i+1);
end
polnew=expand(polnew);
pretty(polnew);
x=input('ingrese el valor de x a interpolar,x=');
vi=eval(polnew);
fprintf('el valor interpolado es %.2f\n',vi);
hold on;
ezplot(polnew,[X(1) X(n+1)]);
plot(x,vi,'r+');
hold on;
ezplot(polnew,[X(1) X(n+1)]);
plot(x,vi,'r+');
hold on
n=input('ingrese el grado del polinomio, n=');
fprintf('Se necesitan %.0f puntos\n',n+1);
disp('ingrese los puntos');
for i=1:n+1
fprintf('x%.0f=',i-1);
X(i)=input(' ');
fprintf('y%.0f=',i-1);
Y(i)=input(' ');
end
DD=zeros(n+1);
DD(:,1)=Y;
for k=2:n+1
for J=k:n+1
DD(J,k)=[DD(J,k-1)-DD(J-1,k-1)]/[X(J)-X(J-k+1)];
end
end
disp('La matriz de diferencias divididas es:');
disp(DD);
disp('El polinomio de newton es');
syms x;
polnew=DD(1,1);
P=1;
for i=1:n
P=P*(x-X(i));
polnew=polnew+P*DD(i+1,i+1);
end
polnew=expand(polnew);
pretty(polnew);
x=input('ingrese el valor de x a interpolar,x=');
vi=eval(polnew);
fprintf('el valor interpolado es %.2f\n',vi);
hold on;
ezplot(polnew,[X(1) X(n+1)]);
plot(x,vi,'r+');
Grfica Resultante:

También podría gustarte