因此,我编写了这段代码,它应该有效地估计定义为 h(x) 的函数曲线下的面积。我的问题是我需要能够将面积估计在小数点后 6 位以内,但是我在 estimateN 中定义的算法似乎对我的机器来说太重了。本质上问题是我怎样才能使下面的代码更有效率?有没有办法摆脱那个循环?
h = function(x) {
return(1+(x^9)+(x^3))
}
estimateN = function(n) {
count = 0
k = 1
xpoints = runif(n, 0, 1)
ypoints = runif(n, 0, 3)
while(k <= n){
if(ypoints[k]<=h(xpoints[k]))
count = count+1
k = k+1
}
#because of the range that im using for y
return(3*(count/n))
}
#uses the fact that err<=1/sqrt(n) to determine size of dataset
estimate_to = function(i) {
n = (10^i)^2
print(paste(n, " repetitions: ", estimateN(n)))
}
estimate_to(6)