#-------------积分真值------------------
I.true<-exp(1)-exp(-1)
#-------------随机投点法------------------
set.seed(1)
N <- 10000
phat <- mean(runif(N) <= exp(runif(N,-1,1)-1))
I1 <- phat*2*exp(1)
#-------------平均值法------------------
set.seed(1)
N <- 10000
eta <- exp(runif(N,-1,1))
I2 <- mean( 2*eta )
#-------------重要抽样法------------------
set.seed(1)
N <- 10000
Ginv <- function(y) sqrt(1 + 3*y)-1
X <- Ginv(runif(N,-1/3,1))
eta <- exp(X) / (2/3*(1 + X))
I3 <- mean( eta )
#-------------分层抽样法------------------
N <- 10000
h <- function(x) ifelse(x <= 0, exp(x), exp(x))
set.seed(1)
eta1 <- h(runif(N/2, -1, 0))
a <- mean(eta1)
eta2 <- h(runif(N/2, 0, 1))
b <- mean(eta2)
I4 <- a+b
#-------------测试四种方法与真值---------------
I.true
I1
I2
I3
I4
#积分真值
#随机投点法
#平均值法
#重要抽样法
#分层抽样法
因为重要抽样法中试投密度 g(x)的选取在区间[-1,0]上与 h(x)并不接近,导致所求出的积
分估计值与真值之间的误差很大。