
Программа для расчета определенного интеграла многочлена 3 степени методом трапеций. Пользователь вводит коэффициенты многочленов, диапазон интегрирования, длину отрезка интегрирования.( Численное интегрирование)
method_trapeciy_cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #include <iostream> #include <cstdlib> #include <string> #include <cstring> #include <cmath> using namespace std; const double prec = 0.001; // точность вычисления /* функция вычисления площади трапеции */ double getTrapezoidArea( double a, double b, double h ) { return ( a + b ) * h / 2.0; } double f( double a, double b, double c, double d , double x) //Функция расчета полинома f(x) 3 степени коэффициенты a, b, c, d { return a * pow(x,3) + b * pow(x,2) + c * x + d; } int main() { system("chcp 1251"); //Это для русского языка, можешь удалить system("cls"); double a = 0.0, b = 0.0, c = 0.0, d = 0.0; // коэффициенты многочлена 3 степени double y1 = 0.0, y2 = 0.0; double down = 0.0, up = 0.0; // пределы интегрирования double S = 0.0; // площадь под графиком cout << "Вычисление интеграла многочлена 3-ой степени с диапазоном интегрирования от a до b методом трапеции с точностью " << prec << endl; cout << "Введите коэффициенты полинома ax^3 +bx^2 +cx + d" << endl; cout << "a = "; cin >> a; if ( a == 0.0 ) { cout << "Ошибка. Это не полином третей степени. Выход" << endl; exit( EXIT_SUCCESS ); } cout << "b = "; cin >> b; cout << "c = "; cin >> c; cout << "d = "; cin >> d; cout << "Введите пределы интегрирования( от a до b, где a <= b )" << endl; cout << "Введите нижний предел: "; cin >> down; cout << "Введите верхний предел: "; cin >> up; if ( down > up ) { cout << "Ошибка. Неправильно заданы пределы интегрирования. Выход" << endl; exit( EXIT_SUCCESS ); } else if ( down == up ) { S = 0.0; } else { S = 0.0; y1 = f(a,b,c,d, down); //Значение функции в начальной точке for ( double i = down + prec; i <= up; i += prec ) { y2 = f(a,b,c,d,i); //Значение функции в следующей точке if ( y1 >= 0.0 && y2 >= 0.0 ) { S += getTrapezoidArea( y1, y2, prec ); //Вычисляем площадь маленькой трапеции } y1 = y2; //Переходим к следующей точке } } cout << "Результат: " << S << endl; return 0; } |
Метод трапеций — метод численного интегрирования функции одной переменной, заключающийся в замене на каждом элементарном отрезке подынтегральной функции на многочлен первой степени, то есть линейную функцию. Площадь под графиком функции аппроксимируется прямоугольными трапециями. Алгебраический порядок точности равен 1.
Метод трапеций