Pract: C program to compute the interpolation value using Newton’s Backward Difference formula.


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

void main()
{
int n,i,j,k,f,fact=1;
float xn,x[5],y[5],h,sum=0,prod=1,u,d[5][5];
clrscr();

printf(“\n\t******************************************************************”);
printf(“\n\t*            Newton’s Backward Interpolation               *”);
printf(“\n\t******************************************************************\n\n”);

printf(“Enter n: “);
scanf(“%d”,&n);

printf(“Enter x:”);
scanf(“%f”,&xn);

for(i=1;i<=n;i++)
{
printf(“x[%d]= “,i);
scanf(“%f”,&x[i]);

printf(“y[%d]= “,i);
scanf(“%f”,&y[i]);
}
if((xn<x[1])||(xn>x[n]))
{
printf(“Value out of range”);
getch();
exit(0);
}
i=2;
while(xn>x[i])
i++;
k=i;
u = (xn – x[k])/(x[k]-x[k-1]);
printf(“\n”);
for(j=1;j<=n-1;j++)
{
for(i=j+1;i<=n;i++)
{
if(j==1)
d[i][j]=y[i]-y[i-1];
else
d[i][j]=d[i][j-1]-d[i-1][j-1];
}
}

sum=y[k];

for(i=1;i<=k-1;i++)
{
prod=1;
for(j=0;j<=i-1;j++)
{
prod=prod*(u+j);
}
fact=1;
for(f=1;f<=i;f++)
{
fact=fact*f;
}
sum=sum+(d[k][i]*prod)/fact;
}
printf(“\nInterpolated value : %f”,sum);
getch();
}

 

Leave a comment