Advertisement
TheMagnusRex

praktika13

Aug 28th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4.  
  5. double fnc(double x){ //интегрируемая функция
  6.     return (x*x + sin(x)*sin(x)*sin(x) + 2);
  7. }
  8.  
  9. double modul(double x){ //взятие модуля
  10.     if(x<0){
  11.         return -1*x;
  12.     }
  13.     if(x>=0){
  14.         return x;
  15.     }
  16. }
  17.  
  18. double fnc2 (double x){// неопределённый интеграл
  19.     return ((1.0/3.0*(cos(x)*cos(x)*cos(x) + x*x*x)) - cos(x) + x*2.0);
  20. }
  21.  
  22. int main()
  23. {
  24.     double a,b;// границы интегрирования
  25.     double e;// заданная точность
  26.     int n; //начальное число шагов
  27.     cout<<"granici intervala:";
  28.     cin>>a>>b;
  29.     cout<<"tochnost':";
  30.     cin>>e;
  31.     cout<<"nachal'noe chislo shagov:";
  32.     cin>>n;
  33.     double c = b-a; //вычисление длины интервала
  34.     double h; //ширина шага
  35.     double h2; //ширина шага для следующей итерации
  36.     double ocenka=10;
  37.     double summ1,summ2; // приближённое значение интеграла
  38.     double summ3; // точное значение интеграла
  39.     cout<<"dlina intervala="<<c<<endl;
  40.     while(ocenka>=e){
  41.         h=c/n;//определение длины шага
  42.         h2=c/(2*n);
  43.         summ1=0;
  44.         summ2=0;
  45.         for (int i=0; i<n;i++){
  46.             summ1+=h*fnc(a+(i*h)); // вычисление интеграла разбиением на n шагов
  47.         }
  48.         for(int l=0;l<2*n;l++){
  49.             summ2+=h2*fnc(a+(l*h2)); // ... на 2n шагов
  50.         }
  51.         ocenka =(1.0/3.0) * modul(summ2 - summ1);//вычисление коэффициента, нужного для проверки условия
  52.         n*=2;
  53.     }
  54.     summ3 = fnc2(b) - fnc2(a);
  55.     cout<<"priblizhennoe znachenie:"<<summ2<<endl; // значение интеграла
  56.     cout<<"polucheno pri "<<n*2<<" shagov"<<endl;
  57.     cout<<"dlina shaga:"<<h2<<endl;
  58.     cout<<"tochnoe znachenie:"<<summ3;
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement