Newton raphson method


#include<stdio.h>
#include<math.h>
 

double f(double x){
  return x*x*x-8*x-4;
}
 
double df(double x){
  return 3*x*x-8;
}
 
double rootNR(double f(double x),double df(double x),double x1,double eps,double maxSteps){
  double x;
  int i=1;
  do{
    x=x1;
    if(fabs(df(x))>=0.000000001){
      x1=x-f(x)/df(x);
      i++;
    }
  }while(fabs(x-x1)>=eps&&i<=maxSteps);
  return x1;
}
 
double printNR(double f(double x),double df(double x),double x1,double eps,double maxSteps){
  double x;
  int iter=1;
  printf("___________________________________________________________________________________________________\n");
  printf("iter\tx\t\tf(x)\t\tf'(x)\t\tx1\t\t|x-x1|\t\tf(x1)\n");
  printf("___________________________________________________________________________________________________\n");
  do{
    x=x1;
    if(fabs(df(x))>=0.000000001){
      x1=x-f(x)/df(x);
      printf("%d.\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\n",iter,x,f(x),df(x),x1,fabs(x-x1),f(x1));
      iter++;
    }
  }while(fabs(x-x1)>=eps&&iter<=maxSteps);
  return x1;
}
main(){
  double x,eps,x1;
  int maxSteps;
  printf("Enter the initial guess:\n");
  scanf("%lf",&x);
  printf("Enter the accuracy:\n");
  scanf("%lf",&eps);
  printf("Enter the maximum no. of steps:\n");
  scanf("%d",&maxSteps);
  printf("__________________________________________________________________________________________________\n\n The roots of the given equation is:\n\n%lf\n\n\n",printNR(f,df,x,eps,maxSteps));
   
}



Post a Comment

0 Comments