Soal Latihan
- Misalkan saja ada sebuah vektor \(x=[3,1,4,1,5,9,2,6,5]\), buat program untuk mengurutkan vektor tersebut dari kecil ke besar, kemudian bandingkan hasilnya dengan fungsi
sort! Gunakan algoritme pada slide kuliah ke-16 !
Jawaban:
Untuk melakukan pengurutan, iterasi yang akan digunakan terdiri dari dua tingkat,
iterasi untuk memastikan semua elemen diperiksa
Iterasi untuk mengakses elemen-elemen vektor yang digunakan untuk penukaran antar elemen
Pada iterasi tingkat kedua nilai-nilai yang besar akan semakin terdorong ke-belakang sehingga elemen-elemen belakang vektor tidak perlu diperiksa lagi. Misal pada saat iterasi tingkat pertama sama dengan 3 maka elemen yang akan dibandingkan hanya dari element 1 sampai 7 saja (ingat ada j+1). Semakin meningkat iterasi tingkat 1 maka banyaknya iterasi tingkat 2 semakin mengecil (pada kasus ini diakomodir dengan n_x-i).
x <- c(3,1,4,1,5,9,2,6,5)
# 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 kecil 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
}
}
}
x_sort## [1] 1 1 2 3 4 5 5 6 9
## [1] 1 1 2 3 4 5 5 6 9
- Berdasarkan jawaban nomor 1, Buatlah fungsi yang bernama
fungsi_urutandengan yang memiliki inputxdan outputnya merupakan vector yang sudah terurut!
## [1] 1 1 2 3 4 5 5 6 9
- Susunlah sintaks R untuk penjumlahan deret berikut!
\(z = 2-\frac{6}{5}+\frac{8}{10}-\frac{10}{17}+\frac{12}{26}-...\)
hint: Cari terlebih dahulu formula/rumus dari deret tersebut
Jawaban:
Rumus dari deret tersebut adalah
\(z= \Sigma_{n=1}^{\infty} (-1)^{n+1} \frac{2n+2}{n^{2}+1}\)
- Menuliskan rumus fungsi dalam bentuk function
- 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] 1.267197
## [1] 1e-05
- Susunlah sintaks R untuk penjumlahan deret berikut!
\(z = \frac{2}{5}+\frac{3}{40}+\frac{6}{135}+\frac{11}{320}+\frac{18}{625}+\frac{27}{1080}+...\)
hint: Cari terlebih dahulu formula/rumus dari deret tersebut
Jawaban:
Rumus dari deret tersebut adalah
$z= _{n=1}^{} $
- Menuliskan rumus fungsi dalam bentuk function
- 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] 2.159406
## [1] 1e-05