Susunlah sintaks R untuk penjumlahan deret berikut!
z = 1 + 1 + 1/2 + 1/3 + 1/5 + 1/8 + ...
Deret diatas merupakan deret Reciprocal Fibonacci Constant, dimana nilai penyebutnya 1, dan pembilangnya hasil penjumlahan dari dua angka sebelumnya.
Untuk menjawab soal diatas maka akan dilakukan tahapan-tahapan sebagai berikut:
Adapun sintaks yang digunakan adalah sebagai berikut:
#menuliskan rumus dalam bentuk function
fz1 <- function(n){
penyebut = c()
Un = c()
penyebut[1] = 1
penyebut[2] = 1
Un[1] = 1/1
Un[2] = 1/1
if (n<3) {
return(Un[n])
}
else {
for (i in 3:n) {
penyebut[i] = penyebut[i-2] + penyebut[i-1]
Un[i] = 1/penyebut[i]
}
return(Un[i])
}
}
#mendefinisikan kriteria stopping
stopping_criteria <- function(y_current,y_before){
abs(y_current-y_before)
}
#mendefinisikan nilai-nilai awal
#nilai awal kriteria stopping
error <- 10
#nilai awal deret
z0 <- 0
# nilai awal iterasi
n <- 1
#Menuliskan iterasi dalam bentuk deret
while (error>0.00001) {
z <- z0 + fz1(n)
error <- stopping_criteria(z,z0)
z0 <- z
n <- n+1
}
#final result
z
## [1] 3.359872
Berdasarkan hasil perhitungan diatas maka di peroleh hasil jumlah dari deret Reciprocal Fibonacci Constant dengan suku pertama dan kedua 1 adalah sebesar = 3.359872
Susunlah sintaks R untuk penjumlahan deret berikut!
Z = 10 - 2 + 0.4 - 0.08 + ...
Untuk menjawab soal diatas maka akan dilakukan tahapan-tahapan sebagai berikut:
menuliskan rumus dalam bentuk fungssi, adapun rumus fungsi deret tersebut adalah:
Z= ((-1)^(n+1))*10*(0.2^(n-1)) mendefinisikan kriteria stopping
Mendefinisikan nilai-nilai awal
menuliskan iterasi dalam bentuk deret
Hasil Akhir.
Adapun sintaks yang digunakan adalah sebagai berikut:
#menuliskan rumus dalam bentuk function
fz2 <- function(n){
((-1)^(n+1))*10*(0.2^(n-1))
}
#mendefinisikan kriteria stopping
stopping_criteria <- function(y_current,y_before){
abs(y_current-y_before)
}
#mendefinisikan nilai-nilai awal
#nilai awal kriteria stopping
error <- 10
#nilai awal deret
z0 <- 0
# nilai awal iterasi
n <- 1
#Menuliskan iterasi dalam bentuk 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
Berdasarkan hasil perhitungan diatas diperoleh jumlah total dari deret Z adalah 8.333332
Buatlaah fungsi untuk mengurutkan vektor berikut dari besar ke kecil, bandingkan hasilnya dengan menggunakan fungsi sort yang ada di R.
X = [13,76,45,21,9,101,102]
Untuk menjawab pertanyaan diatas maka akan dilakukan dengan tahapan-tahapan sebafai berikut:
Adapun sintaks yang digunakan adalah sebagai berikut:
# menginput deret bilangan
x <- c(13,7,6,45,21,9,101,102)
# mendefinisikan objek baru yang akan digunakan untuk menampilkan hasil sortir
x_sort <- x
#jumlah amatan
n_x <- length(x)
#iterasi tingkat 1
for(i in 1:(n_x-1)){
#iterasi tingkat 2
for(j in 1:(n_x-i)) {
# Pemeriksaan kondisi apakah elemen ke-j+1 lebih besar dari elemen ke-j
if(x_sort[j+1] > x_sort[j]) {
# jika terpenuhi
#Buat tempat sementara untuk menyimpan elemen ke-j yang akan ditukar
tmp <- x_sort[j]
# Ganti nilai elemen ke-j dengan nilai yang ada pada elemen ke j+1
x_sort[j] <- x_sort[j+ 1]
# Ganti nilai elemen j+1 dengan nilai yang ada dalam objek temp
x_sort[j+1] <- tmp
}
}
}
#Hasil sort
x_sort
## [1] 102 101 45 21 13 9 7 6
#menggunakan fungsi sort di R
sort(x,decreasing = TRUE)
## [1] 102 101 45 21 13 9 7 6
Berdasarkan kedua hasil diatas dapat dilihat bahwa sorting yang dilakukan dengan sintaks manual menghasilkan urutan yang sama dengan ketika data dishorting dengan menggunakan fungsi sort yang tersedia di R.