maclaurin_exp <- function(x, n) {
  hasil <- 0
  for (k in 0:n) {
    hasil <- hasil + (x^k) / factorial(k)
  }
  return(hasil)
}

maclaurin_sin <- function(x) {
  hasil <- 0
  k <- 0
  repeat {
    komponen <- ((-1)^k) * (x^(2*k+1)) / factorial(2*k+1)
    hasil <- hasil + komponen
    if (abs(komponen) < 1e-5) {
      break
    }
    k <- k + 1
  }
  return(hasil)
}
cat("exp(-1) orde 5 =", maclaurin_exp(-1, 5), "\n")
## exp(-1) orde 5 = 0.3666667
cat("sin(pi/6) ≈", maclaurin_sin(pi/6), "\n")
## sin(pi/6) ≈ 0.5
moving_average <- function(data, k = 3) {
  n <- length(data)
  hasil <- rep(NA, n) 
  for (t in k:n) {
    hasil[t] <- mean(data[(t-k+1):t])
  }
  return(hasil)
}


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)

Mt3 <- moving_average(data, k = 3)

hasil <- data.frame(
  t = 1:length(data),
  Data = data,
  M_t3 = round(Mt3, 2)
)

print(hasil)
##     t Data M_t3
## 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

```