R中使用蒙特卡罗方法求双重积分的近似值

时间:2013-12-01 23:34:44

标签: r statistics integration

我正在尝试在R中实现monte carlo方法,以找到以下双积分的近似值:

enter image description here

我有以下代码:

mean.estimated <- function(nvals) {
    X <- runif(nvals)
    Y <- runif(nvals)
    sum(exp((2*X + 3*Y)^5))/ nvals
}


monte.carlo <- function(nreps,nvals) {
    estimates <- NULL
    for (i in 1:nreps){
        estimates[i] <- mean.estimated(nvals)
    }
    estimates
}

simvalues <- monte.carlo(200,2000)

但它只产生Inf值。我做错了什么?

1 个答案:

答案 0 :(得分:1)

XY的界限介于0和1之间,我们认为2*X + 3*Y取0到5之间的值。

2*X + 3*Y超过约3.72时,我们认为exp((2*X + 3*Y)^5)是无限的:

> exp((3.72)^5)
[1] Inf

如果总和中的任何一个值是无穷大,则总和是无限的。我不打算在这里计算赔率,但在2000个样本中,每个人的2*X + 3*Y不会超过~3.72。因此不太可能为每个样本获得Inf