I am trying to write a script that graphs the Lagrange interpolation of a given set of points.

The following is the code, which logically seems to be correct, but it keeps throwing an error I do not understand and I am unsure how to fix it as I am unfamiliar with MATLAB's symbolic computation capabilities and syntax.

Code:

syms x

xanchor=input('x values (enter in vector form): '); %x values of interpolating points

yanchor=input('y values (enter in vector form): '); %y values of interpolating points

N=length(xanchor);

P=ones(1,N);

for i=1:N

for j=1:N

if i~=j

P(i)=P(i)*(x-xanchor(j))/(xanchor(i)-xanchor(j));

end

end

end

f=0;

for i=i:N

f=f+yanchor(i)*P(i);

end

x1=min(xanchor);

x2=max(xanchor);

x=x1:.1:x2;

plot(x,f)

hold on

scatter(xanchor, yanchor)

hold off

The error I am getting is:

??? The following error occurred converting from sym to double:

Error using ==> mupadmex

Error in MuPAD command: DOUBLE cannot convert the input expression into

a double array.

If the input expression contains a symbolic variable, use the VPA

function instead.

Error in ==> boom at 9

P(i)=P(i)*(x-xanchor(j))/(xanchor(i)-xanchor(j));

Any help is greatly appreciated.