susunlah sintaks R untuk penjumlahan deret berikut! z=1+1+1/2+1/3+1/5+1/8+…
Jawaban
#mendefinisikan nilai- nilai awal
p = 1
q = 1
#nilai iterasi
n = 1
#nilai awal
x = 0
#error
e = 1
while(e > 10^(-5)){
if(n==1){
y = x + 1/p
x = y
}
else if(n==2){
y = x + 1/q
x = y
}
else{
r = p+q
p = q
q = r
y = x + 1/r
e = abs(y-x)
}
x = y
n = n+1
}
y
## [1] 3.359872
Susunlah sintaks R untuk penjumlahan deret berikut ! Z = 10-2+0,4-0,08+…
jawaban
#mendefinisikan nilai-nilai awal
i = 1
z = 10
error = 1
z0 = 0
while (error > 10^(-10)){
a = (-1)^(i+1)
z1 = z0 + a*z #suku beikutnya
z = z/5
error = abs(z1-z0)
i = i + 1
z0 = z1
}
z1
## [1] 8.333333
Buat lah 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]
jawaban
set.seed(8)
x <- c(13,7,6,45,21,9,101,102)
urutan<- function(x){
n_x <- length(x)
for(i in 1:(n_x-1)){
for(j in 1:(n_x-i)) {
if(x[j+1] > x[j]) {
tmp <- x[j]
x[j] <- x[j+ 1]
x[j+1] <- tmp
}
}
}
return(x)
}
#mencoba menerapkan fungsi urutan
urutan(x)
## [1] 102 101 45 21 13 9 7 6
setelah dibuat fungsi untuk mengurutkan data x dari data terbesar ke terkecil, diperoleh output seperti diatas, dan kemudian dibandingkan fungsi urutan yng dibuat dengan fungsi sort,sebagai berikut:
set.seed(8)
#perbandingan dengan sort
microbenchmark::microbenchmark(sort(x),urutan(x))
## Warning in microbenchmark::microbenchmark(sort(x), urutan(x)): less accurate
## nanosecond times to avoid potential integer overflows
## Unit: microseconds
## expr min lq mean median uq max neval
## sort(x) 12.177 12.751 14.05685 12.956 13.325 109.101 100
## urutan(x) 3.198 3.362 3.56823 3.485 3.649 7.585 100
berdasarkan hasil perbandingan pada fungsi urutan yang dibuat dengan fungsi sort diperoleh nilai rata-rata fungsi urutan lebih kecil dari fungsi sort , yang berart menunjukkan bahwa fungsi yag dibuat lebih efisien waktu dibandingkan dengan fungsi sort.