用蒙特卡罗下的拒识法求解R
我尝试在R中使用蒙特卡罗下的拒绝法来求解函数的积分值:用蒙特卡罗下的拒识法求解R,r,R,我尝试在R中使用蒙特卡罗下的拒绝法来求解函数的积分值: f <- function(x){ abs((cos(x))/x)*exp(log(x)-3)^3 } 然而,我意识到我的解决方案显然是错误的。 请帮我改正一下 主要问题是使用蒙特卡罗下的拒绝法来求解0和Inf之间的积分数值。如果解决方案涉及使用点计算曲线下的面积,我将不胜感激 问候 set.seed(1234) sampled_x = runif(1000,0,1) accept = c() for(i in
f <- function(x){
abs((cos(x))/x)*exp(log(x)-3)^3
}
然而,我意识到我的解决方案显然是错误的。
请帮我改正一下
主要问题是使用蒙特卡罗下的拒绝法来求解0
和Inf之间的积分数值。
如果解决方案涉及使用点计算曲线下的面积,我将不胜感激
问候
set.seed(1234)
sampled_x = runif(1000,0,1)
accept = c()
for(i in 1:length(sampled_x)){
U = runif(1, 0, 1)
if(dunif(sampled_x[i], 0, 1)*3*U <= dbeta(sampled_x[i], 6, 3)) {
accept[i] = 'Yes'
}
else if(dunif(sampled_x[i],0,1)*2*U > dbeta(sampled_x[i], 6, 3)) {
accept[i] = 'No'
}
}
T = data.frame(sampled_x, accept = factor(accept, levels= c('Yes','No')))
n<-length(T)
for (i in 1:n) {
x<-runif(n)
I<-sum(f(x))
}
I