Создание Z-таблицы с функцией while - PullRequest
1 голос
/ 08 марта 2020

Учитель в нашем классе, рассказывая нам о конструкции while, проиллюстрировал ее использование на примере построения таблицы умножения следующим образом:

A <- matrix(nrow = 10, ncol = 10)
i=1
j=1
while (i<=10) {while (j<=10) {A[i,j]=i*j
j=j+1}
i=i+1
j=1  
}
A

Итак, я попытался сделать Z-таблица с этой функцией, но с параметрами в диапазоне от 0 до 0,99. Однако я не уверен, что следующий код правильный:

B <- matrix(nrow = 10, ncol = 10)

i=0
j=0
while (i<=0.9) {while (j<=0.09) {B[i,j]=integrate[(1/sqrt(2*pi))*exp^((-(mean(i+j)^2)/2))]
j=j+0.01
i=0
}
i=i+1
j=0
}
B
"Error in exp^((-(mean(i + j)^2)/2)) : 
  non-numeric argument to binary operator"

, если бы вы могли помочь мне с тем, как сделать эту Z-таблицу с использованием конструкции while, я был бы очень благодарен. Спасибо ..

1 Ответ

1 голос
/ 09 марта 2020

Я немного обманываю, используя функцию dnorm в функции integrate.

Z_table <- function(zmax=0.99, decimal=4){
  i <- 1; j <- 1
  z1.max <- trunc(zmax*10)/10 # First decimal place of z
  z2.max <- trunc(zmax*100)/100 - z1.max  # Second decimal place of z
  n <- length(seq(0, z1.max, 0.1)) * 10
  B <- matrix(rep(0, n), ncol=10)
  colnames(B) <- c("0.00", seq(0.01, 0.09, by=0.01))
  rownames(B) <- c("0.0", seq(0.1, z1.max, by=0.1))
  z1 <- 0 
  while(z1 <= z1.max) {  
    z2 <- 0
    while(z2 <= 0.09) {
      B[i, j] <- round(integrate(dnorm, -Inf, z1 + z2)$value, decimal)
      z2 <- z2 + 0.01
      j <- j + 1
    }
    i <- i + 1
    z1 <- round(z1 + 0.1, 1) # takes care of rounding errors
    j <- 1
  }
  cat("Probabilities are between -Inf and z\n")
  B
}

> Z_table()
Probabilities are between -Inf and z
      0.00   0.01   0.02   0.03   0.04   0.05   0.06   0.07   0.08   0.09
0.0 0.5000 0.5040 0.5080 0.5120 0.5160 0.5199 0.5239 0.5279 0.5319 0.5359
0.1 0.5398 0.5438 0.5478 0.5517 0.5557 0.5596 0.5636 0.5675 0.5714 0.5753
0.2 0.5793 0.5832 0.5871 0.5910 0.5948 0.5987 0.6026 0.6064 0.6103 0.6141
0.3 0.6179 0.6217 0.6255 0.6293 0.6331 0.6368 0.6406 0.6443 0.6480 0.6517
0.4 0.6554 0.6591 0.6628 0.6664 0.6700 0.6736 0.6772 0.6808 0.6844 0.6879
0.5 0.6915 0.6950 0.6985 0.7019 0.7054 0.7088 0.7123 0.7157 0.7190 0.7224
0.6 0.7257 0.7291 0.7324 0.7357 0.7389 0.7422 0.7454 0.7486 0.7517 0.7549
0.7 0.7580 0.7611 0.7642 0.7673 0.7704 0.7734 0.7764 0.7794 0.7823 0.7852
0.8 0.7881 0.7910 0.7939 0.7967 0.7995 0.8023 0.8051 0.8078 0.8106 0.8133
0.9 0.8159 0.8186 0.8212 0.8238 0.8264 0.8289 0.8315 0.8340 0.8365 0.8389

> Z_table(zmax=2.9, decimal=3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...