Soal 1
Susunlah sintaks R untuk penjumlahan deret berikut!
𝑧 = 1 + 1 + 1/2 + 1/3 + 1/5 + 1/8 + ⋯
Menuliskan rumus fungsi dalam bentuk function
Pembilang untuk deret di atas konstan bernilai 1, sedangkan penyebutnya merupakan deret Fibonacci, yakni setiap sukunya merupakan penjumlahan dari 2 suku sebelumnya.
fz <- function(n){
fibo=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/fibo(n)[n],1)
}Mendefinisikan kriteria stopping
Mendefinisikan nilai-nilai awal
Menuliskan iterasi untuk mencari jumlah deret
while (error>0.00001){
z <- z0 + fz(n)
error <- stopping_criteria(z,z0)
z0 <- z
n <- n + 1
}
# final result
z[1] 3.359872
[1] 8.237707e-06
Soal 2
SSusunlah sintaks R untuk penjumlahan deret berikut!
z = 10 -2 + 0.4 -0.08 +. ..
Deret di atas merupakan barisan bilangan geometri, antar suku pada deret tersebut memiliki rasio −1/5 dan nilai awal 10. Rumus fungsi dapat mengikuti \(Un=ar^{n-1}\)
Menuliskan rumus fungsi dalam bentuk function
Pembilang untuk deret di atas konstan bernilai 1, sedangkan penyebutnya merupakan deret Fibonacci, yakni setiap sukunya merupakan penjumlahan dari 2 suku sebelumnya.
Mendefinisikan kriteria stopping
Mendefinisikan nilai-nilai awal
Menuliskan iterasi untuk mencari jumlah deret
while (error>0.00001){
z <- z0 + fz2(n)
error <- stopping_criteria(z,z0)
z0 <- z
n <- n + 1
}
# final result
z[1] 8.333332
[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 ]
Membuat 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)
}Uji coba fungsi sort
[1] 102 101 45 21 13 9 7 6
Menggunakan fungsi sort dari R
[1] 102 101 45 21 13 9 7 6
Unit: microseconds
expr min lq mean median uq max neval
sort(x) 43.1 44.40 47.192 45.25 46.70 158.9 100
fungsi_sort(x) 13.9 14.45 15.680 15.30 16.15 24.7 100