天天看點

C語言習題 牛頓疊代法求根

Description

用牛頓疊代法求根。方程為ax3+bx2+cx+d=0。系數a,b,c,d的值一次為1,2,3,4,由主函數輸入。求x在1附近的一個實根。求出根後由主函數輸出。結果保留兩位小數。

Input

系數a,b,c,d的值

Output

x在1附近的一個實根

Sample Input

1 2 3 4
      

Sample Output

-1.65
      

HINT

 主函數已給定如下,送出時不需要包含下述主函數

int main()

{

 double solut(double ,double ,double ,double );

 double a,b,c,d;

 scanf("%lf%lf%lf%lf",&a,&b,&c,&d);

 printf("%.2f",solut(a,b,c,d));;

 return 0;

}

  1. #include <;stdio.h>
  2. #include<math.h>
  3. double solut(double a,double b,double c,double d)
  4. {
  5.     double x=1,x1=2,f,f1;
  6.     while(fabs(x1-x)>=0.00000001)
  7.     {
  8.         f=((a*x+b)*x+c)*x+d;
  9.         f1=(3*a*x+2*b)*x+c;
  10.         x=x1;
  11.         x1=x-f/f1;
  12.     }
  13.     return x1;
  14. }
  15. int main()
  16. {
  17.     double solut(double ,double ,double ,double );
  18.     double a,b,c,d;
  19.     scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
  20.     printf("%.2f",solut(a,b,c,d));;
  21.     return 0;
  22. }