SY_Newton forward interpolation

// write a c program to implement forward interpolation method

#include <stdio.h>

int fact(int x){
    if(x == 0 ){
        return 1;
    }else{
       return x*fact(x-1);
    }
   
}
float calcp(float p,int x){
    int i;
    float sum = 1;
    for(i = 0;i<x;i++){
     sum *= (p-i);
    }
    return sum;
}
int main() {
   float xn[100],y[100][10],p,xi,sum = 0;
   int x,i,j,xt,xne;
   printf("Enter how many x's are there: ");
   scanf("%d",&x);
   xt = x;
   for(i = 0;i<x;i++){
       printf("\nEnter the X%d : ",i);
       scanf("%f",&xn[i]);
   }
   
   for(i = 0;i<x;i++){
       printf("\nEnter the f(%.4f): ",xn[i]);
       scanf("%f",&y[0][i]);
   }
   
   xt--;
   
   for(i = 1;i<x;i++){
       for(j = 0;j<xt;j++){
           y[i][j] = y[i-1][j+1] - y[i-1][j];
       }
       xt--;
   }
   xt = x - 1;
   
   
   printf("Enter value to be interpolated: ");
   scanf("%f",&xi);
   
   printf("Enter the position of the nearest value from up:");
   scanf("%d",&xne);
   
   p = (xi - xn[xne-1])/(xn[1]-xn[0]);
   sum = y[0][xne-1];
   
   for(i = 1;i<x;i++){
       sum += (calcp(p,i) * y[i][xne-1])/(fact(i)) ;
   }
   printf("Interpolated value = %f",sum);

    return 0;
}


   

Post a Comment

Previous Post Next Post