Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- double integral(double func(double(x)), double left_border, double right_border, long long num_of_divizions)
- {
- double area = 0, height = abs((right_border - left_border) / num_of_divizions);
- for (long long i = 0; i < num_of_divizions; i++)
- {
- area += ((func(left_border) + func(left_border + height)) / 2) * height;
- left_border += height;
- }
- return area;
- }
- double integral(double func(double), double left_border, double right_border, double epsilon)
- {
- int sign = 1;
- if (left_border > right_border)
- {
- swap(right_border, left_border);
- sign = -1;
- }
- double actual_area;
- double next_area;
- long long i = 2;
- while (true)
- {
- actual_area = integral(func, left_border, right_border, i);
- next_area = integral(func, left_border, right_border, i * 2);
- if (abs(actual_area - next_area) <= epsilon)
- {
- printf("Number of divizions: %lld %c", i * 2, '\n');
- return next_area * sign;
- }
- i*=2;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement