Интегралы на С++ часто вычисляют с помощью разнообразных приближённых формул.
Используются, например,
- формула центральных прямоугольников ;
- формула трапеций ;
- формула Симпсона , эта формула точнее предыдущих.
Программа, приближенно вычисляющая интеграл по этим формулам на C++, выглядит так:
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 |
#include <iostream.h> // добавляем функции для ввода и вывода на экран #include <math.h> // добавляем математические функции // функция, интеграл double f(double x) { return sin(x); } int main() { int i; // счётчик double Integral; // здесь будет интеграл double a = 0.0, b = 1.0; // задаём отрезок интегрирования double h = 0.1;// задаём шаг интегрирования double n; // задаём число разбиений n n = (b - a) / h; // вычисляем интеграл по формуле центральных прямугольников Integral = 0.0; for(i = 1; i <= n; i++) Integral = Integral + h * f(a + h * (i - 0.5)); cout << "I1 = " << Integral << "\n"; // вычисляем интеграл по формуле трапеций Integral = h * (f(a) + f(b)) / 2.0; for(i = 1; i <= n-1; i++) Integral = Integral + h * f(a + h * i); cout << "I2 = " << Integral << "\n"; // вычисляем интеграл по формуле Симпсона Integral = h * (f(a) + f(b)) / 6.0; for(i = 1; i <= n; i++) Integral = Integral + 4.0 / 6.0 * h * f(a + h * (i - 0.5)); for(i = 1; i <= n-1; i++) Integral = Integral + 2.0 / 6.0 * h * f(a + h * i); cout << "I3 = " << Integral << "\n"; system("pause"); } |
Более сложный, но учитывающий различные особенности вычисления интегралов код можно найти в какой-нибудь стандартной программе для вычисления интегралов или какой-нибудь библиотеке численных методов.