我在一个名为“Monthe-Carlo方法”的主题中做了一个功课。而且我遇到了一项任务。
任务如下: 使用MC方法找到积分的近似值(见下图), 其中D是[0到无穷大] x [0到无穷大] x [0到无穷大]的区域。 另外,找到概率0,99的误差值。
到目前为止我所做的是在下面的代码中。
我的主要问题是:我应该为生成的值选择哪个分布?它背后的核心逻辑是什么? 目前我只使用带有参数(0,1)的普通正态分布来得到一些初始结果,但是如结果所示,误差值非常大,因此它不是最好的解决方案。
提前致谢!
n <- 100000
alfa <- 0.01 # 1-0.99
# võtame generaatori preagu normaaljaotusest, sest integraalfunktsiooni kuju on üsnagi sarnane
# normaaljaotuse tihedusfunktsioonile
# gen <- function(n){
# return(matrix(runif(3*n, 0, Inf),ncol=3))
# }
gen <- function(n){
return(matrix(rnorm(3*n, 0, 1),ncol=3))
}
g <- function(x){
#tihedus <- dunif(x[,1],0,Inf)*dunif(x[,2],0,Inf)*dunif(x[,3],0,Inf)
tihedus <- rnorm(x[,1],0,1)*rnorm(x[,2],0,1)*rnorm(x[,3],0,1)
return( (x[,1]+x[,2])*exp(-(x[,1]+x[,2]+2*x[,3]))/(x[,1]^2+x[,2]+x[,3]+1) / tihedus*((x[,1]>=0) + (x[,2]>=0) + (x[,3]>=0)) )
}
MC(gen, g, n, alfa)