#NAMA: ALINEA AUFKLARUNG
#NRP: 5003251152
#KELAS: D


# Soal 1
# 1a

eksponensial <- function(x, n){
  sum <- 1
  for(i in 1:n){
    sum <- sum + x^i/factorial(i)
  }
  return(sum)
}

eksponensial(-1, 5)
## [1] 0.3666667
# 1b

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

sin_function <- function(x){
  sum <- x
  
  i <-  1
  suku  <- 1

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

sin_function(pi/6)
## [1] 0.5
# Soal 2

moving_average <- function(data, k = 3) {
  n <- length(data)
  result <- numeric(n - k + 1)
  
  for (i in k:n) {
    result[i - k + 1] <- mean(data[(i - k + 1):i])
  }
  
  return(round(result, 2))
}

# 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
moving_average(data, 3)
##  [1] 5.07 6.00 6.63 6.03 5.63 5.30 6.13 5.80 5.87 5.20