6. Newton’s Forward interpolation
by ujjal roy
#include<bits/stdc++.h>
using namespace std;
int fact(int n)
{
int r;
r=1;
for(int i=2;i<=n;i++)r*=i;
return r;
}
double val(double v,double i)
{
double d;
d=1;
for(int j=0;j<i;j++)
{
d*=(v-j);
}
return d;
}
int main()
{
cout<<"Enter number : ";
int n,i,j;
cin>>n;
double x[n],y[n][n];
for(i=0;i<n;i++)
{
cout<<"Enter X and Y : ";
cin>>x[i];
cin>>y[i][0];
}
//cout<<y[0][0]<<endl;
//difference table
for(j=1;j<n;j++)
{
for(i=0;i<n-j;i++)
{
y[i][j]=y[i+1][j-1]-y[i][j-1];
}
}
cout<<"Enter value : ";
double value;
cin>>value;
double p;
p=(value-x[0])/(x[1]-x[0]);
double sum;
sum=y[0][0];
for(i=1;i<n;i++)
{
double r;
r=val(p,i);
r/=(double)fact(i);
r*=y[0][i];
sum+=r;
}
cout<<sum<<endl;
return 0;
}
0 Comments