Tugas Praktikum STA561-8

Soal 1


Susunlah sintaks R untuk penjumlahan deret berikut!

𝑧 = 1 + 1 + 1/2 + 1/3 + 1/5 + 1/8 + ⋯

Pembilang untuk deret tersebut bernilai konstan, yaitu 1. Untuk penyebutnya adalah deret Fibonacci dimana setiap sukunya merupakan penjumlahan dari 2 suku sebelumnya.

Pembuatan Fungsi Fibonacci

fz <- function(n){
  fib=function(n){ #fungsi Fibonacci
    x = numeric(n)
    x[1:2] = c(1,1)
    for(i in 3:n) x[i] = x[i-1] + x[i-2]
    return(x)
  }
  ifelse((n>2),1/fib(n)[n],1)
}

Stopping Criteria

stopping_criteria <- function(y_now,y_old){
  abs(y_now-y_old)
}

Nilai Awal

# nilai awal stopping criteria
error <- 10

# nilai awal deret
z0 <- 0

# nilai awal iterasi
n <- 1

Iterasi

while (error>0.00001){
  z <- z0 + fz(n)
  error <- stopping_criteria(z,z0)
  z0 <- z
  n <- n + 1
}

# hasil akhir
z
## [1] 3.359872
# criteria stopping error
error
## [1] 8.237707e-06

Soal 2


Susunlah sintaks R untuk penjumlahan deret berikut!

Z = 10 - 2 + 0.4 - 0.08 + …

Deret tersebut merupakan barisan bilangan geometri dimana antar suku pada deret tersebut memiliki rasio −1/5 dengan nilai awal 10. Rumus fungsinya sebagai berikut:

\(Un =ar^{n-1}\)

Pembuatan Fungsi

fz2 <- function(n){
 10 * (-1/5) ^ (n-1) 
}

Stopping Criteria

stopping_criteria <- function(y_now,y_old){
  abs(y_now-y_old)
}

Nilai Awal

# nilai awal stopping criteria
error <- 10

# nilai awal deret
z0 <- 0

# nilai awal iterasi
n <- 1

Iterasi

while (error>0.00001){
  z <- z0 + fz2(n)
  error <- stopping_criteria(z,z0)
  z0 <- z
  n <- n + 1
}

# hasil akhir
z
## [1] 8.333332
# criteria stopping error
error
## [1] 5.12e-06

Soal 3


Buatlah fungsi untuk mengurutkan vektor berikut dari besar ke kecil. Bandingkan hasilnya dengan menggunakan fungsi sort yang ada di R.

x = [13, 7, 6, 45, 21, 9, 101, 102]

Pembuatan fungsi_sort

fungsi_sort = function(x, urutan="asc") {
  n <- length(x)
  for (i in 1:(n-1)) {
    for (j in (i+1):n) {
      
      if (urutan == "asc" && (x[i] > x[j]) ||
          urutan == "desc" && (x[i] < x[j]))
        {
        tmp = x[i]
        x[i] = x[j]
        x[j] = tmp
      }
    }
  }
  return(x)
}

Pengujian fungsi_sort

x <- c(13, 7, 6, 45, 21, 9, 101, 102)

fungsi_sort(x, urutan="desc")
## [1] 102 101  45  21  13   9   7   6

Menggunakan Fungsi Sort di R

#descending
sort(x,TRUE)
## [1] 102 101  45  21  13   9   7   6

Perbandingan Hasil dari Fungsi

komparasi<-data.frame(sort(x),fungsi_sort(x))
komparasi
##   sort.x. fungsi_sort.x.
## 1       6              6
## 2       7              7
## 3       9              9
## 4      13             13
## 5      21             21
## 6      45             45
## 7     101            101
## 8     102            102
microbenchmark::microbenchmark(sort(x),fungsi_sort(x))
## Unit: microseconds
##            expr    min      lq     mean  median      uq     max neval
##         sort(x) 44.401 50.2005 60.87101 58.0015 65.6005 228.500   100
##  fungsi_sort(x) 14.201 16.0010 22.16506 24.4510 26.5505  45.901   100

Terima kasih