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();

}

output