Lagrange interpolation algorithm in Matlab :
function [yy]=interpola_lagrange(x,y,xx)
% Syntaxis: [yy]=interpola_lagrange(x,y,xx)
% ----------------------------------------------------------------------
% Devuelve el valor interpolado yy en un determinado punto xx solicitado
% mediante el metodo de interpolacion de Lagrange.
%
% Entrada:
% x --> Vector que contiene las abcisas de los nodos de interpolacion
% y --> Vector que contiene las ordenadas de los nodos de interpolacion
% xx --> Abcisa del nodo que se desea incorporar
%
%
% Salida:
% yy --> Valor interpolado para el nodo con abcisa xx
%
%
% Ejemplo:
%
% x=[1; 2; 4]; y=[2; 3; 1]; xx=2.5;
% [yy]=interpola_lagrange(x,y,xx)
%
% yy =
% 3
%
%
% Ver tambien: interpola_newton
%
% ----------------------------------------------------------------------
%
% Elaborado por:
%
% Msc. Alexeis Comanioni Guerra
% Lic. Vianka Orovio Cobo
%
% Revision: 1.0
% Fecha: 30/09/2007
%% Validación de las entradas
if nargin<3
error('Verifique los datos de entrada.');
end
if min(size(x))>1 || min(size(y))>1
error('Tanto x como y deben ser vectores.');
else
x=x(:); y=y(:);
n=length(x);
end
if sum(size(xx))~=2
error('La abcisa del nodo de entrada debe ser un escalar.');
end
%% Creación de los polinomios de Lagrange
U=ones(n-1,1);
for i=1:n
x_temp=x;
x_temp(find(x_temp==x_temp(i)))=[];
L(i)=prod( xx*U-x_temp ) / prod( x(i)*U-x_temp );
end
%% Obtencion del valor interpolado
yy=dot(y,L);
|
No comments:
Post a Comment