Polynomial Interpolation is a method that used in estimating the values between the two data points,to estimate the values ,the data should be available on both sides of the data or at a few specific points .An estimation data between the gap can be made by using the interpolation 

There are some methods for finding the Interpolation mentioned below

Lagrange's Method

Polynomial is the simplest form of an interpolant. we can construct an unique polynomial of degree n that passes through (n+1) distinct data points.

P_n(x) =\sum_{i=0}^{n} y_i l_i(x)

here n in  P_n(x)   denotes the degree of the polynomial and

l_i(x) =\frac{x-x_0}{x_i-x_0} \frac{x-x_1}{x_i-x_1}.... \frac{x-x_i-1}{x_i-x_i-1}.\frac{x-x_i+1}{x_i-x_i+1} ....\frac{x-x_n}{x_i-x_n}  \newline \newline  l_i(x) = \prod_{j=0 , j \neq i}^{n} \frac {x-x_i}{x_i-x_j} ,      i =0,1,2,3....n

here  l_i (x)     for       i = 0,1,2....n are called cardinal functions.

now let us consider an example 

let n=1 then 

 P_1(x)=y_0 l_0 + y_1 l_1    is the interpolant for the straight line

where 

 l_0 (x) = \frac{x-x_1}{x_0-x_1}    and     l_1(x)= \frac{x-x_0}{x_1-x_0}

now let us consider n=2 ,then the equation becomes 

 P_2(x) = y_0 l_0(x) +y_ 1 l_1(x) +y_2 l_2(x) is the interpolant for the parabola (polynomial of degree 2)

here 

 l_0(x) = \frac{(x-x_1)(x-x_2)}{x_0-x_1)(x_0-x_2)} \newline ,

 l_1(x) = \frac{(x-x_0)(x-x_2)}{x_1-x_0)(x_1-x_2)}  ,

 l_0(x) = \frac{(x-x_0)(x-x_1)}{x_2-x_0)(x_2-x_1)} ,

Cardinal fucntions are polynomials of degree n and have the property

 l_i (x_i)= \Bigg\{ 0 \  if \  i \neq j  \hspace{0.5cm} and \hspace{0.5cm} 1 \  if \ \ i =j \Bigg\} =\delta_ij ,

here the  \delta_ij is known as kronecker delta

Now to verify that the interpolating polynomial passes through the given data points ,we will substitue   x = x_j in   p_n(x) = \sum_{i=0}^{n} y_i l_i(x) , and use  l_i (x_i)= \Bigg\{ 0 \  if \  i \neq j  \hspace{0.5cm} and \hspace{0.5cm} 1 \  if \ \ i =j \Bigg\} =\delta_ij

then we get ,

 P_n(x_j) = \sum_{i=0}^{n} y_i l_i (x_j) = \sum_{i=0}^{n} y_i \delta_ij = y_j

Example : 1

find  y(10) from the following data set given below

