1a. Fungsi Eksponensial (Maclaurin)

faktorial <- function(x){
  fakt <- 1
  if(x <= 0){
    return(1)
  }else{
    for(i in 1:x){
      fakt <- fakt*i
    }
    return(fakt)
  }
}


exp_maclaurin <- function(x, n) {
  hasil <- 0
  
  for (i in 0:n) {
    hasil <- hasil + (x^i) / faktorial(i)
  }
  
  return(hasil)
}

# Contoh
exp_maclaurin(-1, 5)
## [1] 0.3666667

1b. Fungsi sin(x) (Maclaurin)

sin_maclaurin <- function(x) {
  sum <- x
  i <- 1
  
  suku <- (x^(2*i + 1)) / faktorial(2*i + 1)
  
  while(abs(suku) > 10^(-5)) {
    sum <- sum + (-1)^i * suku
    
    i <- i + 1
    suku <- (x^(2*i + 1)) / faktorial(2*i + 1)
  }
  
  return(sum)
}

# Contoh
sin_maclaurin(pi/6)
## [1] 0.5000021

2. Moving Average (k = 3)

moving_average <- function(data) {
  n <- length(data)
  hasil <- rep(NA, n)
  
  for (t in 3:n) {
    hasil[t] <- (data[t] + data[t-1] + data[t-2]) / 3
  }
  
  return(hasil)
}

# 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)

# Hitung
ma <- moving_average(data)

# Output
data.frame(
  t = 1:length(data),
  Data = data,
  Mt3 = round(ma, 2)
)

```