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