## Task 1.1
N <- 200
n <- 0:(N-1)
Fn  <- numeric(N)
Pn  <- numeric(N)
app <- rep(NA, N)
dif <- numeric(N)
acc <- integer(N)
Fn[1] <- 0
Fn[2] <- 1
Pn[1] <- 0
Pn[2] <- 1
real_sqrt2 <- sqrt(2)
print("All variables ready!")
ls()
## Task 1.2
for (k in 3:N) {
Fn[k] <- Fn[k-1] + Fn[k-2]
Pn[k] <- 2*Pn[k-1] + Pn[k-2]
}
data.frame(n=n[1:10], Fn=Fn[1:10], Pn=Pn[1:10])
## Task 1.3
for (k in 2:N) {
if (Pn[k-1] != 0) {
app[k] <- (Pn[k] / Pn[k-1]) - 1
} else {
app[k] <- NA
}
}
head(data.frame(n=n, approx=app, real=real_sqrt2, diff=abs(app-real_sqrt2)), 12)
## Task 1.4
for (k in 1:N) {
if (is.na(app[k])) {
dif[k] <- NA
} else {
dif[k] <- round(abs(app[k]-real_sqrt2), 5)
}
}
for (k in 1:N) {
if (is.na(app[k])) {
acc[k] <- NA
} else {
d <- 0
for (x in 0:15) {
if (round(app[k],x) == round(real_sqrt2,x)) {
d <- x
} else {
break
}
}
acc[k] <- d
}
}
## Task 1.5
pelldata <- data.frame(
n = n,
Fn = Fn,
Pn = Pn,
approx_sqrt2 = app,
diff_from_sqrt2_5dp = dif,
accuracy_dp = acc
)
head(pelldata, 10)
tail(pelldata, 10)
## Task 1.6
for (k in 2:10) {
cat("n =", n[k], "approx =", round(app[k],10),
"abs_diff =", abs(app[k]-real_sqrt2),
"accuracy =", acc[k], "dp\n")
}
View(pelldata)
