Численное интегрирование многомерного интеграла с известными границами


12

У меня есть (2-мерный) неправильный интеграл

I=AW(x,y)F(x,y)dxdy

где область интегрирования меньше, чем , но дополнительно ограничена . Так как и гладкие иx = [ - 1 , 1 ] y = [ - 1 , 1 ] F ( x , y ) > 0 F W W 0 F ( x , y ) y x I W ( x , y )Ax=[1,1]y=[1,1]F(x,y)>0FWW0на границах из более позднего соотношения следует, что подынтегральное выражение может быть сингулярным на границах. Интегральная функция конечна, хотя. Пока что я вычисляю этот интеграл с помощью вложенного числового интегрирования. Это успешно, но медленно. Я ищу более подходящий (более быстрый) метод для решения интегрального, может быть, метода Монте-Карло. Но мне нужна такая, которая не ставит точки на границе некубической области A и правильно принимает предел несобственного интеграла. Может ли интегральное преобразование помочь в этом общем выражении? Обратите внимание, что я могу определить для как функцию от и даже вычислить для нескольких специальных весовых функций .F(x,y)yxIW(x,y)


Можете ли вы быть более конкретным о том, какие методы вы использовали до сих пор? Какие конкретные процедуры вы использовали во вложенном порядке? Кроме того, внутри , т. Е. Корни только на границе? F(x,y)0AF(x,y)
Педро

Алгоритм GSL QAGS: gnu.org/software/gsl/manual/html_node/... . Спасибо за правки (не видел опцию набирать уравнения)!
Highsciguy

Ответы:


7

Отказ от ответственности: я написал свою кандидатскую диссертацию по адаптивной квадратуре, поэтому этот ответ будет сильно смещен к моей собственной работе.

QAGS от GSL - это старый интегратор QUADPACK , и он не совсем устойчив, особенно при наличии особенностей. Обычно это приводит к тому, что пользователи запрашивают гораздо больше цифр точности, чем им действительно нужно, что делает интеграцию довольно дорогой.

Если вы используете GSL, вы можете попробовать мой собственный код CQUAD , описанный в этой статье . Он предназначен для того, чтобы справляться с особенностями, как на краях промежутка, так и внутри области. Обратите внимание, что оценка ошибки достаточно надежна, поэтому запрашивайте столько цифр, сколько вам действительно нужно.

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


Я обязательно посмотрю на это, потому что это будет наиболее просто реализовать. На самом деле я обнаружил, что процедура QAGS не была сверхстабильной для этой проблемы.
Highsciguy

Есть ли способ повлиять на возникновение 'GSL_EDIVERGE'? Кажется, для некоторых параметров.
Highsciguy

@highsciguy: алгоритм возвращает GSL_EDIVERGE, когда считает, что интеграл не является конечным. Если бы вы могли привести мне пример, для которого это не помогло, я мог бы более внимательно взглянуть на это.
Педро

Немного трудно выделить простую подпрограмму, поскольку она встроена в общий код для n-мерных интегралов. Я увижу ... Но для фиксированного y 1 / sqrt (F (x, y)) должен вести себя как 1 / sqrt (x), когда x приближается к нулям F (x, y), поскольку F (x, y) затем можно записать в виде полинома от х. Но может быть так, что поведение 1 / sqrt (x) начинается поздно. Также может быть, что числовая точность подынтегрального выражения не слишком хороша.
Highsciguy

1
@highsciguy: Да, это плохая идея. Большинство квадратурных правил предполагают, что подынтегральное выражение имеет некоторую степень гладкости, и если вы установите его равным нулю для некоторой произвольной точки, вы вводите разрыв. Вы получите намного лучшие результаты, если будете использовать фактический интервал!
Педро

5

Методы Монте-Карло, как правило, не могут конкурировать с адаптивной квадратурой, если у вас нет высокоразмерного интеграла, где вы не можете позволить комбинаторный взрыв квадратурных точек с размерностью.

Причина относительно проста для понимания. Взять, к примеру, просто где - размерность задачи. Предположим, для простоты, что вы подразделяете каждое измерение на подинтервалов, т.е. вы получаете в общей сложности ячеек гиперкуба. Предположим далее, что вы используете формулу Гаусса с точками Гаусса, просто в качестве примера. Тогда у вас есть квадратурных точек в общей сложности, и поскольку гауссовых точек обеспечивают точность порядка , , ваша общая точность как функция оценочных баллов будет [0,1]nf(x)dnxnMMnkN=(kM)nk(2k1)e=O(h5)=O(M(2k1))

e=O(N(2k1)/n).
С другой стороны, методы Монте-Карло обычно обеспечивают сходимость ошибок только при что хуже, чем для любой формулы Гаусса с по крайней мере балла за интервал. Причина относительно проста для понимания: квадратура Гаусса выбирает точки интерполяции каким-то разумным способом, а Монте-Карло - нет. Вы не можете ожидать ничего полезного от последнего. (Конечно, бывают ситуации, когда квадратура Гаусса затруднена: например, в вашем случае, когда область интеграции имеет неправильную форму; но в этом случае вам, вероятно, все-таки лучше делать адаптивную интеграцию или подобное.)к > п / 4 + 1 / 2
e=O(N1/2)
k>n/4+1/2

Теперь существуют практические (стабильность) проблемы с интеграцией, скажем, с 8 или 10 точками за интервал. Так что если вы хотите , то вы не можете выйти за пределы . С другой стороны, в этом случае даже выбор одного интервала для каждого направления ( ) дает точек интегрирования, что намного больше, чем вы могли бы оценить за всю жизнь. Другими словами, до тех пор, пока вы можете оценить достаточно точек интеграции, квадратура подразделений вашей области интеграции всегда является более эффективным подходом. Это случаи, когда у вас есть многомерный интеграл, для которого вы не можете больше оценить точки интеграции даже на одном подразделении, когда люди используют методы Монте-Карло, несмотря на их худший порядок сходимости.n = 30 M = 1 N = 8 30k8n=30M=1N=830


1

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

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