MATLAB Answers

## lagrange interpolation, .m

Asked by buxZED

### buxZED (view profile)

on 16 Mar 2011
Accepted Answer by Matt Tearle

### Matt Tearle (view profile)

can anyone explain me how to use this program

http://www.mathworks.com/matlabcentral/fileexchange/899-lagrange-polynomial-interpolation

```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
```

## Products

No products are associated with this question.

## 2 Answers

### Matt Tearle (view profile)

Answer by Matt Tearle

### Matt Tearle (view profile)

on 16 Mar 2011
Accepted answer

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.

buxZED

### buxZED (view profile)

on 17 Mar 2011

still dont get it
given the points x0 , x1 , x2 , x3 , x4
and the values f(x0 ), f(x1 ), f(x2 ), f(x3 ), f(x4 )

how can i get an 4th order accurat function f in position x
just point me in the right derection

Jan Simon

### Jan Simon (view profile)

on 17 Mar 2011

I think, Matt Tearle's example does point in the right direction already. But I can repeat it:
y = lagrange(x, [x0,x1,x2,x3,x4], [f(x0),f(x1),f(x2),f(x3),f(x4)]);
This is exactly found in the help section of the function.

Matt Tearle

### Matt Tearle (view profile)

on 17 Mar 2011

Right, what Jan said. In my example,x and y are vectors of the points x0, x1, ..., x4 and f(x0), ..., f(x4). The new point you're calling x is what I called xx. I used a vector of points, but it could be a single value.

### Matt Fig (view profile)

Answer by Matt Fig

### Matt Fig (view profile)

on 16 Mar 2011

This is really a question for the author of the program. I believe it is also bad etiquette to post somebody's code like that without permission.

Did you try to contact the author?

Matt Tearle

### Matt Tearle (view profile)

on 16 Mar 2011

It's from File Exchange, so I don't seem any great harm in posting it.

Matt Fig

### Matt Fig (view profile)

on 16 Mar 2011

Ah, but I wasn't talking about harm, just polite behavior. The author should have been contacted first, that's all.

Matt Tearle

### Matt Tearle (view profile)

on 16 Mar 2011

Fair call. I guess it does open the door for people to bash the author's code in a separate location, which would be uncool.

#### Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today