Численное интегрирование методом трапеций (реализация на C++)

C++   5 февраля 2012  Автор статьи:  

Приведем пример реализации численного интегрирования методом трапеций. На вход алгоритму подается набор точек, по которым требуется найти приближенное значение интеграла неизвестной функции. На выходе алгоритм выдает найденное приближенное значение с 8-ю знаками точности. Все вычислительные операции производятся с типом данных long double в целях повышения точности вычислений.


#include
#include
using namespace std;

// Для удобства хранения заданных точек
// создадим соответствующую структуру
struct point
{
long double x, y;
};

int main()
{
// Объявляем и считываем число точек,
// по которым будем вычислять приближенное
// значение интеграла функции
int pointsCount;
cin >> pointsCount;

// Точки будем хранить в векторе структур;
// его размер, очевидно, равен pointsCount
vector points;
points.resize (pointsCount);

// Считываем абсциссы и ординаты точек
for (int i = 0; i < pointsCount; i++) { cin >> points[i].x >> points[i].y;
}

// Изначально приравниваем приближенное
// значение интеграла к нулю
long double integralValue = 0.0;

// Для каждой пары соседних точек считаем
// площадь трапеции, которую они образуют
// вместе с осью абсцисс, по соответствующим
// теоретическим формулам
for (int i = 1; i < pointsCount; i++) { integralValue += (points[i].x - points[i - 1].x) * (points[i].y + points[i - 1].y); } // Для небольшого ускорения работы алгоритма // деление пополам выносят за пределы цикла integralValue /= 2.0; // Выводим приближенное значение интеграла // c восемью знаками точности printf ("%.8llf", integralValue); return 0; }

  • domain

    а реализация правильная ?

Научиться программировать

  • на Delphi

  • на Java

  • на C++