我正在尝试绘制一个对数刻度,但我继续得到这个错误:
Error in plot.window(...) : invalid "log=1/h" specification.
我不确定我做错了什么。以下是我的代码:
#function
function(stepsize, temp_val, counter) {
while(counter < 0) {
counter <- counter + stepsize
px_norm <- dnorm(counter, mean = 0, sd = .04)
temp_val <- temp_val + px_norm }
temp_val <- 2*temp_val
temp_val <- temp_val *(stepsize/2)
print(temp_val, digits = 12)
}
#Initial step size
h <- .01
while (h > .00001) {
x <- calc_error(h, 0, -5) #Gives me a result around .5
err <- x - (exp(-.02)*0.5)
plot(1/h, err, log = "1/h")
h <- h/10 }
基本上,在这个简短的函数中,我试图表明随着步长的增加,真实答案的误差会减少。但是,我在绘制这个问题时遇到了麻烦。任何帮助将不胜感激。感谢
答案 0 :(得分:13)
这应该是创建情节的简单方法:
h <- 10^-seq(2, 4)
err <- lapply(h, function(x) calc_error(x, 0, -5) - (exp(-.02) * .5))
plot(1/h, err, log = "x")
答案 1 :(得分:7)
plot(1/h, err, log = "1/h")
log应该是您在日志空间中想要的绘图轴,而不是实际数据。
即
plot(1/h, err, log = "x")
将在日志空间中绘制x轴
答案 2 :(得分:2)
我猜你想要这样的东西:
i <- 1
h <- 0.01
err <- vector(0,mode="numeric")
while (h[i] > .00001) {
x <- rnorm(1,mean=0.5,sd=0.05) #use calc_error instead
err <- c(err,x - (exp(-.02)*0.5))
i <- i+1
h <- c(h,h[i-1]/10) }
plot(1/h[-length(h)],err,log="x")