In the above given data set the intervals are unequal .By using the lagrange’s interpolation  we have 

 x_0 =5 \ x_1=7 \ x_2=9 \ x_3=12 \\ y_0 = 2 \ y_1=5 \ y_2=6 \ y_3=9 ,

 y = f(x) =\Bigg\{ \frac{(x-x_1) (x-x_2) (x-x_3) }{(x_0-x_1)(x_0-x_2)(x_0-x_3)} * y_0 + \frac{(x-x_0)(x-x_2)(x-x_3)}{(x_1-x_0)(x_1-x_2)(x_1-x_3)} * y_1  \\ \hspace{1cm} + \frac{(x-x_0)(x-x_1)(x-x_3)}{(x_2-x_0)(x-2-x_1)(x_2-x-3)}*y_2 + \frac{(x-x_0)(x-x_1)(x-x_2)}{(x_3-x_0)(x_3-x_1)(x_3-x_2)} * y_3 \Bigg\},

 

 f(x) = 2\frac{(x-7) \cdot (x-9) \cdot (x-12)}{(5-7) \cdot (5-9) \cdot (5-12)}+5\frac{(x-5) \cdot (x-9) \cdot (x-12)}{(7-5) \cdot (7-9) \cdot (7-12)}+6\frac{(x-5) \cdot (x-7) \cdot (x-12)}{(9-5) \cdot (9-7) \cdot (9-12)}+9\frac{(x-5) \cdot (x-7) \cdot (x-9)}{(12-5) \cdot (12-7) \cdot (12-9)}
 f(x) = 2\frac{(x-7) \cdot (x-9) \cdot (x-12)}{(-2) \cdot (-4) \cdot (-7)}+5\frac{(x-5) \cdot (x-9) \cdot (x-12)}{2 \cdot (-2) \cdot (-5)}+6\frac{(x-5) \cdot (x-7) \cdot (x-12)}{4 \cdot 2 \cdot (-3)}+9\frac{(x-5) \cdot (x-7) \cdot (x-9)}{7 \cdot 5 \cdot 3}
 f(x) = 2\frac{(x^2-16x+63) \cdot (x-12)}{8 \cdot (-7)}+5\frac{(x^2-14x+45) \cdot (x-12)}{(-4) \cdot (-5)}+6\frac{(x^2-12x+35) \cdot (x-12)}{8 \cdot (-3)}+9\frac{(x^2-12x+35) \cdot (x-9)}{35 \cdot 3}
 f(x) = 2\frac{(x^3-28x^2+255x-756)}{(-56)}+5\frac{(x^3-26x^2+213x-540)}{20}+6\frac{(x^3-24x^2+179x-420)}{(-24)}+9\frac{(x^3-21x^2+143x-315)}{105}
 f(x) = -\frac{1}{28}(x^3-28x^2+255x-756)+\frac{1}{4}(x^3-26x^2+213x-540)-\frac{1}{4}(x^3-24x^2+179x-420)+\frac{3}{35}(x^3-21x^2+143x-315)
 f(x) = (-\frac{1}{28}x^3+x^2-\frac{255}{28}x+27)+(\frac{1}{4}x^3-\frac{13}{2}x^2+\frac{213}{4}x-135)+(-\frac{1}{4}x^3+6x^2-\frac{179}{4}x+105)+(\frac{3}{35}x^3-\frac{9}{5}x^2+\frac{429}{35}x-27)
 f(x) = \frac{1}{20}x^3-\frac{13}{10}x^2+\frac{233}{20}x-30

Now, we need to find the value of   y(10) as f(10) =y(10)  ,so put  x = 10  in the above equation,

on calculating  f(10) =0 ,we get \\ f(10) = \frac{13}{2} =6.5

Now lets try to solve the problem  by using s2

				
					// this is the java code 
OrderedPairs data = new SortedOrderedPairs(
new double[]{5,7,9,12},
new double[]{2,5,6,9}
);
LinearInterpolation li = new LinearInterpolation();
UnivariateRealFunction f = li.fit(data);
System.out.println(f.evaluate(10)); // f(2) = 6.5
				
			
				
					// converted kotlin coee 
%use s2
var data01 = SortedOrderedPairs (doubleArrayOf(5,7,9,12),doubleArrayOf (2,5,6,9))
var li : LinearInterpolation = LinearInterpolation()
var f1: UnivariateRealFunction = li.fit(data01)
println(f1.evaluate(10))
				
			
				
					%use s2
//here let x be the given given value to find the interpolant 
var x : Double = 10.0

//defining the variables for the  given data
var x_0 : Double = 5.0
var y_0 : Double = 2.0
var l_0 : Double         //here l_0 be the l(0) as we discuused in the above 

var x_1 : Double = 7.0
var y_1 : Double = 5.0
var l_1 : Double             //here l_0 be the l(1)

var x_2 : Double = 9.0
var y_2 : Double = 6.0
var l_2 : Double              //here l_0 be the l(2)

