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 は、実際のデータではなく、対数空間で必要なプロットの軸にする必要があります。

すなわち

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 に答える