Отправляет email-рассылки с помощью сервиса Sendsay

Всё о работе в Интернет

  Все выпуски  

Занятие 50. Приближённое вычисление определённого интеграла по формулам левых и правых прямоугольников.


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

У программиста спрашивают:Hе помнишь, сколько будет два в четвеpтой?”.

Тот без запинки отвечает: “Шестнадцать!”.

А шестнадцать в четвёртой?” – спрашивают снова.

И программист опять без запинки: “Шестьдесят пять тысяч пятьсот тpидцать шесть.”.

Вот голова, ну ты и даешь!!! Hу, а тpи в четвеpтой?

После паузы: “Hе помню точно. Дpобное число получается…”.

ОПРЕДЕЛЁННЫЙ ИНТЕГРАЛ

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

С математической точки зрения определённый интеграл непрерывной функции (x) на отрезке [ab] численно равен площади соответствующей криволинейной трапеции.

На рис. 1 представлен график некоторой функции (x) и отрезок интегрирования [ab]. На графике отмечены также точки A и B, соответствующие значениям  функции (a) и (b).

Интеграл функции (x) на отрезке [ab] численно равен площади фигуры aABb, ограниченной слева и справа ординатами aA и bB, дугой AB графика функции, а также отрезком ab оси x. Именно такая фигура и называется криволинейной трапецией. Кстати, как раз в вычислении площадей и состоит одно из практических применений определённых интегралов.

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

Построим на графике функции (рис. 2) “левый прямоугольникaACb с основанием, равным длине отрезка [ab], и с высотой, равной левой ординате aA  криволинейной трапеции aABb.

Условимся считать площадь левого прямоугольника aACb приближённо равной площади криволинейной трапеции aABb. Тогда результат вычисления площади левого прямоугольника можно будет считать приближённым значением соответствующего определённого интеграла.

Итак, формула для приближённого вычисления определённого интеграла функции (x) по формуле “левых прямоугольников” имеет вид: I » SaACb = h * f (a), где h = b – a.

Невооружённым глазом видно, что полученная формула будет тем точнее, чем более узким взят прямоугольник. Поэтому на практике для повышения точности вычислений весь отрезок интегрирования [ab] разбивают на несколько участков равной длины. Например, если разделить отрезок [ab] на два равных участка, то можно построить левые прямоугольники на каждом из них (см. рис. 3). При этом совершенно очевидно, что суммарная площадь двух левых прямоугольников aAC1a1 и a1A1Cb более точно соответствует площади криволинейной трапеции aABb, чем площадь одного прямоугольника aACb (рис. 2).

Уточнённая формула для приближённого вычисления интеграла приобретает вид: I »  h * f (a) + h * f (a1) = h * ( f (a) + (a1) ) =  h * ( f (a) +  f (a + h) ), где h = (b – a) / 2.

Подобного рода формулы будут тем точнее, чем большее число участков будет взято на отрезке интегрирования [ab].

Теперь можно сделать окончательный вывод о том, как следует приближённо вычислять определённый интеграл по формуле левых прямоугольников. Весь отрезок [ab] следует  разбить  на  N  участков  равной  длины.  При  этом  ширина  участка  равна h = (b – a) / N. Далее следует найти сумму всех левых ординат каждого из N  участков. Значения ординат получаются как результат вычисления интегрируемой функции f (x) в точках a, + h, a + 2 * h и т. д. (всего N раз). Полученную сумму следует умножить на ширину участка h.

Задача C.1.8. “Интеграл”. Построить подпрограмму приближённого вычисления определённого интеграла заданной функции f (x) по формуле левых прямоугольников. Функция f (x) непрерывна на заданном отрезке интегрирования [ab], который разбит на N равных частей.

   Function Integral ( a,b: Real; N: Integer; f: TFunction ): Real;
      Var i: Integer; h,S: Real;
   Begin
      h := (b-a)/N; S:=0;
      For i:=1 To N Do
         Begin S:=S+f(a); a:=a+h End;
      Integral:=h*S
  
End;

В подпрограмме C.1.8 предусмотрены все вышеуказанные действия. Сначала вычисляется ширина участка h. Затем инициализируется нулевым значением переменная S, используемая для накапливания суммы левых ординат. Оператор цикла с параметром обеспечивает N шагов (по числу левых прямоугольников) суммирования левых ординат f(a)  и последующего изменения координаты a на величину ширины участка h. При этом параметр цикла i имеет смысл порядкового номера участка (прямоугольника). После завершения цикла накопленная сумма S умножается на ширину участка h.

Допустимое значение числа шагов интегрирования N определяется условием N>=1. Нулевое значение N не только не имеет смысла, но и приводит к делению на нуль.

Значения подынтегральной функции в подпрограмме C.1.8 вычисляются посредством обращение к некоторой функции f(x), указанной в качестве формального параметра подпрограммы. Эта функция имеет нестандартный процедурный тип TFunction, который предварительно должен быть определён в разделе типов программы следующим образом: Type Tfunction = Function(x:Real):Real. Для функций, имена которых предполагается использовать в качестве фактических параметров обращения к подпрограмме C.1.8, или для программы в целом должна устанавливаться дальняя модель памяти.

Для пределов интегрирования a и b допустимы произвольные значения. Разумеется, отрезок [ab] должен быть таков, чтобы функция (x) в его пределах была непрерывной. Если a<b, то значение интеграла будет вычислено так, как требуется, то есть по формуле левых прямоугольников. Если a=b, то значение интеграла окажется равным нулю, так как h=0. Что будет, если a>b, обсуждается ниже.

Теперь рассмотрим дополнительные возможности нашего алгоритма.

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

На графике функции (рис. 4) построен “правый прямоугольник” aCBb с основанием, равным длине отрезка [ab], и с высотой, равной правой ординате bB  криволинейной трапеции aABb. Результат вычисления площади правого прямоугольника также можно считать приближённым значением соответствующего определённого интеграла. Формула для вычисления интеграла в этом случае имеет вид: I » SaCBb = h * f (b), где h = b  a.

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

Обратимся к подпрограмме C.1.8, поменяв местами пределы интегрирования, то есть сначала укажем большее значение координаты конца отрезка интегрирования, а затем – меньшее. Разумеется, при этом полученное значение изменит свой знак на противоположный, что согласуется с известным свойством определённого интеграла. Алгоритмически же это произойдёт вследствие того, что величина h станет отрицательной.

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

Таким образом, для приближённого вычисления определённого интеграла по формуле правых прямоугольников достаточно при обращении к подпрограмме C.1.8 поменять местами пределы интегрирования и при этом изменить знак полученного значения интеграла на противоположный.

Уважаемые подписчики! При необходимости задать вопрос, проконсультироваться, уточнить или обсудить что-либо обращайтесь через Гостевую книгу моего персонального сайта http://a-morgun.narod.ru. При этом настоятельно рекомендую пользоваться браузером Internet Explorer.

С уважением, Александр.

 


В избранное