MATLAB: How to properly plot Lagrange Interpolation

interpolationlagrangeMATLAB

x=[-2 1 3 5 ];
y=[0 -1.8 -1.2 -1.6];
sum=0;
for i=1:length(x)
p=1;
for j=1:length(x)
if j~=i
c = poly(x(j))/(x(i)-x(j));
p = conv(p,c);
end
end
term = p*y(i);
sum= sum + term;
end
disp(sum);
xx = linspace(min(sum), max(sum), 100); % Bunch of new samples for a smoother plot
yy = sum(1)*xx.^3 + sum(2)*xx.^2 + sum(3)*xx + sum(4);
plot(x, y, '-s')
hold on
plot(xx,yy,'-r')
%plot(sum,'-o')
xlabel('x'), ylabel('y'), title('Lagrange Polynomial Fit ')
legend('Data Collection', 'Lagrange Polynomial Fit', 'Location', 'northeast')

Best Answer

Hi Daniel,
Update the variable xx with the limits of x rather than sum, and you would see a clear plot. Something like this
xx = linspace(-2, 5, 1000); % Bunch of new samples for a smoother plot
% -2 and 5 are minimum and maximum values of x
Hope this helps.
Regards,
Sriram