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

C++   6 февраля 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 - 1].y; // Формула же для правых прямоугольников имеет вид // integralValue += (points[i].x - points[i - 1].x) * points[i].y; } // Выводим приближенное значение интеграла // c восемью знаками точности printf ("%.8llf", integralValue); return 0; }

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

  • на Delphi

  • на Java

  • на C++