3.9.7. Вычисление интегралов.
Существуют различные методы численного интегрирования : метод прямоугольников, метод трапеций, метод Симпсона и т.п. В основе этих методов лежит геометрическое толкование интеграла, согласно которому определенный интеграл
численно
равен площади, ограниченной подынтегральной
функцией
,
осью абсцисс и прямыми
и
.
Для
вычисления интеграла эту
площадь разбивают на ряд элементарных
полосок шириной h
и заменяют
каждую полоску более простой геометрической
фигурой, для которой
легко вычислить площадь. Значение
интеграла получают
путем суммирования площадей элементарных
полосок.
При
замене полоски на прямоугольник со
сторонами
и h
получаем
метод прямоугольников. Если полоску
аппроксимировать трапецией
с основаниями
,
и высотой h,
то получим метод трапеций.
В общем случае геометрическая фигура аппроксимирует элементарную полоску приближенно, поэтому интеграл вычисляется с некоторой погрешностью ET. При уменьшении ширины полоски h погрешность ET уменьшается, однако это приводит к росту вычислительных затрат. Поэтому корректная постановка задачи численного расчета интеграла предполагает, что ширина элементарной полоски должна быть такой, чтобы результат получился с погрешностью, не хуже заданной при минимальных вычислительных затратах.
К сожалению нет точных математических формул для оценки текущей погрешности при расчете интеграла, поэтому воспользуемся алгоритмическим способом определения ЕТ .
Суть этого способа заключается в организации циклического процесса, в котором расчет интеграла проводится многократно для последовательно уменьшающихся значений шага h. Расчет проводят да тех пор, пока разность между очередным и предыдущим значениями интеграла не станет меньше заданного значения погрешности ЕЗ.
Рис.3.10.3
Укрупненная схема алгоритма, реализующего этот способ оценки погрешности, приведена на рис.3.10.3, где S1 — значение интеграла на предыдущем шаге расчета; S — значение интеграла на очередном шаге; k — количество точек деления интервала интегрирования; ER — признак ошибки; EPS — заданная погрешность; КМ — максимальное допустимое количество точек деления интервала интегрирования. Расчет начинается с К=2, S = 0; значение интеграла, полученное в блоке 3, присваивается переменной S. Если ЕТ= |S-S1| , больше заданной погрешности EPS, то полученное значение интеграла присваивается переменной S1 и количество точек деления интервала интегрирования увеличивается, например, в два раза. Расчет продолжается до тех пор, пока не выполнится условие в блоке 4 либо значение К не превысит заданное значение КМ. Величину КМ выбирают из разумных соображений так, чтобы при правильных данных алгоритм гарантировал определение значения интеграла с заданной погрешностью.
Контроль количества циклов в подобных задачах необходим, потому что:
1) цикл является итерационным и, следовательно, может потерять свойство конечности из-за ошибок в данных; 2) в каждом цикле шаг деления интервала интегрирования уменьшается в несколько раз, поэтому при больших К вычислительные затраты начинают катастрофически возрастать; 3) при очень малых h начинает играть роль погрешность округления, которая может стать больше заданной погрешности. В данном случае для контроля количества циклов используется признак Er. Если решение найдено менее чем за km циклов, то признак Er будет иметь значение 0. Значение Er=1 соответствует ситуации "Решение с заданной погрешностью не может быть найдено за km итераций".
Блок 3 на рис.3.10.3 — это циклический процесс суммирования площадей элементарных полосок. Число точек разбиения интервала интегрирования может быть большим, а подынтегральная функция — сложной, поэтому для построения эффективного алгоритма необходимо принимать меры по минимизации вычислительных затрат. Рассмотрим один из приемов построения эффективной расчетной формулы на примере метода трапеций.
Для метода трапеций расчетную формулу можно записать в виде
где n-номер
шага по
.
Нетрудно заметить, что в каждой точке по , кроме крайних, необходимо дважды вычислять значение подынтегральной функции. Раскроем скобки, сгруппируем подобные члены и запишем выражение для S в виде
В данном случае подынтегральная функция вычисляется в каждой точке только один раз.
Рис.3.10.4.
Схема алгоритма подпрограммы вычисления S приведена на рис.3.10.4. Вычисление подынтегральной функции оформлено в виде подпрограммы функции PF (с двумя параметрами K и X). Это повышает надежность программы, так как для расчета конкретного интеграла достаточно записать подынтегральную функцию только один раз – в подпрограмме PF.
