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