9 Lagrange Interpolation Method
9 Lagrange Interpolation Method
In many real world applications of science and engineering, it is required to find the value of dependent variable
corresponding to some value of independent variable by analysing data which are obtained from some observation.
For example, suppose we have following sets of data tabulated for x (independent variable) and y (dependent
variable) :
----------------------------------------
| x: | x0 | x1 | x2 | x3 | ... | xn |
-----------------------------------
| y: | y0 | y1 | y2 | y3 | ... | yn |
----------------------------------------
Then the method of finding the value of y = f(x) corresponding to any value of x=xi within x0 and xn is called
interpolation. Thus interpolation is the process of finding the value of function for any intermediate value of the
independent variable. If we need to estimate the value of function f(x) outside the tabular values, then the process is
called extrapolation. However, in general, extrapolation is also included in interpolation.
There are different methods for interpolation for example: Newton’s Forward Interpolation, Newton’s Backward
Interpolation, Newton’s General Interpolation with divided difference, Lagrange Interpolation etc. In this article we
are going to develop an algorithm for Lagrange Interpolation.
+ .... +
is known as Lagrange Interpolation Formula for unequal intervals and is very simple to implement on computer.
Algorithm
1. Start
5. Initialize: yp = 0
6. For i = 1 to n
Set p = 1
For j =1 to n
If i ≠ j then
Calculate p = p * (xp - Xj)/(Xi - Xj)
End If
Next j
Calculate yp = yp + p * Yi
Next i
7. Stop
Program:
This program implements Lagrange Interpolation Formula in C Programming Language.
In this C program, x and y are two array for storing x data and y data respectively. xp is interpolation point given by
user and output of Lagrange interpolation method is obtained in yp.
#include<stdio.h>
#include<conio.h>
void main()
{
float x[100], y[100], xp, yp=0, p;
int i,j,n;
clrscr();
/* Input Section */
printf("Enter number of data: ");
scanf("%d", &n);
printf("Enter data:\n");
for(i=1;i<=n;i++)
{
printf("x[%d] = ", i);
scanf("%f", &x[i]);
printf("y[%d] = ", i);
scanf("%f", &y[i]);
}
printf("Enter interpolation point: ");
scanf("%f", &xp);
/* Implementing Lagrange Interpolation */
for(i=1;i<=n;i++)
{
p=1;
for(j=1;j<=n;j++)
{
if(i!=j)
{
p = p* (xp - x[j])/(x[i] - x[j]);
}
}
yp = yp + p * y[i];
}
printf("Interpolated value at %.3f is %.3f.", xp, yp);
getch();
}
Output:
Enter number of data: 5
Enter data:
x[1] = 5
y[1] = 150
x[2] = 7
y[2] = 392
x[3] = 11
y[3] = 1452
x[4] = 13
y[4] = 2366
x[5] = 17
y[5] = 5202
Enter interpolation point: 9
Interpolated value at 9.000 is 810.000.