Аппроксимирующие интегралы с использованием моделирования Монте-Карло в R

12

Как мне аппроксимировать следующий интеграл с помощью симуляции MC?

1111|xy|dxdy

Благодарность!

Редактировать (в некотором контексте): я пытаюсь научиться использовать симуляцию для аппроксимации интегралов, и я получаю некоторую практику, когда сталкиваюсь с некоторыми трудностями.

Правка 2 + 3 : Каким-то образом я запутался и подумал, что нужно разделить интеграл на отдельные части. Итак, я на самом деле понял это:

n <- 15000
x <- runif(n, min=-1, max=1)
y <- runif(n, min=-1, max=1)
mean(4*abs(x-y))
Мое имя
источник
2
U(1,1)
2
Это 0,5. Поэтому мне нужно умножить на две 2, чтобы получить: «среднее (4 * abs (xy))». Я наконец получил это?
Мое имя
3
(+1) Да ! :) Возможно, вам придется подождать несколько (8?) Часов, но вы должны подумать о том, чтобы вернуться и внести изменения в ответ, чтобы другие пользователи (как я) могли проголосовать за него. Добро пожаловать на сайт! Я надеюсь, что вы продолжите участвовать здесь. Приветствия. :)
кардинал
1
Одно замечание: я считаю, что максимумы чрезвычайно полезны для символической математики. Если бы мне пришлось самостоятельно выполнять аналитические вычисления, у меня была бы та же проблема, что и у @EpiGrad. Но в максимумах вы могли бы сделать integrate(integrate(abs(x-y), y, -1, 1), x, -1, 1);и получить ответ 8/3.
Карл
2
Для R, хотя и не так элегантно в коде максимумов, опубликованном Карлом, можно сделать integrate(Vectorize(function(y) integrate(function(x) abs(x-y), -1, 1)$value), -1, 1)и получить числовое приближение. Использование кубатурного пакета adaptIntegrate(function(x) abs(x[1] - x[2]), c(-1, -1), c(1, 1))может быть использовано. Это просто для того, чтобы дать пару идей для числовой оценки интегралов, которые могут пригодиться, например, при тестировании, если симуляция работает правильно.
NRH

Ответы:

1

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

user873
источник
2
Наверное, поэтому этот вопрос помечен как домашнее задание :-).
whuber
0

Вы можете сделать это в Excel с Тухи .

Войти

=tukhi.average(abs(2*rand()-1 - (2*rand()-1))) 

и нажмите кнопку запуска.

Кит А. Льюис
источник