Методы прямоугольников и трапеций
Материал из MachineLearning.
Содержание |
Введение
Постановка математической задачи
Задача численного интегрирования состоит в нахождении приближенного значения интеграла
где - заданная и интегрируемая на отрезке функция. На отрезке вводится сетка и в качестве приближенного значения интеграла рассматривается число
где - значения функции в узлах , - весовые множители, зависящие только от узлов, но не зависящие от выбора . Формула (2) называется квадратурной формулой.
Задача численного интегрирования при помощи квадратур состоит в отыскании таких узлов и таких весов , чтобы погрешность квадратурной формулы
была минимальной по модулю для функции из заданного класса (величина зависит от гладкости ). Погрешность зависит как от расположения узлов, так и от выбора весовых коэффициентов.
Введем на равномерную сетку с шагом , т.е. множество точек , и представим интеграл (1) в виде суммы интегралов по частичным отрезкам:
Для построения формулы численного интегрирования на всем отрезке достаточно построить квадратурную формулу для интеграла
на частичном отрезке и воспользоваться свойством (3).
Изложение метода
Формула прямоугольников
Заменим интеграл (3) выражением , где
Тогда получим формулу
которая называется формулой прямоугольников на частичном отрезке
Погрешность метода (5) определяется величиной
которую легко оценить с помощью формулы Тейлора. Действительно, запишем в виде
и воспользуемся разложением
где . Тогда из (6) получим
Обозначая , оценим следующим образом:
Таким образом, для погрешности формулы прямоугольников на частичном отрезке справедлива оценка
т.е. формула имеет погрешность при .
Заметим,что оценка (7) является неулучшаемой, т.е. существует функция , для которой (7) выполняется со знаком равенства. Действительно, для имеем и
Суммируя равенства (5) по от до , получим составную формулу прямоугольников
Погрешность этой формулы
равна сумме погрешностей по всем частичным отрезкам,
Отсюда, обозначая , получим
т.е. погрешность формулы прямоугольников на всем отрезке есть велицина .
Видим, что квадратурная формула имеет второй порядок точности.
Формула трапеций
На частичном отрезке эта формула имеет вид
и получается путем замены подынтегральной функции интерполяционным многочленом первой степени,постоенным по узлам , т.е. функцией
Для оценки погрешности достаточно вспомнить,что
Отсюда получим
и,следовательно,
Оценка (11) неулучшаема, так как в ней достигается равенство, например, для .
Составная формула трапеций имеет вид
где .
Погрешность этой формулы оценивается следующим образом:
Таким образом, формула трапеций имеет, так же как и формула прямоугольников, второй порядок точности,, но ее погрешность оценивается величиной в два раза большей.
Числовой пример
Вычислим по формулам прямоугольников и трапеций при интеграл
В данном случае
Зная точный ответ (14), найдем погрешности
Вторая производная функции на отрезке отрицательна, ее модуль не превышает единицы: . Величина погрешностей (15) удовлетворяет неравенствам (9) и (13):
Рекомендации программисту
Пример программы на языке C++
В программе интеграруемая функция задается в функции . В данном примере интегрируется логарифм и эта функция выглядит так:
double function(double x) { return log(x); }
Функция реализует метод прямоугольников, а - метод трапеций.
Функция выглядит следующим образом:
int main(int argc, char ** argv) { char a; printf("Answer by rectangles method is %10.10f.\n", rectangles(1.0, 2.0, 1e-4, 0)); printf("Answer by trapezium method is %10.10f.\n", trapezium(1.0, 2.0, 1e-4, 0)); scanf("%c",&a); return 0; }
Вызов методов и производится напосредственно в функции .
Эти функции имеют следующие параметры:
double trapezium(double left, double right, double precision, unsigned recursion_level) double rectangles(double left, double right, double precision, unsigned recursion_level) где left - левый предел интегрирования, right - правй предел интегрирования, precision - точность, recursion_level - уровень рекурсии, который первоначально задается нулевым.
Так же в программе определяются следующие константы:
RECTS_DEFAULT - число точек,используемых в методе прямоугольников для деления отрезка TRAPZ_DEFAULT - число точек,используемых в методе трапеций для деления отрезка RECURSION_LIMIT - предел рекурсий - сколько раз мы можем делить отрезок и применять для каждого его подотрезка соответсвующий метод с большей точностью DIVISION_LIMIT - предел деления - сколько раз мы можем делить отдин отрезок и каждый раз применять к нему соответсвующий метод с той же точностью (вступает в силу после того,как закончится предел рекурсий).
Автоматический выбор шага интегрирования
Величина погрешности численного интегрирования зависит как от шага сетки , так и от гладкости подынтегральной функции . Например, в оценку (11), наряду с , входит величина
которая может сильно меняться от точки к точке и, вообще говоря, заранее неизвестна. Если величина погрешности велика, то ее можно уменьшить путем измельчения сетки на данном отрезке . Для этого прежде всего надо уметь апостериорно, т.е. после проведения расчета, оценивать погрешность.
Апостериорную оценку погрешности можно осуществить методом Рунге. Пусть какая-то квадратурная формула имеет на частичном отрезке порядок точности , т.е. . Тогда
откуда получим
Возможность апостериорно оценивать погрешность позволяет вычислять интеграл (1) с заданной точностью путем автоматического выбора шага интегрирования . Пусть используется составная квадратурная формула
где - квадратурная сумма на частичном отрезке, причем на каждом частичном отрезке используется одна и та же квадратурная формула (например, формула трапеций). Проведем на каждом частичном отрезке все вычисления дважды, один раз - с шагом и второй раз - с шагом и оценим погрешность по правилу Рунге (17).
Если для заданного будут выполняться неравенства
то получим
т.е. будет достигнута заданная точность .
Если же на каком-то из частичных отрезков оценка (18) не будет выполняться, то шаг на этом отрезке надо измельчить еще в два раза и снова оценить погрешность. Измельчение сетки на данном отрезке следует проводить до тех пор, пока не будет достигнута оценка вида (18). Заметим, что для некоторой функции такое измельчение может продолжаться слишком долго. Поэтому в соответствующей программе следует предусмотреть ограничение сверху на число измельчений,а также вожможность увеличения .
Таким образом, автоматический выбор шага интегрирования приводит к тому, что интегрирование ведется с крупным шагом на участках плавного изменения функции и с мелким шагом - на участках быстрого изменения . Это позволяет при заданной точности уменьшить количество вычислений значений по сравнению с расчетом на сетке с постоянным шагом. Подчеркнем, что для нахождения сумм не надо пересчитывать значения во всех узлах, достаточно вычислять только в новых узлах.
Заключение
Методы прямоугольников и трапеций являются одними из простейших методов интегрирования (запрограммировать их не составляет особого труда). Но эти методы имеют лишь второй порядок точности,в то время как есть методы более высоких порядков.
Также следует отметить что автоматически выбирая шаг интегрирования мы пользуемся апостериорной оценкой погрешности по правилу Рунге,которое не является абсолютно точным, но зато не требует вычисления производных.
Список литературы
- А.А.Самарский, А.В.Гулин. Численные методы М.: Наука, 1989.
- А.А.Самарский. Введение в численные методы М.: Наука, 1982.