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.