SHARE
TWEET

Untitled

a guest Oct 20th, 2019 86 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4.  
  5. double f(double x)
  6. {
  7.     return sin(x*x+2*x);   
  8. }
  9.  
  10. int main() {
  11.     double a, b, eps;//Нижний и верхний пределы интегрирования (a, b), погрешность (eps).
  12.     cin >> a >> b >> eps;
  13.     double I=eps+1, I1=0;//I-предыдущее вычисленное значение интеграла, I1-новое, с большим N.
  14.     for (int N=2; (N<=4)||(fabs(I1-I)>eps); N*=2)
  15.     {
  16.         double h, sum2=0, sum4=0, sum=0;
  17.         h=(b-a)/(2*N);//Шаг интегрирования.
  18.         for (int i=1; i<=2*N-1; i+=2)
  19.         {  
  20.             sum4+=f(a+h*i);//Значения с нечётными индексами, которые нужно умножить на 4.
  21.             sum2+=f(a+h*(i+1));//Значения с чётными индексами, которые нужно умножить на 2.
  22.         }
  23.         sum=f(a)+4*sum4+2*sum2-f(b);//Отнимаем значение f(b) так как ранее прибавили его дважды.
  24.         I=I1;
  25.         I1=(h/3)*sum;
  26.     }
  27.     cout << I1 << endl;
  28.     return 0;
  29. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top