Given a set of data-points , the Lagrange Interpolating Polynomial is a polynomial of degree , such that it passes through all the given data-points.

It is given as,

where are the data-points.

and,

### CODE:

/********************************** ******LAGRANGE INTERPOLATION******* **********************************/ #include<stdio.h> /*Function to evaluate Li(x)*/ double Li(int i, int n, double x[n+1], double X){ int j; double prod=1; for(j=0;j<=n;j++){ if(j!=i) prod=prod*(X-x[j])/(x[i]-x[j]); } return prod; } /*Function to evaluate Pn(x) where Pn is the Lagrange interpolating polynomial of degree n*/ double Pn(int n, double x[n+1], double y[n+1], double X){ double sum=0; int i; for(i=0;i<=n;i++){ sum=sum+Li(i,n,x,X)*y[i]; } return sum; } main(){ int i,n; //n is the degree printf("Enter the number of data-points:\n"); scanf("%d",&n); //no. of data-points is n+1 n=n-1; //Arrays to store the (n+1) x and y data-points of size n+1 double x[n+1]; double y[n+1]; printf("Enter the x data-points:\n"); for(i=0;i<n+1;i++){ scanf("%lf",&x[i]); } printf("Enter the y data-points:\n"); for(i=0;i<n+1;i++){ scanf("%lf",&y[i]); } double X; //value of x for which interpolated value is required printf("Enter the value of x for which you want the interpolated value of y(x):\n"); scanf("%lf",&X); printf("The interpolated value is %lf",Pn(n,x,y,X)); }

### OUTPUT:

### YouTube Tutorial:

### Android App:

https://play.google.com/store/apps/details?id=com.bragitoff.lagrangeinterpolatingpolynomial

### References and Resources:

http://mathworld.wolfram.com/LagrangeInterpolatingPolynomial.html

https://en.wikipedia.org/wiki/Lagrange_polynomial

http://wmueller.com/precalculus/families/lagrange.html

Hello just check the function LI(……) , as per your code i was getting an error while using double x[n+1] , i tried and changed each parameter x[n+1] with x[] and same with y[n+1] with y[] , just check the below code 🙂

8:33: error: use of parameter outside function body before ‘]’ token

8:34: error: expected ‘)’ before ‘,’ token

8:35: error: expected unqualified-id before ‘double’

solution:

/**********************************

******LAGRANGE INTERPOLATION*******

**********************************/

#include

/*Function to evaluate Li(x)*/

double Li(int i,int n,double x[],double X){

int j;

double prod=1;

for(j=0;j

Thank you very much for your valuable correction to the above program. I can successfully run a program as per your correction suggestion.

how can i find a weight of interval [0, 1] and n is 5 and h = 1/n?