Tugas Praktikum STA561
Soal 1 : Penjumlahan Deret
Susun sintaks R untuk penjumlahan deret berikut:
\(Z = 1 + 1 + \frac{1}{2} + \frac{1}{3} + \frac{1}{5} + \frac{1}{8} + ...\)
pola deret diatas adalah:
\[
Z = \frac{1}{x_1} + \frac{1}{x_2} + \sum_{i=3}^{\infty} \left(\frac{1}{x_{i-2} + x_{i-1}}\right)
\] langkah-langkah
+ Menentukan dua nilai awal
+ Menentukan maksimal error
+ Menghitung \(Z = \frac{1}{x_1} + \frac{1}{x_2}\)
+ Menghitung elemen berikutnya, \(x_i\) dengan menjumlahkan dua elemen sebelumnya, \(x_{i-2} + x_{i-1}\),
+ Menghitung \(Z= Z + \frac{1}{x_i}\)
Z <- function(awal = c(1,1), maxe = 1e-6 ){
deret <- awal
err <- Inf
while(err > maxe){
nbaru <- sum(tail(deret,2))
deret <- c(deret, nbaru)
err <- 1/nbaru
}
return(sum(1/deret))
}#final result
z <-Z()
z## [1] 3.359884
Soal 2 : Penjumlahan Deret
Susun sintaks R untuk penjumlahan deret berikut:
$Z = 10 - 2 + 0.4 - 0.08 + … $
pola deret diatas adalah: \[ Z = \sum_{i=0}^{\infty} 10 \times \left(-\frac{1}{5} \right)^i \]
Menuliskan rumus fungsi dalam bentuk function
fz <- function(n){
(10)*(-1/5)^n
}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 <- 0Menuliskan 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] 8.333332
Soal 3 : Mengurutkan Data
Buatlah fungsi untuk mengurutkan vektor Berikut dari besar ke kecil. Bandingkan hasilnya dengan mengguakan fungsi sort yang ada di R.
\(X=\) [13, 7, 6, 45, 21, 9, 101, 102]
Algoritma yang dapat digunakan untuk menjawab soal 3 adalah Bubble Sort
Cara 1
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 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] 102 101 45 21 13 9 7 6
Cara 2
fungsi_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
fungsi_urutan(x)## [1] 102 101 45 21 13 9 7 6
Menggunakan fungsi sort di R
x <- c(13,7,6,45,21,9,101,102)
sort(x, decreasing=TRUE)## [1] 102 101 45 21 13 9 7 6