Участник:Gukov/Песочница
Материал из MachineLearning.
(→Числовой пример) |
(→Изложение метода) |
||
Строка 87: | Строка 87: | ||
</table> | </table> | ||
<tex>\line(1,0){200}</tex> | <tex>\line(1,0){200}</tex> | ||
- | === | + | |
+ | === Метод Рунге === | ||
+ | |||
+ | Пусть существует асимптотическое разложение вида: | ||
+ | |||
+ | <tex>D_N(f) = I_N(f) - I_0 = \alpha _2 h^2 + \alpha _4 h^4 + \alpha _6 h^6 + \ldots</tex>, | ||
+ | |||
+ | где <tex>f(x)</tex> - достаточно гладкая функция, а <tex>hN = b - a</tex>. | ||
+ | |||
+ | Проведем расчеты на двух равномерных сетках с шагами <tex>h_1</tex> и <tex>h_2</tex> соответственно и найдем выражения | ||
+ | <tex>I^{h_1}[f] = I_{N_1}[f]</tex> и <tex>I^{h_2}[f] = I_{N_2}[f]</tex>, <tex>h_1 N_1 = h_2 N_2 = b - a</tex>. Потребуем, | ||
+ | чтобы погрешность для их линейной комбинации: | ||
+ | |||
+ | :<tex>{\tilde D}^{h}(f) = \sigma D^{h_1}(f) + (1 - \sigma)D^{h_2}(f)</tex> | ||
+ | |||
+ | была величиной более высокого порядка по сравнению с <tex>D^{h_1}</tex> и <tex>D^{h_2}</tex>. Если для <tex>D^h = D_N</tex> имеет место формула вида | ||
+ | |||
+ | :<tex> D^{h} = I^{h}[f] - I[f] = \alpha _p h^p + \alpha _q h^q + \ldots,</tex> <tex>q > p</tex>, | ||
+ | |||
+ | то для | ||
+ | |||
+ | :<tex>{\tilde D}^{h} = (\sigma I^{h_1}[f] + (1 - \sigma)I^{h_2}[f]) - I[f]</tex> | ||
+ | |||
+ | получим | ||
+ | |||
+ | :<tex>{\tilde D}^{h}(f) = \alpha _p(\sigma h_1^{p} + (1 - \sigma)h_2^{p}) + \alpha _q (\sigma h_1^{q} + (1 - \sigma)h_2^{q}) + \ldots</tex> | ||
+ | |||
+ | Выберем параметр \sigma из условия <tex>\sigma h_1^{p} + (1 - \sigma)h_2^{p}</tex>: | ||
+ | |||
+ | :<tex>\sigma = \frac{h_2^p}{h_2^p - h_1^p}</tex>. | ||
+ | |||
+ | Имеем | ||
+ | |||
+ | :<tex>{\tilde D}^h(f) = \alpha _q(\sigma h_1^q + (1 - \sigma)h_2^q) + \ldots = O(h^q)</tex>, <tex>h = max(h_1, h_2)</tex>, | ||
+ | |||
+ | причем <tex>\sigma h_1^q + (1 - \sigma)h^q_2 < 0</tex>. Так, если <tex>p = 2, q = 4</tex>, то | ||
+ | <tex>{\tilde D}^{h}(f) = - \alpha _4 h_1^2 h_2^2 + \ldots = O(h^4)</tex>. Таким образом, проведя вычисления на двух сетках | ||
+ | с шагами <tex>h_1</tex> и <tex>h_2 \ne h_1</tex>, мы повысили порядок точности на <tex>2</tex> (на <tex>(q - p)</tex>) для | ||
+ | <tex>{\tilde I} = \sigma I^{h_1} + (1 - \sigma)I^{h_2}</tex>. | ||
== Числовой пример == | == Числовой пример == |
Версия 13:53, 20 октября 2008
Содержание |
Введение
Постановка математической задачи
Задача численного интегрирования состоит в приближенном нахождении значения интеграла
где - заданная и интегрируемая на функция. В качестве приближенного значения рассматривается число
где - числовые коэффициенты и - точки отрезка , . Приближенное равенство
называется квадратурной формулой, а сумма вида (2) - квадартурной суммой. Точки называются узлами квадратурной формулы. Разность
называется погрешностью квадратурной формулы. Погрешность зависит как от расположения узлов, так и от выбора коэффициентов.
Изложение метода
Общие сведения
Предположим, что для вычисления интеграла (1) отрезок разбит на равных отрезков длины и на каждом частичном отрезке применяется одна и та жа квадратурная формула. Тогда исходный интеграл заменяется некоторой квадратурной суммой , причем возникающая погрешность зависит от шага сетки . Для некоторых квадратурных формул удается получить разложение погрешности по степеням . Предположим, что для данной квадратурной суммы существует разложение:
- ,
где и коэффициенты не зависят от . При этом величины предполагаются известными. Теперь предположим:
Чтобы избавиться от степени , составляющей ошибку (ибо среди всех слагаемых, составляющих ошибку, слагамое при является наибольшим) вычислим величину . Имеем:
Отсюда
то есть имеем более точное приближение к интегралу .
Таким образом, рекуррентную формулу можно записать в виде:
Заметим, что - величина, на которую мы делим размер шага при каждом новом вычислении . Разумно положить , т.к. большие значения могут вызвать резкое увеличение количества вычислений.
Для наглядности представим процесс экстраполирования следующей таблицей:
Метод Рунге
Пусть существует асимптотическое разложение вида:
,
где - достаточно гладкая функция, а .
Проведем расчеты на двух равномерных сетках с шагами и соответственно и найдем выражения и , . Потребуем, чтобы погрешность для их линейной комбинации:
была величиной более высокого порядка по сравнению с и . Если для имеет место формула вида
- ,
то для
получим
Выберем параметр \sigma из условия :
- .
Имеем
- , ,
причем . Так, если , то . Таким образом, проведя вычисления на двух сетках с шагами и , мы повысили порядок точности на (на ) для .
Числовой пример
Найдем с помощью квадратурной формулы трапеций приближенное значение интеграла, применив экстраполяцию Ричардсона (данный метод называется методом Ромберга):
В нижеследующей таблице представлены результаты работы программы:
r | Исходная формула | Экстраполированная формула | Точное значение | Погрешность вычислений | Погрешность формулы |
---|---|---|---|---|---|
2 | 3.98277278 | 4.04665506 | 4.04718956 | 0.0005345 | 0.00275556 |
4 | 4.03068449 | 4.04714980 | 4.04718956 | 0.00003976 | 0.00017222 |
8 | 4.04303347 | 4.04718692 | 4.04718956 | 0.00000264 | 0.00001076 |
16 | 4.04614856 | 4.04718939 | 4.04718956 | 0.00000017 | 0.00000067 |
32 | 4.04692918 | 4.04718955 | 4.04718956 | 0.00000001 | 0.00000004 |
64 | 4.04712446 | 4.04718956 | 4.04718956 | 0 | 0 |
20384 | 4.04718956 |
Здесь - коэффициент измельчения шага . Исходная величина шага .
На иллюстрации черная сплошная линия - исходная формула, красная пунктирная - экстраполированная.
Как мы видим, разница между экстраполированными и неэкстраполированными результатами значительна. Уже при величине шага в мы можем найти значение интеграла с точностью , тогда как в исходной формуле нам для достижения такой точности пришлось бы задать величину шага .
Рекомендации программисту
Заключение
Список литературы
- А.А.Самарский, А.В.Гулин. Численные методы М.: Наука, 1989.
- Fundamental Methods of Numerical Extrapolation With Applications, mit.edu