fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <iomanip> // std::setprecision
  4.  
  5. double func(double x)
  6. {
  7. return x*cos(x)-2.0*cos(x)*cos(x)-2.0;
  8. }
  9.  
  10. double derive(double x)
  11. {
  12. return cos(x)-x*sin(x)+2.0*sin(2.0*x);
  13. }
  14.  
  15. int main()
  16. {
  17. double x=0.0; // initial x;
  18. double lastx=x-0.1;
  19. while(std::abs(x-lastx)>1e-10)
  20. {
  21. lastx=x;
  22. x-=func(x)/derive(x);
  23. }
  24. std::cout<<"final x="<<std::setprecision(16)<<x<<std::endl;
  25. return 0;
  26. }
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
final x=5.200801328145019