# =============================================================
# Nama : Aila Rahima Qanita Heruningtyas
# NRP  : 5003251056
# Kelas: D
# =============================================================
#No 1a.

exp_maclaurin <- function (x, n){
  i <- 0:n
  a <- (x^i) / factorial(i)
  nilai <- sum(a)
  
  return(nilai)
  
}
#Check
exp_maclaurin(-1, 5)
## [1] 0.3666667
#No 1b.

sin_maclaurin <- function(x){
  batas <- 10^-5
  hasil <- 0
  i <- 0
  nilai_awal <- 1
  
  while (nilai_awal >= batas) {
    pangkat <- (2*i) + 1
    nilai_awal <- abs((x^pangkat) / factorial(pangkat))
    tanda <- (-1)^i
    
    if (nilai_awal >= batas) {
       hasil_hitung <-   hasil <- hasil + (tanda * (x^pangkat) / factorial(pangkat))
    }
  
  i <- i + 1
  
  }
  
  return (hasil)
  
}
#Check
sin_maclaurin(pi / 6)
## [1] 0.5000021
#No 2

t <- c(1,2,3,4,5,6,7,8,9,10,11,12)
data <- c(4.1, 4.9, 6.2, 6.9, 6.8, 4.4, 5.7, 5.8, 6.9, 4.7, 6, 4.9 )

df_data <- data.frame(
  t = t,
  data = data
)

hitung_rata2_bergerak <- function(df, kolom, k){
  
n <- nrow(df)

df$rata2_bergerak <- NA

nilai <- df[[kolom]]

i <- k

while (i <= n){
  banyakdata <- nilai[(i- k + 1) : i]
  
  df$rata2_bergerak[i] <- mean(banyakdata)
  
  i <- i + 1
}

return(df)
}

#check
df_hasil <- hitung_rata2_bergerak(df_data, "data", k=3)

df_hasil$rata2_bergerak <- round(df_hasil$rata2_bergerak, 2)
print(df_hasil)
##     t data rata2_bergerak
## 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