Tugas Praktikum STA561 Pertemuan 8

Soal 1

Susunlah sintaks R untuk penjumlahan deret berikut! \(𝑧= 1 + 1 + 1/2 + 1/3 + 1/5 + 1/8 + \cdots\)

##           1 2 3 4 5 6 ...
## pembilang 1 1 1 1 1 1 ...
## penyebut  1 1 2 3 5 8 ...

Deret ketiga dan seterusnya pada penyebut merupakan penjumlahan dari dua deret sebelumnya. Jadi deret tersebut dapat ditulis seperti berikut :

\(x = \frac{1}{x_{1}} + \frac{1}{x_{2}} + \sum_{i=3}^{n} \frac{1}{x_{i-2}+x_{i-1}}\)

dimana \({x_{1}}\) dan \({x_{2}}\) diinisiasi dari awal

Berikut program R untuk menjumlahkan deret tersebut:

#Inisiasi nilai awal

#dua nilai awal deret
x1 <- 1
x2 <- 1

#nilai awal kriteria stopping
selisih <- 10
z <- (1/x1) + (1/x2)

nilai_i_min1 <-x2
nilai_i_min2 <-x1

x_baru <- nilai_i_min2 + nilai_i_min2 
  
while (selisih > 1e-9) {
  
  z_min_1 <- z
  x_baru <- nilai_i_min2 + nilai_i_min1 

  z <- z + (1/x_baru)
  
  selisih <- abs(z-z_min_1)
  
  nilai_i_min2 <-nilai_i_min1
  nilai_i_min1 <-x_baru
}

#nilai z
z
## [1] 3.359886

Soal 2

Susunlah sintaks R untuk penjumlahan deret berikut! \(z = 10 -2 + 0.4 - 0.08 +\cdots\)

Deret tersebut dapat ditulis dalam bentuk berikut :

\(z = 10(-\frac{1}{5})^{0}+10(-\frac{1}{5})^{1}+10(-\frac{1}{5})^{2}+10(-\frac{1}{5})^{3}+\cdots\)

\(z = \sum_{i=0}^{n}10(-\frac{1}{5})^{i}\)

Berikut program R untuk menjumlahkan deret tersebut:

#menuliskan fungsi z
fz <- function(i){
  10*((-1/5)^i)
}

#inisiasi nilai awal

#nilai awal kriteria stopping
selisih <- 10
#nilai awal deret
z0 <- 0
# nilai awal iterasi
i <- 0

while (selisih > 1e-9) {
  z <- z0 + fz(i)
  selisih <- abs(z-z0)
  z0 <- z
  i <- i+1
}
# final result
z 
## [1] 8.333333

Soal 3

Buat lah fungsi untuk mengurutkan vektor Berikut dari besar ke kecil. Bandingkan hasilnya dengan mengguakan fungsi sort yang ada di R.

\(x = \left[13, 7, 6, 45, 21, 9, 101, 102 \right]\)

Fungsi sorting menggunakan algoritma Bubble Sort :

bsort <- function(x){
n=length(x)
  for (i in 1:n){
    for(j in 1:n){
      if (x[i]<x[j]){
        a=x[j]
        x[j]=x[i]
        x[i]=a
      }
    }
  }
a=x[1]
return(x)
}
x_vec <- c(13, 7, 6, 45, 21, 9, 101, 102)
bsort(x_vec)
## [1]   6   7   9  13  21  45 101 102

Fungsi sorting menggunakan algoritma Selection Sort :

selectsort <- function(x){
n=length(x)
  for(i in 1:(n-1)){
    min_pos <- i
    
    for(j in (i+1):n){
      if (x[j] < x[min_pos]){
        min_pos <- j
      }
    }
    if (min_pos != i){
        a=x[i]
        x[i] <- x[min_pos]
        x[min_pos] <- a
      }
  }
return(x)
}
x_vec <- c(13, 7, 6, 45, 21, 9, 101, 102)
selectsort(x_vec)
## [1]   6   7   9  13  21  45 101 102

Fungsi sort yang ada pada R :

x_vec <- c(13, 7, 6, 45, 21, 9, 101, 102)
sort(x_vec)
## [1]   6   7   9  13  21  45 101 102

Dari hasilnya dapat dilihat hasil pengurutan fungsi bsort dan selectsort sudah sama dengan fungsi sort yang ada pada R.

Perbandingan kecepatan running fungsi bsort dan selectsort dengan fungsi sort yang ada pada R dengan menggunakan package microbenchmark :

microbenchmark::microbenchmark(sort(x_vec),bsort(x_vec),selectsort(x_vec))
## Unit: microseconds
##               expr    min     lq      mean  median       uq     max neval
##        sort(x_vec) 88.402 92.001 101.74197 94.7510 101.8010 275.601   100
##       bsort(x_vec) 19.200 19.851  21.90010 20.9510  22.4010  45.701   100
##  selectsort(x_vec) 11.901 12.601  14.72698 13.8015  15.0015  59.901   100