#1a - Mendapaktan nilai eksponensial dengan pendekatan deret Maclaurin
exp_maclaurin <- function(x, n) {
total_exp <- 0
for (i in 0:n) {
suku <- (x^i) / factorial(i)
total_exp <- total_exp + suku
}
return(total_exp)
}
# Pengujian fungsi sesuai contoh (x = -1, n = 5)
x_1a <- -1
n_1a <- 5
hasil_1a <- exp_maclaurin(x_1a, n_1a)
print(hasil_1a)
## [1] 0.3666667
#1b - Mendapatkan nilai sin(x) dengan pendekatan deret Maclaurin
sin_maclaurin <- function(x) {
total_sin <- 0
n <- 0
lanjut <- TRUE
while (lanjut) {
orde <- 2 * n + 1
komponen <- ((-1)^n * (x^orde)) / factorial(orde)
if (abs(komponen) < 1e-5) {
lanjut <- FALSE
} else {
total_sin <- total_sin + komponen
n <- n + 1
}
}
return(total_sin)
}
# Pengujian fungsi sesuai contoh (x = pi/6)
x_1b <- pi / 6
hasil_1b <- sin_maclaurin(x_1b)
print(hasil_1b)
## [1] 0.5000021
#2 - Menghitung rata-rata bergerak suatu data
moving_average <- function(data, k) {
n <- length(data)
Mt <- rep(NA, n)
for (t in k:n) {
jumlah <- 0
for (i in (t-k+1):t) {
jumlah <- jumlah + data[i]
}
Mt[t] <- jumlah / k
}
return(Mt)
}
#Pengujian fungsi sesuai contoh data
data <- c(4.1, 4.9, 6.2, 6.9, 6.8, 4.4, 5.7, 5.8, 6.9, 4.7, 6.0, 4.9)
hasil_2 <- moving_average(data, 3)
data.frame(
t = 1:length(data),
Data = data,
Mt_3 = round(hasil_2, 2)
)
## t Data Mt_3
## 1 1 4.1 NA
## 2 2 4.9 NA
## 3 3 6.2 5.07
## 4 4 6.9 6.00
## 5 5 6.8 6.63
## 6 6 4.4 6.03
## 7 7 5.7 5.63
## 8 8 5.8 5.30
## 9 9 6.9 6.13
## 10 10 4.7 5.80
## 11 11 6.0 5.87
## 12 12 4.9 5.20