| x | y |
|---|---|
| 0 | 1 |
| 1 | 3 |
| 2 | 5 |
For \( f(x) = 2x+1 \):
x <- c(0,1,2)
f <- 2*x+1
f
[1] 1 3 5
| x | y |
|---|---|
| 0 | 1 |
| 1 | 3 |
| 2 | 5 |
In figure below, the Babylonian method for approximating \( \sqrt{2} \) is stable, fast and accurate (but not Method X…).
\[ \begin{align*} x_{k+1} & = \frac{x_{k}}{2} + \frac{1}{x_k} \\ x_{k+1} & = \left(x_k^2 -2\right)^2 + x_k \end{align*} \]
babylonian <- function(x0,m) {
# x0 = initial value
# m = number of iterations
# Iteration function:
g <- function(x){x/2 + 1/x}
# Start by displaying initial value
cat("n = ", 0,",", "x(n) = ", x0, "\n")
# Iteration loop
for(n in 1:m) {
x1 <- g(x0)
x0 <- x1
cat("n = ", n,",", "x(n) = ", x1, "\n") }
}
\[ \small{x_{k+1} = \frac{x_{k}}{2} + \frac{1}{x_k}} \]
sqrt(2)
[1] 1.414214
babylonian(1.4,3)
n = 0 , x(n) = 1.4
n = 1 , x(n) = 1.414286
n = 2 , x(n) = 1.414214
n = 3 , x(n) = 1.414214
babylonian(1.42,3)
n = 0 , x(n) = 1.42
n = 1 , x(n) = 1.414225
n = 2 , x(n) = 1.414214
n = 3 , x(n) = 1.414214
methodX <- function(x0,m) {
# x0 = initial value
# m = number of iterations
# Iteration function:
g <- function(x){(x^2 -2)^2 + x}
# Start by displaying initial value
cat("n = ", 0,",", "x(n) = ", x0, "\n")
# Iteration loop
for(n in 1:m) {
x1 <- g(x0)
x0 <- x1
cat("n = ", n,",", "x(n) = ", x1, "\n") }
}
\[ \small{x_{k+1} = \left(x_k^2 -2\right)^2 + x_k} \]
sqrt(2)
[1] 1.414214
methodX(1.4,8)
n = 0 , x(n) = 1.4
n = 1 , x(n) = 1.4016
n = 2 , x(n) = 1.402861
n = 3 , x(n) = 1.403884
n = 4 , x(n) = 1.404732
n = 5 , x(n) = 1.405446
n = 6 , x(n) = 1.406057
n = 7 , x(n) = 1.406586
n = 8 , x(n) = 1.407049
\[ \small{x_{k+1} = \left(x_k^2 -2\right)^2 + x_k} \]
sqrt(2)
[1] 1.414214
methodX(1.42,8)
n = 0 , x(n) = 1.42
n = 1 , x(n) = 1.420269
n = 2 , x(n) = 1.420564
n = 3 , x(n) = 1.420888
n = 4 , x(n) = 1.421246
n = 5 , x(n) = 1.421643
n = 6 , x(n) = 1.422087
n = 7 , x(n) = 1.422586
n = 8 , x(n) = 1.42315