在R中使用Monte Carlo模拟逼近积分


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
您在正确的轨道上!您给出的答案非常接近正确。您缺少一小部分。(提示:随机变量的pdf是什么?U(1,1)
主教

2
是0.5 所以我需要乘以两个2来得出:'mean(4 * abs(xy))'。我终于明白了吗?
我的名字,

3
(+1)!:)您可能需要等待几个(8?)小时,但是您应该考虑返回并将修改内容放入答案中,以便其他用户(例如我)可以对其进行投票。欢迎光临本站!我希望看到你继续参加这里。干杯。:)
红衣主教

1
还有一点要补充:我发现最大值对于符号数学非常有用。如果我必须自己进行分析计算,那么我将遇到与@EpiGrad相同的问题。但是在最大程度上,您可以做到integrate(integrate(abs(x-y), y, -1, 1), x, -1, 1);并得到答案8/3。
卡尔

2
对于R感兴趣的人,尽管对Karl发布的最大值代码不太满意,但可以这样做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

Answers:


1

仅作为参考,通常通过确定性正交而不是蒙特卡洛更有效地完成这样的低维积分。蒙特卡洛的尺寸大约为4到6。首先要从低维度学习它...


2
我想这就是为什么这个问题被标记为作业 :-)的原因。
Whuber

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.