Advertisement
ilyakanyshev

lab1 v5

Jan 19th, 2020
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4. using namespace std;
  5.  
  6. double f(double x);
  7. double integral(double start, double end, double epsil, double (*fun)(double));
  8. double integral(double start, double end, double epsil, int &n, double (*fun)(double));
  9.  
  10. int main()
  11. {
  12.     double a, b, result1, result2, epsil;
  13.     int n = 0;
  14.     cout << "Please, enter start, end: ";
  15.     cin >> a >> b;
  16.     cout << "Enter epsil: ";
  17.     cin >> epsil;
  18.     result1 = integral(a, b, epsil, f);
  19.     result2 = integral(a, b, epsil, n, f);
  20.     cout << "Integral1 = " << result1 << endl;
  21.     cout << "Integral2 = " << result2 << " and n = " << n << endl;
  22.    
  23.     return 0;
  24. }
  25.  
  26. double f(double x)
  27. {
  28.     return x + 4 / (x + 0.3) - sin(x) - 3;
  29. }
  30.  
  31. double integral(double start, double end, double epsil, double (*fun)(double))
  32. {
  33.     double result = 0;
  34.     for (double x = start; x<end; x+=epsil)
  35.         result += fabs(fun(x+epsil/2));
  36.     return result*epsil;
  37. }
  38.  
  39. double integral(double start, double end, int count, double (*fun)(double))
  40. {
  41.     double dx = (end - start) / count, result = 0;
  42.     for (int i = 0; i < count; i++)
  43.         result += fabs(fun(start + dx * i + dx/2));
  44.     return result*dx;
  45. }
  46. double integral(double start, double end, double epsil, int &n, double (*fun)(double))
  47. {
  48.     double result1, result2;
  49.     n = 10;
  50.     do {
  51.         result1 = integral(start, end, n, fun);
  52.         result2 = integral(start, end, 2*n, fun);
  53.         n *= 2;
  54.     } while (fabs(result1 - result2) > epsil*3);
  55.     n /= 2;
  56.     return result1;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement