can anyone explain me how to use this program
function y=lagrange(x,pointx,pointy) % %LAGRANGE approx a point-defined function using the Lagrange polynomial interpolation % % LAGRANGE(X,POINTX,POINTY) approx the function definited by the points: % P1=(POINTX(1),POINTY(1)), P2=(POINTX(2),POINTY(2)), ..., PN(POINTX(N),POINTY(N)) % and calculate it in each elements of X % % If POINTX and POINTY have different number of elements the function will return the NaN value % % function wrote by: Calzino % 7-oct-2001 % n=size(pointx,2); L=ones(n,size(x,2)); if (size(pointx,2)~=size(pointy,2)) fprintf(1,'\nERROR!\nPOINTX and POINTY must have the same number of elements\n'); y=NaN; else for i=1:n for j=1:n if (i~=j) L(i,:)=L(i,:).*(x-pointx(j))/(pointx(i)-pointx(j)); end end end y=0; for i=1:n y=y+pointy(i)*L(i,:); end end
No products are associated with this question.
pointx and pointy are two vectors of data values, x is a vector of points where you want to interpolate. For example:
x = 0:10; y = x.^2; xx = linspace(0,10); yy = lagrange(xx,x,y); plot(x,y,'o',xx,yy,'.')
As an aside, with no offense intended to Calzino, there are other options available for interpolation. Firstly, of course, interp1 is a standard MATLAB function, with options for linear, cubic spline, and PCHIP interpolation. Cleve Moler (aka The Guy Who Wrote MATLAB) also has a Lagrange interpolation function available for download.