Участник:Gukov/Песочница

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Список литературы)
(Числовой пример)
Строка 90: Строка 90:
== Числовой пример ==
== Числовой пример ==
 +
 +
Найдем с помощью квадратурной формулы трапеций приближенное значение интеграла, применив экстраполяцию Ричардсона (данный метод называется <i>методом Ромберга</i>):
 +
 +
:<tex>\int^{5}_{1} \ln x\, dx = x \ln x - x |_1^{5} = 5\ln 5 - 4</tex>
 +
 +
В нижеследующей таблице представлены результаты работы программы:
 +
{|border = '1'
 +
|r
 +
|Исходная формула
 +
|1 раз
 +
|3 раза
 +
|-
 +
|2
 +
|1.609438
 +
|2.925492
 +
|3.92582
 +
|-
 +
|4
 +
|2.256648
 +
|3.506035
 +
|3.987405
 +
|-
 +
|8
 +
|3.278646
 +
|3.778845
 +
|4.017368
 +
|-
 +
|16
 +
|3.653497
 +
|3.913012
 +
|4.032286
 +
|-
 +
|32
 +
|3.848134
 +
|3.980123
 +
|4.039738
 +
|-
 +
|64
 +
|3.947125
 +
|4.013659
 +
|4.043464
 +
|-
 +
|128
 +
|3.997025
 +
|4.030424
 +
|4.045327
 +
|-
 +
|256
 +
|4.022075
 +
|4.03880706
 +
|
 +
|-
 +
|512
 +
|4.034624
 +
|4.042998
 +
|
 +
|-
 +
|1024
 +
|4.040904
 +
|
 +
|
 +
|}
== Рекомендации программисту ==
== Рекомендации программисту ==

Версия 21:09, 19 октября 2008

Содержание

Введение

Постановка математической задачи

Задача численного интегрирования состоит в приближенном нахождении значения интеграла

( 1)
I = \int\limits_a^b f(x)\,dx,

где 
f(x) 
- заданная и интегрируемая на   [a, b] функция. В качестве приближенного значения рассматривается число

( 2)
I_n=\sum_{i=0}^n c_k f(x_k),

где c_k - числовые коэффициенты и x_k - точки отрезка [a,b],  k = 0, 1, \ldots, n . Приближенное равенство

\int\limits_a^b f(x)\,dx=\sum_{k=0}^n c_k f(x_k)

называется квадратурной формулой, а сумма вида (2) - квадартурной суммой. Точки x_i называются узлами квадратурной формулы. Разность

\Psi _n = \int\limits_a^b f(x)\,dx-\sum_{k=0}^n c_k f(x_k)

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

Изложение метода

Общие сведения

Предположим, что для вычисления интеграла (1) отрезок [a, b] разбит на N равных отрезков длины h = \frac{b-a}N и на каждом частичном отрезке применяется одна и та жа квадратурная формула. Тогда исходный интеграл I заменяется некоторой квадратурной суммой I_h, причем возникающая погрешность зависит от шага сетки h. Для некоторых квадратурных формул удается получить разложение погрешности I_h - I по степеням h. Предположим, что для данной квадратурной суммы I_h существует разложение:

( 3)
I_h = I_0 + a_1 h^{\alpha _1} + a_2 h^{\alpha _2} + \ldots + a_m h^{\alpha _m} + O(h^{\alpha _{m+1}}),

где 0 < \alpha _1 < \alpha _2 < \ldots < \alpha _m < \alpha _{m+1} и коэффициенты \{ a_i \} \subset \mathbb{R} не зависят от h. При этом величины \{ \alpha _i \} \subset \mathbb{R} предполагаются известными. Теперь предположим:

I(\frac{h}{r}) = I_0 + a_1\,\frac{h^{\alpha _1}}{r^{\alpha 1}} + a_2\,\frac{h^{\alpha _2}}{r^{\alpha 2}} + \ldots

Чтобы избавиться от степени h^{\alpha _1}, составляющей ошибку (ибо среди всех слагаемых, составляющих ошибку, слагамое при h^{\alpha _1} является наибольшим) вычислим величину r^{\alpha _1}\,I(\frac{h}r) - I(h). Имеем:

r^{\alpha _1}\,I(\frac{h}{r}) - I(h) = r^{\alpha _1}\,I_0 - I_0 + \fbox{a_1 h^{\alpha _1} - a_1 h^{\alpha _1}} + a_2\,\frac{h^{\alpha _2}}{r^{\alpha _2 - \alpha _1}} - a_2 h^{\alpha _2} + \ldots

Отсюда

I_1(h) = \frac{r^{\alpha _1}I(\frac{h}r) - I(h)}{r^{\alpha _1} - 1} = I_0 + \underbrace{a_2\,\frac{r^{\alpha _1 - \alpha _2} - 1}{r^{\alpha _1} - 1}}_{a_2 '}\,h^{\alpha _2} + \ldots

то есть имеем более точное приближение к интегралу I.

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

( 4)
I_{i+1}(h) = I_i(\frac{h}r) + \frac{I_i(\frac{h}r) - I_i(h)}{r^{\alpha _1} - 1}

Заметим, что r - величина, на которую мы делим размер шага при каждом новом вычислении I. Разумно положить s = 2, т.к. большие значения s могут вызвать резкое увеличение количества вычислений.

Для наглядности представим процесс экстраполирования следующей таблицей:


\line(1, 0){200}

I_0^{0}(h)
I_0^{1}(\frac{h}r) I_1^{0}(h)
I_0^{2}(\frac{h}{r^2}) I_1^{1}(\frac{h}r) I_2^{0}(h)
\vdots \vdots \vdots \ddots

\line(1,0){200}

О сходимости

Числовой пример

Найдем с помощью квадратурной формулы трапеций приближенное значение интеграла, применив экстраполяцию Ричардсона (данный метод называется методом Ромберга):

\int^{5}_{1} \ln x\, dx = x \ln x - x |_1^{5} = 5\ln 5 - 4

В нижеследующей таблице представлены результаты работы программы:

r Исходная формула 1 раз 3 раза
2 1.609438 2.925492 3.92582
4 2.256648 3.506035 3.987405
8 3.278646 3.778845 4.017368
16 3.653497 3.913012 4.032286
32 3.848134 3.980123 4.039738
64 3.947125 4.013659 4.043464
128 3.997025 4.030424 4.045327
256 4.022075 4.03880706
512 4.034624 4.042998
1024 4.040904

Рекомендации программисту

Заключение

Список литературы

Личные инструменты