Susunlah sintaks R untuk penjumlahan deret berikut!
\[ z=1+1+\frac{1}{2}+\frac{1}{3}+\frac{1}{5}+\frac{1}{8}+\cdots \]
Jawaban:
Bagian penyebut pada soal nomer 1 diidentifikasi sebagai barisan bilangan Fibonacci. Sedangkan untuk pembilangnya bernilai satu semua. Sehingga karena deretnya tidak memiliki batasan atau tak hingga maka dapat menggunakan fungsi while.
#Mendefinisikan nilai-nilai awal
a = 1
b = 1
i = 1
z = 0
error = 1
#Menuliskan iterasi untuk mencari jumlah deret
while(error > 10^(-10)){
if(i==1){
y = z + 1/a
z = y
}
else if(i==2){
y = z + 1/b
z = y
}
else{
c = a+b
a = b
b = c
y = z + 1/c
error = abs(y-z)
}
z = y
i = i+1
}
#Hasil final
y## [1] 3.359886
Susunlah sintaks R untuk penjumlahan deret berikut!
\[ Z=10-2+0.4-0.08+\cdots \]
Jawaban:
Bagian penyebut pada soal nomer 2 diidentifikasi sebagai barisan dengan deret terus dibagi \(5\). Maksudnya bilangan yang sebelumnya dibagi \(5\) dan hasilnya akan dibagi \(5\) lagi untuk bilangan selanjutnya.
Misalkan dari soal diketahui bilangan pertama yaitu \(10\). Maka, \(\frac{10}{5}=2\) kemudian nilai \(2\) ini akan ditulis bilangan selanjutnya setelah \(10\), \(\frac{2}{5}=0.4\) kemudian nilai \(0.4\) ini akan ditulis bilangan selanjutnya setelah \(2\), dan begitu seterusnya.
Karena deretnya tidak memiliki batasan atau tak hingga maka dapat menggunakan fungsi while.
#Mendefinisikan nilai-nilai awal
i = 1
z = 10
error = 1
x = 0
#Menuliskan iterasi untuk mencari jumlah deret
while (error > 10^(-10)){
a = (-1)^(i+1)
y = x + a*z
z = z/5
error = abs(y-x)
i = i + 1
x = y
}
#Hasil final
y## [1] 8.333333
Buatlah fungsi untuk mengurutkan vektor Berikut dari besar ke kecil. Bandingkan hasilnya dengan menggunakan fungsi sort yang ada di R.
\[ x=\left [ 13,7,6,45,21,9,101,102 \right ] \]
Jawaban:
Dengan membuat fungsi sendiri maka mengurutkan vektor dari besar ke kecil dapat menggunakan fungsi sebagai berikut:
urutan <- function(vektor, n){
#jumlah amatan
n = length(vektor)
# iterasi tingkat 1
for (i in 1:n){
j <- i+1
# iterasi tingkat 2
for (j in 1:n){
# Pemeriksaan kondisi apakah vektor ke-i lebih besar dari vektor ke-j
if(vektor[i]>vektor[j]){
tmp = vektor[i]
vektor[i] = vektor[j]
vektor[j] = tmp}
}
}
return(vektor)
}
vektor <- c(13,7,6,45,21,9,101,102)
urutan(vektor)## [1] 102 101 45 21 13 9 7 6
Dengan menggunakan fungsi sort dari R secara langsung untuk bisa mengurutkan data. Jika ingin mengurutkan dari besar ke kecil dapat ditambahkan dengan decreasing = TRUE.
Note. Sebaliknya, jika ingin mengurutkan data dari nilai kecil ke besar untuk fungsi sortnya dapat menggunakan decreasing = FALSE.
sort(vektor, decreasing = TRUE)## [1] 102 101 45 21 13 9 7 6
Akan dibandingkan kecepatan running dari fungsi urutan yang didefinisikan sendiri pada nomor 3 dan fungsi sort dari R dengan menggunakan package microbenchmark.
library(microbenchmark)## Warning: package 'microbenchmark' was built under R version 4.0.5
microbenchmark::microbenchmark(urutan(vektor),sort(vektor, decreasing = TRUE))## Unit: microseconds
## expr min lq mean median uq max neval
## urutan(vektor) 13.5 15.75 31.313 18.60 42.55 296.5 100
## sort(vektor, decreasing = TRUE) 54.0 56.20 89.530 62.45 110.90 477.5 100
Dari hasil perbandingan di atas diperoleh bahwa mengurutkan dengan fungsi urutan yang telah didefinisikan sendiri lebih bagus daripada dengan menggunakan fungsi sort dari R.
Have a nice day.
Terimakasih.