НАПИШИТЕ ПРОГРАММУ Необходимо вычислить площадь криволинейной трапеции, ограниченной квадратной параболой, а также точность – величину, на которую истинное значение может отличаться от вычисленного нами. Задаются коэффициенты параболы, правая и левая границы, а также N – количество элементарных трапеций, на которые мы разбиваем криволинейную трапецию. Выводится вычисленное значение площади и точность
В задаче есть проблема. Тем методом, что описан в учебнике, точность можно определить только при условии монотонности функции. Но квадратная парабола не монотонна. Проблема решается Нужно найти участки монотонности, применить метод к ним по-отдельности и сложить результаты.
Ниже находится «рыба» для программы. Вместо многоточий вы можете описать дополнительные переменные, ну и собственно программу.
Program xxx;
Var
a,b,c:real;
x1,x2:real;
N:integer;
S,e:real;
…
Begin
Write(‘Введите коэффициенты параболы’);
Read(a,b,c);
Write(‘Введите границы интервала’);
Read(x1,x2);
Write(‘Введите N’);
Read(N);
…
Write(‘Площадь:’, S, ‘ Точность:’, e);
End.
Для создания алгоритма (программы) необходимо знать:
полный набор исходных данных задачи (начальное состояние объекта);
цель создания алгоритма (конечное состояние объекта);
систему команд исполнителя (то есть набор команд, которые исполнитель понимает и может выполнить).
Полученный алгоритм (программа) должен обладать следующим набором свойств:
дискретность (алгоритм разбит на отдельные шаги - команды);
однозначность (каждая команда определяет единственно возможное действие исполнителя);
понятность (все команды алгоритма входят в систему команд исполнителя);
результативность (исполнитель должен решить задачу за конечное число шагов).
Большая часть алгоритмов обладает также свойством массовости (с одного и того же алгоритма можно решать множество однотипных задач).
#include <iostream>
#include <cmath>
#include <algorithm>
#pragma GCC optimize("Ofast")
#define ll long long
#define ld long double
using namespace std;
signed main() {
ll n;
cin >> n;
ll a[n];
for(ll i = 0; i < n; i++)
cin >> a[i];
ld sum = 0, sumkv = 0, sum6 = 0;
ll prod = 1;
for(ll i = 0; i < n; i++){
sum += a[i];
prod *= a[i];
if(i < 6)
sum6 += a[i];
sumkv += pow(a[i],2);
}
ll sum_k = 0;
ll k1,k2;
cin >> k1 >> k2;
for(ll i = k1-1; i < k2; i++)
sum_k+=a[i];
ld av = sum/n;
ld av_s;
ld sum_s = 0;
ll s1,s2;
cin >> s1 >> s2;
for(ll i = s1-1;i < s2; i++)
sum_s += a[i];
av_s = sum_s/(s2-s1 + 1);
cout << "a) " << sum << "\n";
cout << "б) " << prod << "\n";
cout << "в) " << sumkv << "\n";
cout << "г) " << sum6 << "\n";
cout << "д) " << sum_k << "\n";
cout << "е) " << av << "\n";
cout << "ж) " << av_s << "\n";
}