fork download
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5.  
  6. double trapez(double(*f)(double), double a, double b, double eps)
  7. {
  8. double old_i = 0, new_i = old_i+2*eps;
  9. for(unsigned int n = 1; abs(new_i-old_i) > eps; n *= 2)
  10. {
  11. old_i = new_i;
  12. double h = (b-a)/n, s = -(f(a) + f(b))/2;
  13. for(int i = 0; i <= n; ++i)
  14. s += f(a + i*h);
  15. new_i = s*h;
  16. }
  17. return new_i;
  18. }
  19.  
  20. double y(double x)
  21. {
  22. x = log(x)/x/x;
  23. return sqrt(1+x*x);
  24. }
  25.  
  26. int main()
  27. {
  28. cout << trapez(y,1,2.718281828459045,1e-5) << endl;
  29. }
  30.  
Success #stdin #stdout 0.01s 5592KB
stdin
Standard input is empty
stdout
1.7395