Implementation of n divided difference formula in C.
Here is the code..
//Newton's Divided Difference Formula
#include<stdio.h>
void main()
{
float x[6],y[6],dy[5],d2y[4],d3y[3],d4y[2],d5y,t,i,ya,xa;
printf("Enter 6 values for X: ");
for(i=0;i<6;i++)
scanf("%f",&x[i]);
printf("Enter the values for Y: ");
for(i=0;i<6;i++)
scanf("%f",&y[i]);
for(i=0;i<5;i++)
dy[i]=(y[i+1]-y[i])/(x[i+1]-x[i]);
for(i=0;i<4;i++)
d2y[i]=(dy[i+1]-dy[0])/(x[i+2]-x[i]);
for(i=0;i<3;i++)
d3y[i]=(d2y[i+1]-d2y[i])/(x[i+3]-x[i]);
for(i=0;i<2;i++)
d4y[i]=(d3y[i+1]-d3y[i])/(x[i+4]-x[i]);
d5y=(d4y[1]-d4y[0])/(x[5]-x[0]);
printf("Enter the value of x for which y is to be calculated: ");
scanf("%f",&xa);
ya=y[0]+((xa-x[0])*dy[0])+((xa-x[0])*(xa-x[1])*d2y[0])+((xa-x[0])*(xa-x[1])*(xa-x[2])*d3y[0])+((xa-x[0])*(xa-x[1])*(xa-x[2])*(xa-x[3])*(d4y[0]))+(((xa-x[0])*(xa-x[1])*(xa-x[2])*(xa-x[3])*(xa-x[4])*d5y));
printf("Y (for x=%.1f) = %.4f",xa,ya);
}
For Turbo C users.
//Newton's Divided Difference Formula
#include<stdio.h>
#include<conio.h>
void main()
{
float x[6],y[6],dy[5],d2y[4],d3y[3],d4y[2],d5y,t,i,ya,xa;
clrscr();
printf("Enter 6 values for X: ");
for(i=0;i<6;i++)
scanf("%f",&x[i]);
printf("Enter the values for Y: ");
for(i=0;i<6;i++)
scanf("%f",&y[i]);
for(i=0;i<5;i++)
dy[i]=(y[i+1]-y[i])/(x[i+1]-x[i]);
for(i=0;i<4;i++)
d2y[i]=(dy[i+1]-dy[0])/(x[i+2]-x[i]);
for(i=0;i<3;i++)
d3y[i]=(d2y[i+1]-d2y[i])/(x[i+3]-x[i]);
for(i=0;i<2;i++)
d4y[i]=(d3y[i+1]-d3y[i])/(x[i+4]-x[i]);
d5y=(d4y[1]-d4y[0])/(x[5]-x[0]);
printf("Enter the value of x for which y is to be calculated: ");
scanf("%f",&xa);
ya=y[0]+((xa-x[0])*dy[0])+((xa-x[0])*(xa-x[1])*d2y[0])+((xa-x[0])*(xa-x[1])*(xa-x[2])*d3y[0])+((xa-x[0])*(xa-x[1])*(xa-x[2])*(xa-x[3])*(d4y[0]))+(((xa-x[0])*(xa-x[1])*(xa-x[2])*(xa-x[3])*(xa-x[4])*d5y));
printf("Y (for x=%.1f) = %.4f",xa,ya);
getch();
}
No comments:
Post a Comment