Какие объекты исследует вычислительная математика |
Численное интегрирование
7.5. Вычисление интегралов от функций с особенностями
Пусть требуется вычислить несобственный интеграл
![\int\limits_{a}^{b}{f(t)dt}](/sites/default/files/tex_cache/e1283ea1ac566fc4f4bee8e6364f5e01.png)
от функции, обращающейся в бесконечность в некоторой точке В этом случае интеграл обычно разбивают на два
![\int\limits_{a}^{b}{f(t)dt = \lim\limits_{\substack{\delta_1 \to 0 \\
\delta_2 \to 0 }} \left\{{\int\limits_{a}^{c - \delta_1 }{f(t)dt + \int\limits_{c + \delta_2 }^{b}{f(t)dt}} }\right\}}.](/sites/default/files/tex_cache/32309aff8f13379aade1802679daffad.png)
Числа и
выбирают малыми величинами так, чтобы выполнялась оценка:
![$ \left|{\int\limits_{c - \delta_1 }^{c + \delta_2 }{f(t)dt}}\right| < \frac{1}{2}\varepsilon , $](/sites/default/files/tex_cache/8d7ed62d7385c9b08c80078323793a89.png)
где — заданное малое положительное число
(точность вычисления интеграла). После этого по квадратурным формулам вычисляют определенные интегралы
и
с точностью
каждый. После таких вычислений за приближенное значение интеграла с особенностью принимают
(с точностью
).
Другой способ вычисления интеграла от функции особенностью, называемый методом Канторовича выделения особенностей, состоит в следующем. Представим подынтегральную функцию в виде суммы:
![\int\limits_{a}^{b}{f(t)dt = \int\limits_{a}^{b}{g(t)dt} + \int\limits_{a}^{b}{\left[{f(t) - g(t)}\right] dt.}}](/sites/default/files/tex_cache/b176aafd436e5027b02df6c18c58fa6f.png)
При этом g(t) подбирают так, чтобы она была интегрируемой, а разность [f(t) - g(t)] — ограниченной.
Пример. Пусть необходимо вычислить
![$ {I} = \int\limits_0^1 {\frac{dt} {{\sqrt {t(1 + t^2 )}}}}. $](/sites/default/files/tex_cache/b014c109686035612ddc0651fd1a9c5f.png)
Представим I как сумму двух интегралов I = I1 + I2, где
![$ I_1 = \int\limits_0^1 \frac{dt}{\sqrt{t}}, I_2 = \int\limits_0^1 [\frac{1}{\sqrt{t(1 + t^2)}} - \frac{1}{\sqrt{t}}]dt . $](/sites/default/files/tex_cache/72a41e5a736bd9ad690467f5068c4e8c.png)
Интеграл I1 вычисляется аналитически, а I2, поскольку подынтегральная функция ограничена, можно вычислить по квадратным формулам.
Аналогично можно поступить и в следующей задаче:
![$ \int\limits_0^1 {\frac{e^{- t^2 }}{\sqrt{t}}} dt = \int\limits_0^1 {\frac{1 - t^2 }{\sqrt{t}}dt + \int\limits_0^1 {\frac{e^{- t^2 } - 1 + t^2 }{\sqrt{t}}dt}. $](/sites/default/files/tex_cache/e10d81d92be4cd3eafffef84a1af2c68.png)
Интегрирование быстро осциллирующих функций типа можно проводить, заменив f(t) на интерполяционный полином,
Этот интеграл вычисляется явно.
7.6. Идея метода Монте - Карло
Метод Монте - Карло используется, как правило, для вычисления кратных интегралов. Рассмотрим задачу вычисления интеграла по многомерному кубу:
![I = \int\limits_0^1 \int\limits_0^1 \ldots \int\limits_0^1 f(t_1, t_2, \ldots , t_n)dt_1dt_2 \ldots dt_n.](/sites/default/files/tex_cache/3ae2e73fdaaa08aeb65d11a50301c9f8.png)
Для его вычисления можно построить кубатурные формулы, используя процедуру последовательного интегрирования, заменяя кратный интеграл I на
![I = \int\limits_0^1 dt_1 \int\limits_0^1 dt_2 \ldots \int\limits_0^1 dt_n f(t_1, t_2, \ldots , t_n).](/sites/default/files/tex_cache/39800b73aa479b2e83627e72184cdcee.png)
Проблема вычисления подобных интегралов заключается в том, что при росте размерности задачи объем вычисления значительно увеличивается, а задача численного интегрирования превращается из довольно простой в одну из самых сложных и трудоемких. По этой причине приведенные выше квадратурные формулы используются обычно для решения одно - , дву - и трехмерных задач.
Для вычисления интегралов по гиперкубу высокой размерности обычно используется метод Монте - Карло. Суть его состоит в том, что генерируется последовательность случайных точек единичного n - мерного куба ; очевидно, что чем больше точек участвует в вычислительном процессе, тем больше точность расчета.
Пусть теперь необходимо взять интеграл по области
принадлежащей n - мерному кубу, причем,
выделяется неравенствами
![g_j (t_k) \le 0, \quad j = 1 \div J, \quad k = 1 \div K.](/sites/default/files/tex_cache/09086461d3a3383eddb58bee9b84503c.png)
Далее генерируется последовательность случайных чисел, равномерно распределенная в единичном гиперкубе, и для всех точек проверяются неравенства Если они выполнены, т.е.
то вычисляются значения f(t_k), прибавляющиеся к сумме.
Пусть вычислено M точек, из которых {K} попали в и накоплена сумма
Среднее по объему значение функции f
вычисляется по формуле
![$ \bar{f} = \frac{I_{\Omega}}{S_{\Omega}} $,](/sites/default/files/tex_cache/9611b3ffd33ba2ba4666f956f62c63db.png)
![S_{\Omega } = K/M,](/sites/default/files/tex_cache/04f831fe1be236270f8926000a93e7f0.png)
![I_{\Omega }](/sites/default/files/tex_cache/e6a4b5fa9f6638ee64628d1a4ae4edd4.png)
![\Omega.](/sites/default/files/tex_cache/f6938389463fca4a118c4749c29de120.png)
С другой стороны, это же значение можно приближенно вычислить как сумму:
![\left[{\sum {f(t_k)}}\right]/K.](/sites/default/files/tex_cache/95ed41b42a578f48b698fcd40ef506ab.png)
Приравнивая эти выражения, получим:
![$ \frac{M}{K}I_\Omega \approx \frac{1}{K}\sum\limits_{k = 1}^{K}{f(t_k)}, \mbox{откуда } I_\Omega \approx \frac{1}{M}\sum\limits_{k = 1}^{K}{f(t_k)} . $](/sites/default/files/tex_cache/af60b9c5dd48d482403088c6af8183a3.png)