Как я могу приблизить неправильный интеграл?


13

У меня есть функция f(x,y,z) таким образом, что
R3f(x,y,z)dV
конечна, и я хочу , чтобы приблизить этот интеграл.

Я знаком с квадратурными правилами и аппроксимациями интегралов по методу Монте-Карло, но вижу некоторые трудности при их реализации в бесконечной области. В случае Монте-Карло, как можно провести выборку бесконечной области (особенно, если области, которые вносят более существенный вклад в интеграл, неизвестны)? В квадратурном случае, как найти оптимальные точки? Должен ли я просто зафиксировать произвольно большую область вокруг центра координат и применить разреженные квадратурные правила? Как я могу приблизиться к этому интегралу?

Ответы:


20

В одном измерении вы можете отобразить свой бесконечный интервал в конечный интервал, используя интегрирование по подстановке, например

abf(x)dx=u1(a)U-1(б)е(U(T))U'(T)dT

Где - некоторая функция, которая уходит в бесконечность в некотором конечном диапазоне, например, tan ( x ) :U(Икс)загар(Икс)

-е(Икс)dИксзнак равно2-π/2π/2е(загар(T))1соз(2T)+1dT

Затем вы можете использовать любую обычную числовую квадратурную процедуру для модифицированного конечного интеграла.

Замена нескольких переменных немного сложнее, но достаточно хорошо описано здесь .


Это очень интересно ... Я даже не рассматривал возможность замены! Но влияет ли выбор функции на точность аппроксимации? u(t)
Павел

@ Пол: Да, определенно! Функция должна быть настолько гладкой, насколько это возможно, чтобы сохранять f ( u ( t ) ) как можно более гладкой, чтобы обеспечить более точную интеграцию. u(t)f(u(t))
Педро

Это правда, но что я имел в виду, это скорость, с которой u (t) сходится к бесконечности? Это также влияет на точность?
Павел

1
@Paul: я не знаю, правильно ли я понимаю ваш вопрос, но функция должна заканчиваться бесконечно в той или иной точке. Если это займет время, а затем резко возрастет, то это приведет к некоторым большим градиентам в , что затруднит интеграцию и, таким образом, может повлиять на точность. f(u(t))
Педро

1
Ваша производная по касательной была неправильной; Я починил это.
JM

11

Стандартный способ сделать это состоит в том, чтобы извлечь из выражения для экспоненциальный коэффициент, преобразовать его в e - x 2 , а затем использовать гауссовы квадратурные правила (или гауссовский кронрон) с этим в качестве веса. Если f гладкое, это обычно дает отличные результаты.f(x)ex2f

В то же самое работает с весом e - | х | 2 , и соответствующие кубатурные формулы можно найти, например, в книге Энгельса «Числовая квадратура и кубатура».R3e|x|2

Формулы онлайн находятся по адресу http://nines.cs.kuleuven.be/ecf/


2
Это хорошо работает, если ваша подынтегральная функция примерно exp (-x ^ 2). Если ваша интеграция примерно нормальная, но отцентрирована от начала координат, этот подход может работать плохо.
Джон Д. Кук

1
е-Икс2

7

Для одномерной квадратуры вы можете проверить книгу по Quadpack (золотое старое, но все еще очень актуально в одномерной квадратуре) и методы, используемые в алгоритме QAGI, автоматическом интеграторе для бесконечного диапазона.

Другой метод - квадратурная формула с двумя экспонентами, хорошо реализованная Урой для бесконечного интервала .

Для кубатуры, вы можете обратиться к энциклопедии кубатурных формул Рональда Кулса.


2
Обратите внимание, что двойная экспоненциальная квадратура по сути является методом замещения; вы делаете замену, которая преобразует ваш интеграл с бесконечным диапазоном в другой интеграл с бесконечным диапазоном, скорость распада которого, ну, в общем, двойная экспонента ...
JM

1
@JM Верно. И вы делаете это, чтобы извлечь максимум из формулы суммирования Эйлера-Маклаурина для правила трапеции, как и преобразование IMT и преобразование TANH. Хорошую статью об истории DE, написанную одним из отцов-основателей, можно найти здесь
GertVdE

6

Если вы помните, как работала квадратура, вы также знаете один способ аппроксимации бесконечных интегралов. А именно: для квадратуры вы приближаете функциюе(Икс) Вы хотите интегрировать что-то подобное, скажем, полином е~(Икс)(или кусочно-полином), для которого вы можете записать интеграл аналитически. Вы получаетее~ из е путем интерполяции в точках интерполяции - которые будут вашими квадратурными точками.

Для бесконечных интегралов один подход использует точно такое же мышление. Например, вы можете попытаться приблизитьсяе(Икс) по всей строке, используя более простую функцию, например е~(Икс)знак равное-Икс2п(Икс) с полиномом п(Икс) это интерполирует е(Икс)еИкс2в ряде пунктов. Тогда есть простые формулы для вычисления интеграла-е~(Икс)dИкс, Выбор точек интерполяции следует той же логике, что и для обычного квадратурного вывода.


4

Если вы хотите использовать интеграцию Монте-Карло, вы можете начать с выборки по важности с помощью сэмплера, который приблизительно соответствует вашему интегралу. Чем лучше ваш сэмплер соответствует вашему интегралу, тем меньше дисперсия в ваших интегральных оценках. Неважно, что ваш домен бесконечен, если ваш сэмплер имеет тот же домен.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.