Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <math.h>
- #include <cstdlib>
- #include <string>
- #include <fstream>
- using namespace std;
- double func(double x); //Вычисляет значение функции f(x)=x*e^(x)*sin(x)
- double f2(double x, double h); //Вторая производная
- int main(int argc, char * argv[])
- {
- int n = 48;
- double a = 0, b = 1, h, e = 0.001, S, f2max, f2n, fa, fb, fx;
- int i;
- setlocale(LC_ALL, "RUSSIAN");
- cout << "Нахождение определенного интеграла функции f(x)=x*e^(x)*sin(x) на отрезке [0;1]. Отрезок разбивается на 48 частей." << endl;
- while (1)
- {
- h = (b - a) / n;
- fa = func(a);
- fb = func(b);
- S = h * (fa + fb) / 2;
- for (i = 0; i < n; i++)
- {
- fx = func(a + h * i);
- S = S + fx*h;
- }
- f2max = f2(a, h);
- for (i = 0; i < n; i++)
- {
- f2n = f2(a + h * i, h);
- if (f2n > f2max) f2max = f2n;
- }
- double check = f2max * pow(b - a, 3) / (12 * n*n);
- if (check > e)
- {
- n = n + 5;
- }
- else
- {
- cout << "Значение интеграла = " << S << endl;
- break;
- }
- }
- system("pause");
- return 0;
- }
- double func(double x) //Вычисляет значение функции f(x)=x*e^(x)*sin(x)
- {
- return x * exp(x)*sin(x);
- }
- double f2(double x, double h) //Вторая производная
- {
- return (func(x + h) - 2 * func(x) + func(x - h)) / (h * h);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement