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 <- 1Iterasi
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 <- 1Iterasi
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