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
I’m a physicist specializing in computational material science with a PhD in Physics from Friedrich-Schiller University Jena, Germany. I write efficient codes for simulating light-matter interactions at atomic scales. I like to develop Physics, DFT, and Machine Learning related apps and software from time to time. Can code in most of the popular languages. I like to share my knowledge in Physics and applications using this Blog and a YouTube channel.



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?