Rafika Damayanti Sururin Nufus
z = 1 + 1 + 1/2 + 1/3 + 1/5 + 1/8 + ⋯
Deret tersebut memiliki nilai yang sama untuk pembilang yaitu 1, untuk bagian penyebut deret tersebut memiliki pola bilangan Fibonacci, yaitu deret angka yang diperoleh dengan menjumlahkan dua angka sebelumnya.
f <- function(n){
fibo=function(n){
x = numeric(n)
x[1:2] = c(1,1)
for(i in 3:n) x[i] = x[i-1] + x[i-2]
return(x)
}
ifelse((n>2),1/fibo(n)[n],1)
}Mendefinisikan kriteria stopping
stopping_criteria <- function(y_current,y_before){
abs(y_current-y_before)
}Mendefinisikan nilai awal
# nilai awal kriteria stopping
error <- 10
# nilai awal deret
z0 <- 0
# nilai awal iterasi
n <- 1Menuliskan iterasi untuk mencari jumlah deret
while (error > 10e-8){
z <- z0 + f(n)
error <- stopping_criteria(z,z0)
z0 <- z
n <- n+1
}
# final result
z## [1] 3.359886
#criteria stopping
error## [1] 6.697766e-08
z = 10-2 +0.4 -0.08 +… Rumus dari deret tersebut adalah:
Menuliskan rumus fungsi dalam bentuk function
f2 <- function(n){
(10*(-1/5)^(n-1))
}Mendefinisikan kriteria stopping
stopping_criteria <- function(y_current,y_before){
abs(y_current-y_before)
}Mendefinisikan nilai awal
# nilai awal kriteria stopping
error <- 10
# nilai awal deret
z0 <- 0
# nilai awal iterasi
n <- 1Menuliskan iterasi untuk mencari jumlah deret
while (error > 10e-8){
z <- z0 + f2(n)
error <- stopping_criteria(z,z0)
z0 <- z
n <- n+1
}
# final result
z## [1] 8.333333
#criteria stopping
error## [1] 4.096e-08
x = [13, 7, 6, 45, 21, 9, 101, 102 ]
x <- c(13,7,6,45,21,9,101,102)
sort_function <- 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)
}
sort_function(x)## [1] 6 7 9 13 21 45 101 102
sort(x)## [1] 6 7 9 13 21 45 101 102
microbenchmark::microbenchmark(sort(x),sort_function(x))## Unit: microseconds
## expr min lq mean median uq max neval
## sort(x) 167.057 169.6235 177.99351 171.334 173.90 421.350 100
## sort_function(x) 27.938 28.5080 31.90643 31.359 33.64 66.139 100