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

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

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

Если отрезок является элементарным и не подвергается дальнейшему разбиению, значение интеграла можно найти по

  1. Формуле левых прямоугольников:
  2. Формуле правых прямоугольников:
  3. Формуле прямоугольников (средних):

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

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

  1. Для левых прямоугольников:
  2. Для правых прямоугольников:
  3. Для средних прямоугольников:

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

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


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

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

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

где  — шаг сетки.

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

  1. Составная формула левых прямоугольников:
  2. Составная формула правых прямоугольников:
  3. Составная формула средних прямоугольников если нет возможности изменять точки в которых вычисляется значение функции выглядит так Т.е. (с точностью до рисунка) превращается в формулу трапеций. Если же есть возможность выбирать точки в которых задано значение функции, то [1]

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

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

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

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

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

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

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

#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;

?>

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