Метод прямокутників – метод чисельного інтегрування функції однієї змінної, що полягає в заміні підінтегральної функції на константу, для кожного елементарного відрізка.
Опис алгоритму
Якщо розглянути графік підінтегральної функції, то метод буде полягати в наближеному обчисленні площі під графіком підсумовуванням площ кінцевого числа прямокутників, ширина яких буде визначатися відстанню між відповідними сусідніми вузлами інтегрування, а висота - значенням підінтегральної функції в цих вузлах.
Якщо відрізок [a, b] є елементарним і не піддається подальшому розбиттю, значення інтеграла можна знайти по одній з трьох формул:
Формула лівих прямокутників
Формула правих прямокутників
Формула центральних прямокутників
де fi = f(xi), xi = a + ih, h = (b - a)/n
Реалізація алгоритму
using System;
class Program
{
static double LeftRectangle(Func<double, double> f, double a, double b, int n)
{
var h = (b - a) / n;
var sum = 0d;
for(var i = 0; i <= n-1; i++)
{
var x = a + i * h;
sum += f(x);
}
var result = h * sum;
return result;
}
static double RightRectangle(Func<double, double> f, double a, double b, int n)
{
var h = (b - a) / n;
var sum = 0d;
for (var i = 1; i <= n; i++)
{
var x = a + i * h;
sum += f(x);
}
var result = h * sum;
return result;
}
static double CentralRectangle(Func<double, double> f, double a, double b, int n)
{
var h = (b - a) / n;
var sum = (f(a) + f(b)) / 2;
for (var i = 1; i < n; i++)
{
var x = a + h * i;
sum += f(x);
}
var result = h * sum;
return result;
}
static void Main(string[] args)
{
//локальная функція
double f(double x) => x / (x - 1);
var result = LeftRectangle(f, 4, 10, 1000);
Console.WriteLine("Формула лівих прямокутників: {0}", result);
result = RightRectangle(f, 4, 10, 1000);
Console.WriteLine("Формула правих прямокутників: {0}", result);
result = CentralRectangle(f, 4, 10, 1000);
Console.WriteLine("Формула центральних прямокутників: {0}", result);
Console.ReadKey();
}
}