Newton Divide Difference Interpolation Farmula (C++ code)
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
void main()
{
float i,j,n,x[50],y[50],z[50][48],k,sum,p;
sum=0;
p=1;
cout<<"Enter Value of n\n";
cin>>n;
for( i=0;i<n;i++)
{
cout<<"Enter x["<<i<<"]\n";
cin>>x[i];
}
for( i=0;i<n;i++)
{
cout<<"Enter y["<<i<<"]\n";
cin>>y[i];
}
cout<<"Enter any Value inside interval to find value at:\n" ;
cin>>k;
/*
//raw input
x[0]=0;
x[1]=0.5;
x[2]=1;
x[3]=2;
//x[4]=4;
n=4; //size of input
y[0]=1;
y[1]=1.8987;
y[2]=3.7183;
y[3]=11.3891;
// y[4]=64;
k=1.54;//to find value at k
*/
for(i=0;i<n;i++)
{
cout<<"x="<<x[i]<<" y="<<y[i]<<"\n";
}
for( i=0;i<n;i++)
{
for( j=0;j<n;j++)
{
if(j==0)
{
z[i][j]=(y[i+1]-y[i])/(x[i+1]-x[i]);
}
}
}
for(j=0;j<n;j++)
{
for(i=0;i<n;i++)
{
if(j!=0)
{
if((i==0) && (j==2))
{
// cout<<"\n num=" <<(z[i+1][j-1]-z[i][j-1])<<" denom1 "<<x[i+j+1]<<"denom2= " <<x[i]<<"\n";
}
z[i][j]=(z[i+1][j-1]-z[i][j-1])/(x[i+j+1]-x[i]);
}
}
}
/*
//display z[][]
cout<<"\n\n" ;
for( i=0;i<n;i++)
{
for( j=0;j<n;j++)
{
cout<<z[i][j]<<" ";
}
cout<<"\n";
}
*/
sum=y[0];
for(i=0;i<n-2;i++)
{
for(j=0;j<=i;j++)
{
p=p*(k-x[j]);
}
// cout<<"y[0]="<<y[0]<<"\n sum="<<sum<<"\n p= "<<p<<" \n z[0][i]"<<z[0][i]<<"\n";
sum=sum+(p*(z[0][i]));
p=1;
}
cout<<"\n\nvalue at " <<k<<" ="<<sum;
//0.0137 at k=0.7
getch();
}