Advertisement
dmkozyrev

integral.cpp

Dec 2nd, 2016
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. inline double f(double x) { return x/(3*x+4)/(3*x+4); }         //  Интегрируемая функция f(x)
  7. inline double F(double x) { return (4/(3*x+4)+log(3*x+4))/9; }  //  Ее первообразная F(x)
  8.  
  9. double int_rect(double a, double b, double h) {
  10. //  Метод средних прямоугольников
  11.     double r = 0;
  12.     for (double x = a; x <= b-h; x += h)
  13.         r += f(x+h/2);
  14.     r *= h;
  15.     return r;
  16. }
  17.  
  18. double int_trap(double a, double b, double h) {
  19. //  Метод трапеций
  20.     double r = 0;
  21.     for (double x = a; x <= b-h; x += h)
  22.         r += f(x)+f(x+h);
  23.     r *= h/2;
  24.     return r;
  25. }
  26.  
  27. double int_simp(double a, double b, double h) {
  28. //  Метод Симпсона
  29.     double r = 0;
  30.     for (double x = a; x <= b-h; x += h)
  31.         r += f(x)+4*f(x+h/2)+f(x+h);
  32.     r *= h/6;
  33.     return r;
  34. }
  35.  
  36. int main() {
  37.     double a = 0, b = 4, h = 0.01;
  38.     cout << "Rect:\t" << int_rect(a,b,h) << endl;
  39.     cout << "Trap:\t" << int_trap(a,b,h) << endl;
  40.     cout << "Simp:\t" << int_simp(a,b,h) << endl;
  41.     cout << "Real:\t" << F(b) - F(a) << endl;
  42.     cout << "Mist:\t" << fabs(int_simp(a,b,h)-int_simp(a,b,h/2))/15 << endl;
  43.     return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement