Algoritma Iteratif
Soal
Soal Nomor 1
Penjumlahan Deret \[\begin{equation} z=\frac{1}{1}+\frac{1}{1}+\frac{1}{2}+\frac{1}{3}+\frac{1}{5}+\frac{1}{8}+ \cdots \end{equation}\]
Penyebut dari deret ini membentuk barisan fibonacci. Olehnya itu, terlebih dahulu perlu dibuat sebuah fungsi untuk menghasilkan nilai barisan fibonacci dimana suku pertama dan kedua adala 1.
Fungsi untuk menghasilkan suku ke-i barisan bilangan fibonacci.
# Membuat barisan Fibonacci
fibon = function(i){
fibo <- c(1,1)
n <- length(fibo)
x <- fibo[n]+fibo[n-1]
while (x<1000000){
n <- n+1
fibo[n] <- x
x <- fibo[n]+fibo[n-1]
}
return(fibo[i])
}Formula
Rumus dari deret pada soal dapat dituliskan sebagai \[fib-series = \sum_{i=1}^{\infty} \frac{1}{fibonacci(i)}\]
#Rumus fungsi
fib_series <- function(i){
fibon(i)
}
#nilai awal
e <- 10
z0 <- 0
i <- 1
#Mencari jumlah deret
while (e > 10^(-5)) {
z1 <- z0 + 1/fib_series(i)
e <- abs(z1-z0)
z0 <- z1
i <- i+1
}
z1## [1] 3.359872
Nilai pendekatan untuk deret ini adalah 3.359872.
Soal Nomor2
Penjumlahan Deret
Perhatikan bahwa \[\small{Z = 10 - 2 + 0.4 - 0.08 + \cdots}\] dapat dituliskan menjadi \[\small{Z = 10\frac{1}{5^0} - 10\frac{1}{5^1} + 10\frac{1}{5^2} - 10\frac{1}{5^3} + \cdots}\]
formula
\[z = \sum_{n=0}^{\infty} (-1)^{n} 10\frac{1}{5^{n}}\]
#Rumus fungsi
z <- function(n){
(-1)^(n) * 10*(1/(5^n))
}
#Nilai awal
e <- 10
z0 <- 0
n <- 0
#Mencari jumlah deret
while (e > 10^(-5)) {
z1 <- z0 + z(n)
e <- abs(z1-z0)
z0 <- z1
n <- n+1
}
z1## [1] 8.333332
Nilai pendekatan untuk deret ini adalah 8.333333.
Soal Nomor 3
Mengurutkan vektor dari besar ke kecil.
Vektor
x <- c(13,7,6,45,21,9,101,102)
x## [1] 13 7 6 45 21 9 101 102
Fungsi untuk mengurutkan vektor dari besar ke kecil
d <- c(13, 7, 6, 45, 21, 9, 101, 102)
desc <- function(d){
# jumlah amatan
n <- length(d)
# Iterasi 1
for (i in 1:n) {
j <- i+1
# Iterasi 2
for (j in 1:n) {
if(d[i] > d[j]) {
tmp <- d[i]
d[i] <- d[j]
d[j] <- tmp}
}
}
return(d)
}#Menampilkan hasil sort menggunakan fungsi desc
desc(d)## [1] 102 101 45 21 13 9 7 6
Bandingkan kecepatan running user-defined-function pada fungsi sort dengan menggunakan package microbenchmark .Hasil running fungsi sort_desc di atas
Hasil running fungsi sort built-in di R
sort(d,decreasing = T)## [1] 102 101 45 21 13 9 7 6
Kesimpulan: Hasilnya yang diperoleh dari fungsi ‘sort’ yang ada di R sama, maka fungsi desc yang telah dibuat berjalan dengan baik.