0

我正在尝试绘制对数刻度,但我不断收到此错误:

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 }

基本上,在我试图展示的这个简短函数中,随着步长的增加,真实答案的误差会减少。但是,我在绘制这个时遇到了麻烦。任何帮助将不胜感激。谢谢

4

3 回答 3

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")

在此处输入图像描述

于 2012-09-23T17:32:08.413 回答
7
plot(1/h, err, log = "1/h")

log 应该是您想要在日志空间中绘制的轴,而不是实际数据。

IE

plot(1/h, err, log = "x")

将在日志空间中绘制您的 x 轴

于 2012-09-23T17:15:51.907 回答
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")
于 2012-09-23T17:29:46.613 回答