Exercise 1.6. As in Exercise 1.1, compute \(\gamma \times n\) for \(n \in {10, 100, 1000, 10000, 100000}\). Compare your approximations \(\gamma \times n\) with the true value of the Euler’s constant (which you can obtain using -digamma(1) in R) to find the approximation error. Plot n against the approximation error with a log-log scale.

preparation works: approximated values

n <- seq (from = 1, to = 10, by = 1)
euler_10 <- sum(n^(-1)) - log(10, base = exp(1))
euler_10
## [1] 0.6263832
n <- seq (from = 1, to = 100, by = 1)
euler_100 <- sum(n^(-1)) - log(100, base = exp(1))
euler_100
## [1] 0.5822073
n <- seq (from = 1, to = 1000, by = 1)
euler_1000 <- sum(n^(-1)) - log(1000, base = exp(1))
euler_1000
## [1] 0.5777156
n <- seq (from = 1, to = 10000, by = 1)
euler_10000 <- sum(n^(-1)) - log(10000, base = exp(1))
euler_10000
## [1] 0.5772657
n <- seq (from = 1, to = 100000, by = 1)
euler_100000 <- sum(n^(-1)) - log(100000, base = exp(1))
euler_100000
## [1] 0.5772207

know the true value of Euler’s constant

true_value <- -digamma(1)

find the errors

eulers <- c(euler_10, euler_100, euler_1000, euler_10000, euler_100000)

approximation_error <- abs (eulers - true_value)
data.frame (x1 = c(euler_10, euler_100, euler_1000, euler_10000, euler_100000),
            "true value" = -digamma(1),
            "approximation error" = approximation_error)
##          x1 true.value approximation.error
## 1 0.6263832  0.5772157        4.916750e-02
## 2 0.5822073  0.5772157        4.991667e-03
## 3 0.5777156  0.5772157        4.999167e-04
## 4 0.5772657  0.5772157        4.999917e-05
## 5 0.5772207  0.5772157        4.999992e-06

plot the graph on log scale

plot (log(c (10, 100, 1000, 10000, 100000)), log(approximation_error),
      pch = 20, col = "hotpink", type = "b",
      xlab = "log of n - values", ylab = "log of approximation errors",
      main = "plot of n against the approximation error \n -- Euler's constant")

### or you can use an argument within the plot() function: log = "xy".