clear all; clc; fprintf('Interpolacion con el Metodo del Polinomio de Lagrange\n\n'); n=input('grado del polinolio: '); for i1:n+1 x(1,i)=input('dame los valores de xi:'); end for i=1:n+1 xi(1,i)=input('dame los valores de f(xi):'); end x xi xint=input('Numero para el que desea 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'); plotx,xi) grid title('Polinomio de Lagrange');xlabel('x');yhabel('y')
videotutoriales de matlab, octave, numpy, python, POA, algoritmia, simulacion de procesos en ingenieria quimica, y algo de ingenieria quimica
jueves, 8 de marzo de 2012
Interpolacion con el Polinomio de Lagrange en matlab
Suscribirse a:
Enviar comentarios (Atom)
me da un error despues de colocar el grado
ResponderEliminarHace falta un = en el primer for ........"for i=1:n+1"
ResponderEliminarEs cierto, Gracias
Eliminarcomo escribo los valores de xi y yi, me refiero a la forma?
ResponderEliminarSI TENGO 4 PUNTOS CUAL ES EL GRADO DEL POLYNOMIO SUPONGO n = 3
ResponderEliminarSI ES 3 PORQUE ENTONCES TE PIDE 4 PUNTOS
EliminarX=[-1, 2, 5, 8]; Y=[2, 8, -3, 10]; UNO POR UNO
xint=input('Numero para el que desea interpolar x: '); 0
xint=0
resultado xi: 8.41975 PERFECTO!
clear all;
ResponderEliminarclc;
fprintf('Interpolacion con el Metodo del Polinomio de Lagrange\n\n');
n=input('grado del polinolio: ');
for i=1:n+1
x(1,i)=input('dame los valores de xi:');
end
for i=1:n+1
xi(1,i)=input('dame los valores de f(xi):');
end
x
xi
xint=input('Numero para el que desea 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
title('Polinomio de Lagrange');xlabel('x');ylabel('y')
EL PLOTEO ES INNECESARIO YA QUE SOLO PLOTEA LOS PUNTOS INICIALES
ResponderEliminarY NO EL POLINOMIO INTERPOLADOR DE LAGRANGE. PERO PODEIS HACERLO EN DESMOS FACILMENTE.
AQUI TENEIS UNA MAS EFICIENTE FUNCION:
ResponderEliminar% LAGRANGE INTERPOLATOR POLYNOMIAL
% X=[-1, 2, 5, 8]; Y=[2, 8, -3, 10];
% PX(2, [-1, 2, 5, 8], [2, 8, -3, 10])
% OCTAVE PX.M
% http://jhhr-signalsystems.blogspot.pe/
function P=PX(A, X, Y)
N1=(A-X(2))*(A-X(3))*(A-X(4));D1=(X(1)-X(2))*(X(1)-X(3))*(X(1)-X(4));
N2=(A-X(1))*(A-X(3))*(A-X(4));D2=(X(2)-X(1))*(X(2)-X(3))*(X(2)-X(4));
N3=(A-X(1))*(A-X(2))*(A-X(4));D3=(X(3)-X(1))*(X(3)-X(2))*(X(3)-X(4));
N4=(A-X(1))*(A-X(2))*(A-X(3));D4=(X(4)-X(1))*(X(4)-X(2))*(X(4)-X(3));
L=[N1/D1 N2/D2 N3/D3 N4/D4];
P= Y(1)*L(1) + Y(2)* L(2) + Y(3)* L(3) + Y(4)* L(4)
end
EXAMPLE:
Eliminar% PX(0, [-1, 2, 5, 8], [2, 8, -3, 10])
% P = 8.4198 ans = 8.4198