我正在尝试在R中实现monte carlo方法,以找到以下双积分的近似值:
我有以下代码:
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值。我做错了什么?
答案 0 :(得分:1)
X
和Y
的界限介于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
。