Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 为什么我的蒙特卡罗积分错了2倍?_R_Montecarlo - Fatal编程技术网

R 为什么我的蒙特卡罗积分错了2倍?

R 为什么我的蒙特卡罗积分错了2倍?,r,montecarlo,R,Montecarlo,我试图用蒙特卡罗积分来积分下面的函数。在monte的第一个代码中,我要积分的间隔是x,这一行有错误: y[3] < y[1]**2+sin(y[1])*exp(cos(y[2])) 或者…,考虑到你不应该不必要地重复你自己: y[3] < my.f(y[1], y[2]) 在monte的第一个代码中,此行出错: y[3] < y[1]**2+sin(y[1])*exp(cos(y[2])) 或者…,考虑到你不应该不必要地重复你自己: y[3] < my.f(y[1]

我试图用蒙特卡罗积分来积分下面的函数。在monte的第一个代码中,我要积分的间隔是x,这一行有错误:

y[3] < y[1]**2+sin(y[1])*exp(cos(y[2]))
或者…,考虑到你不应该不必要地重复你自己:

y[3] < my.f(y[1], y[2])
在monte的第一个代码中,此行出错:

y[3] < y[1]**2+sin(y[1])*exp(cos(y[2]))
或者…,考虑到你不应该不必要地重复你自己:

y[3] < my.f(y[1], y[2])

FWIW,你可以矢量化那个for循环,你会获得很多速度。。。但这将是在FWIW领域,你可以将其矢量化为for循环,你将获得很多速度。。。但那将是在
monte = function(x){
  tests = rep(0,x)
  hits = 0
  for(i in 1:x){
    x = runif(1)
    y = runif(1)
    z = runif(1, min = 0, max = max(my.f.values))
    if(z < my.f(x = x, y = y)){
      hits = hits + 1
    }
    prop = hits / i
    est = prop * max(my.f.values)
    tests[i] = est
  }
  return(tests)
}
size = 10000
res = monte(size)
plot(res, type = "l")
lines(x = 1:size, y = rep(cub.integral$integral, size), col = "red")
y[3] < y[1]**2+sin(y[1])*exp(cos(y[2]))
y[3] < y[1]**2 + sin(y[1]) + exp(cos(y[2]))
y[3] < my.f(y[1], y[2])