牛顿迭代法求根

/*
 Date: 07/03/19 15:40
 Description: 用牛顿迭代法求下面方程在1附近的近视根
          f(x)=a*x*x*x+b*x*x+c*x+d=0

        x1=x0-f(x)/f'(x)
*/

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

float soult(float a,float b,float c,float d);
 
int main()
{
   float a,b,c,d;
   printf("Please enter a、b、c and d: ");
   scanf("%f %f %f %f",&a,&b,&c,&d);
   printf("x=%10.7f ",soult(a,b,c,d));
 
   return 0;
}
float soult(float a,float b,float c,float d)
{
   float x1,x0,f,f1;
   x1=1.0;
   do
   {
      x0=x1;
      //f=((a*x0+b)*x0+c)*x0+d;
      //f1=(3*a*x0+2*b)*x0+c;
      f=(a*x0*x0*x0)+(b*x0*x0)+(c*x0)+d;//f表示函数f(x)
      f1=(3*a*x0*x0)+(2*b*x0)+c;//表示函数f(x)的导数 
      x1=x0-f/f1;
   } while(fabs(x1-x0)>=1e-5);
 return x1;
}