# Newton Interpolation Forward C++

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int fact(int k)
{
int l,f=1;
for(l=1;l<=k;l++)
{
f=f*l;
}
return f;
}
double f(int m,double p)
{
int h;
double pr=1.0,q;
for(h=1;h<=m-1;h++)
{
pr=pr*(p-h);
}
q=p*pr;
return q;
}
double b(int m,double p)
{
int h;
double pr=1.0,q;
for(h=1;h<=m-1;h++)
{
pr=pr*(p+h);
}
q=p*pr;
return q;
}

int main()
{
double y[50][50],x[50];
int n,i,j;
double p,e,s,d,sum=0,r,sum1=0,r1;
cout<<"Enter n="<<endl;
cin>>n;
cout<<"Starting Point="<<endl;
cin>>s;
cout<<"End Point="<<endl;
cin>>e;
cout<<"Difference="<<endl;
cin>>d;
p=(e-s)/d;
cout<<"X"<<"\t"<<"Y"<<endl;
for(i=0;i<n;i++)
{
cin>>x[i]>>y[0][i];
}
cout<<"X"<<"\t"<<"Y"<<endl;
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
{
y[i][j]=y[i-1][j+1]-y[i-1][j];
}
}
cout<<"Forward Difference Table"<<endl;
for(j=0;j<n;j++)
{
printf("%lf",x[j]);
for(i=0;i<n-j;i++)
{
printf("\t%lf",y[i][j]);
}
printf("\n");
}
for(i=2;i<=n-1;i++)
{
sum=sum+(f(i,p)/(fact(i)))*y[i][0];

}
r=y[0][0]+p*y[1][0]+sum;
cout<<"Root is="<<r<<endl;

cout<<"Backward Difference"<<endl;
for(i=1;i<n;i++)
{
for(j=n-1;j>=i;j--)
{
y[i][j]=y[i-1][j]-y[i-1][j-1];
}
}
for(j=0;j<n;j++)
{
printf("%lf",x[j]);
for(i=0;i<=j;i++)
{
printf("\t%lf",y[i][j]);
}
printf("\n");
}
for(i=2;i<=n-1;i++)
{
sum1=sum1+(b(i,p)/(fact(i)))*y[i][i];

}
r1=y[n-1][n-1]+p*y[1][n-1]+sum1;
cout<<"Root is="<<r1<<endl;

return 0;
}

Earn @ Wap4dollar.Com