我正在尝试在R中实现蒙特卡罗方法,以求出以下二重积分的近似值:

我有以下代码:
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值。我做错了什么?
发布于 2013-12-02 08:01:13
由于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。
https://stackoverflow.com/questions/20318626
复制相似问题