Метод прямоугольников

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Метод прямоугольников — метод численного интегрирования функции одной переменной, заключающийся в замене подынтегральной функции на многочлен нулевой степени, то есть константу, на каждом элементарном отрезке. Если рассмотреть график подынтегральной функции, то метод будет заключаться в приближённом вычислении площади под графиком суммированием площадей конечного числа прямоугольников, ширина которых будет определяться расстоянием между соответствующими соседними узлами интегрирования, а высота — значением подынтегральной функции в этих узлах. Алгебраический порядок точности равен 0. (Для формулы средних прямоугольников равен 1).

Если отрезок \left[ a, b \right]\,\! является элементарным и не подвергается дальнейшему разбиению, значение интеграла можно найти по

  1. Формуле левых прямоугольников: \int^b_a f(x)\,dx \approx f(a) (b - a).
  2. Формуле правых прямоугольников: \int^b_a f(x)\,dx \approx f(b) (b - a).
  3. Формуле прямоугольников (средних): \int^b_a f(x)\,dx \approx f\left(\frac{a + b}{2}\right) (b - a).

Составные квадратурные формулы[править | править вики-текст]

В случае разбиения отрезка интегрирования на n\,\! элементарных отрезков приведённые выше формулы применяются на каждом из этих элементарных отрезков между двумя соседними узлами. В результате, получаются составные квадратурные формулы

  1. Для левых прямоугольников: \int^b_a f(x)\,dx \approx \sum_{i=0}^{n-1} f(x_i) (x_{i+1} - x_i).
  2. Для правых прямоугольников: \int^b_a f(x)\,dx \approx \sum_{i=1}^n f(x_i) (x_i - x_{i-1}).
  3. Для средних прямоугольников: \int^b_a f(x)\,dx \approx \sum_{i=0}^{n-1} f\left(\frac{x_i + x_{i+1}}{2}\right) (x_{i+1} - x_i) = \sum_{i=1}^n f\left(\frac{x_{i-1} + x_i}{2}\right) (x_i - x_{i-1}).

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

Поскольку составные квадратурные формулы являются ни чем иным, как суммами, входящими в определение интеграла Римана, при n \to \infty\,\! они сходятся к точному значению интеграла. Соответственно, с увеличением n\,\! точность получаемого по приближённым формулам результата возрастает.


Метод средних прямоугольников

Составные формулы для равномерных сеток[править | править вики-текст]

Равномерную сетку можно описать следующим набором формул:

x_i = a + i h, \qquad h = \frac{b - a}{n},

где h\,\! — шаг сетки.

Для равномерных сеток формулы прямоугольников можно записать в виде следующих формул Котеса:

  1. Составная формула левых прямоугольников: \int^b_a f(x)\,dx \approx h \sum_{i=0}^{n-1} f_i = h (f_0 + f_1 + \ldots + f_{n-1}).
  2. Составная формула правых прямоугольников: \int^b_a f(x)\,dx \approx h \sum_{i=1}^{n} f_i = h (f_1 + f_2 + \ldots + f_{n}).
  3. Составная формула средних прямоугольников \int^b_a f(x)\,dx \approx h (\frac{f_0}{2} + f_1 + \ldots + f_{n-1}+\frac{f_{n}}{2}).Если есть возможность выбирать точки в которых задано значение функции, то [1] \int^b_a f(x)\,dx \approx h \sum_{i=1}^{n} f(x_i-h/2) .

Погрешность метода[править | править вики-текст]

Для формул правых и левых прямоугольников погрешность составляет

E(f) = \frac{f'(\xi)}{2n} (b - a)^2.

Для формулы прямоугольников (средних)

E(f) = \frac{f''(\xi)}{24n} (b - a)^3.

Для составных формул правых и левых прямоугольников на равномерной сетке:

E(f) = \frac{f'(\xi)}{2} (b - a) h.

Для составной формулы прямоугольников:

E(f) = \frac{f''(\xi)}{24} (b - a) h^2.

Пример реализации[править | править вики-текст]

Формула средних прямоугольников для аналитически заданной функции, написанная на С

#include <stdio.h>
#include <math.h>
 
double InFunction(double x) //Подынтегральная функция
{
  return sin(x); //Например, sin(x)
}
 
double CalcIntegral(double a, double b, int n)
{
  int i;
  double result, h;
 
  result = 0;
 
  h = (b - a) / n; //Шаг сетки
 
  for(i = 0; i < n; i++)
  {
    result += InFunction(a + h * (i + 0.5)); //Вычисляем в средней точке и добавляем в сумму
  }
 
  result *= h;
 
  return result;
}
 
int main(void)
{
  double integral;
 
  integral = CalcIntegral(0, 2, 500);
  printf("The value of the integral is: %lf \n", integral);
  return 0;
}

Формула средних прямоугольников для аналитически заданной функции, написанная на PHP

<?
 
function InFunction($x) //Подынтегральная функция
{
  return sin($x); //Например, sin(x)
}
 
function CalcIntegral($a, $b, $n)
{
  $result = 0;
  $h;
  $i;
 
  $result = 0;
 
  $h = ($b - $a) / $n; //Шаг сетки
 
  for($i = 0; $i < $n; $i++)
  {
    $result += InFunction($a + $h * ($i + 0.5)); //Вычисляем в средней точке и добавляем в сумму
  }
  $result *= $h;
 
  return $result;
}
 
$integral = CalcIntegral(0, 2, 500);
echo $integral;
 
?>

См. также[править | править вики-текст]