Пример. По заданным точкам: xi=-1 0 1; yi=1 0 1. Определить интерполяционный многочлен L(x).
L(x)=x2
Программа. Интерполяция. Полином Лагранжа
function DATA
global x y xz;
x=[-2; -1; 0; 1; 2];
y=[2;0;0;2;6];
xz=[-5:5];
end
function [ yr ] = fun_Interpol_Lagrange(x,y,xz)
nz=length(xz);
n=length(x);
for i=1:nz
yr(i)=0;
for k=1:n
pr=1;
for j=1:n
if j~=k
pr=pr*(xz(i)-x(j))/(x(k)-x(j));
end %if
end % for j
yr(i)=yr(i)+pr*y(k);
end %for k
end %for i
end % function
function GLAV_Interpol_Lagrange
global x y xz yr;
DATA;
[ yr ] = fun_Interpol_Lagrange(x,y,xz);
REPORT;
end
function REPORT
global x y xz yr;
disp('Interpol Lagrange');
disp(' ');
disp(' i x y');
disp(' _____________________________')
i=0;
for i=1:length(x)
xx=x(i);
yy=y(i);
disp(sprintf('%10.1f\t%10.5f\t %10.5f',i,xx,yy));
end %for
disp(' ');
disp(' i xz yz');
disp(' _____________________________')
i=0;
for i=1:length(xz)
xx=xz(i);
yy=yr(i);
disp(sprintf('%10.1f\t%10.5f\t %10.5f',i,xx,yy));
end %for
plot(x,y,'r*',xz,yr,'k-');
grid on;
xlabel('x *, xz --');
ylabel('y *, yr --');
title('Interpol Lagrange');
end