fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. double f(double x); /*関数 f(x)*/
  5. double d(double x); /*f(x)の導関数;d(X)*/
  6.  
  7. int main()
  8. {
  9. double x0=2.0; /*Newton方を適用するにあたっての初期値*/
  10. double x1; /*(x=x0における接線とx軸との交点)*/
  11. double eps=0.0001; /*=0の理想値*/
  12. int i; /*ループカウンタ*/
  13.  
  14. for(i=1; fabs(f(x0))>eps; i++)
  15. {
  16. printf("%d回目:f(x0)=%f\n", i, fabs(f(x0)));
  17. x1=x0-f(x0)/d(x0);
  18. x0=x1;
  19. }
  20. printf("解は%f", x0);
  21. return 0;
  22. }
  23.  
  24. double f(double x)
  25. {
  26. double fx;
  27. fx = x*x-2.0/x;
  28. return fx;
  29. }
  30.  
  31.  
  32. double d(double x)
  33. {
  34. double dx;
  35. dx = 2.0*x+2.0/(x*x);
  36. return dx;
  37. }
  38.  
Success #stdin #stdout 0s 2112KB
stdin
Standard input is empty
stdout
1回目:f(x0)=3.000000
2回目:f(x0)=0.277778
3回目:f(x0)=0.000575
解は1.259921