var x_3 : Double = 12.0
var y_3 : Double = 9.0
var l_3 : Double              //here l_0 be the l(3)
//assigning the l(x) values to the variables
l_0= (((x-x_1)*(x-x_2)*(x-x_3))/((x_0-x_1)*(x_0-x_2)*(x_0-x_3)))
l_1= (((x-x_0)*(x-x_2)*(x-x_3))/((x_1-x_0)*(x_1-x_2)*(x_1-x_3)))
l_2= (((x-x_0)*(x-x_1)*(x-x_3))/((x_2-x_0)*(x_2-x_1)*(x_2-x_3)))
l_3= (((x-x_0)*(x-x_1)*(x-x_2))/((x_3-x_0)*(x_3-x_1)*(x_3-x_2)))

var f : Double
f = l_0*y_0 + l_1*y_1 + l_2*y_2 +l_3*y_3 

println("The value of y(10) = $f")
				
			

Output : The value of y(10) = 6.5

Plot

				
					%use s2
// plotting the  above function using JGnuplot
val p = JGnuplot(false)
p.addPlot("x*x*x*1/20 - 13/10*x*x + 223/20*x -30 ")
p.plot()
				
			

Output : 

Example 2 :

find the vale of  y(7) from the above given dataset

In the above given data set the intervals are unequal .By using the lagrange’s interpolation  we have 

 x_0 =5 \ x_1=6 \ x_2=8  \\ y_0 = 7 \ y_1=10 \ y_2=14 ,

 f(x) = 7\frac{(x-6) \cdot (x-8)}{(5-6) \cdot (5-8)}+10\frac{(x-5) \cdot (x-8)}{(6-5) \cdot (6-8)}+14\frac{(x-5) \cdot (x-6)}{(8-5) \cdot (8-6)}  
 f(x) = 7\frac{(x-6) \cdot (x-8)}{(-1) \cdot (-3)}+10\frac{(x-5) \cdot (x-8)}{1 \cdot (-2)}+14\frac{(x-5) \cdot (x-6)}{3 \cdot 2}
 f(x) = 7\frac{(x^2-14x+48)}{3}+10\frac{(x^2-13x+40)}{(-2)}+14\frac{(x^2-11x+30)}{6}  
 f(x) = \frac{7}{3}(x^2-14x+48)-5(x^2-13x+40)+\frac{7}{3}(x^2-11x+30)
 f(x) = (\frac{7}{3}x^2-\frac{98}{3}x+112)+(-5x^2+65x-200)+(\frac{7}{3}x^2-\frac{77}{3}x+70)
 f(x) = -\frac{1}{3}x^2+\frac{20}{3}x-18

Now, we need to find the value of   y(7) as f(7) =y(7)  ,so put   x= 7 in the above equation,

on calculating,  f(7) \ we \ get \newline  f(7)  = 12.334 .

testing

Output : The value of y(7) = 12.333333333333332

				
					%use s2
//here let x be the given given value to find the interpolant
var x : Double = 7.0

//defining the variables for the  given data
var x_0 : Double = 5.0
var y_0 : Double = 7.0
var l_0 : Double         //here l_0 be the l(0) as we discuused in the above

var x_1 : Double = 6.0
var y_1 : Double = 10.0
var l_1 : Double             //here l_0 be the l(1)

var x_2 : Double = 8.0
var y_2 : Double = 14.0
var l_2 : Double              //here l_0 be the l(2)


//assigning the l(x) values to the variables
l_0= (((x-x_1)*(x-x_2))/((x_0-x_1)*(x_0-x_2)))
l_1= (((x-x_0)*(x-x_2))/((x_1-x_0)*(x_1-x_2)))
l_2= (((x-x_0)*(x-x_1))/((x_2-x_0)*(x_2-x_1)))

var f : Double
f = l_0*y_0 + l_1*y_1 + l_2*y_2

println("The value of y(7) = $f")
				
			

PLOT

				
					%use s2
// plot the above function by using JGnuplot
val p = JGnuplot(false)
p.addPlot("-x*x*1/3 + (20/3)*x - 18")
p.plot()

				
			

Output :