#fungsi simpson
#konsentrasi obat setalah t jam dinyatakan c(t)10t e ^-0.5t mg/m dengan luas di bawah kurva (auc) dari 0-4 jam menggunakan 1/3 simpson
simpson=function(f,a,b,n){
  h=(b-a)/n
  ganjil = 0
  genap = 0
  for (i in 1:(n-1)) {
    if (i%%2==1){
      ganjil=ganjil +f(a+i*h)
    }else{
      genap = genap +f(a +i*h)
    }
    
  }
  i=h/3*(f(a) +4*ganjil+2*genap+f(b))
  return(i)
}
c=function(t){10*t*exp(-0.5*t)}
simpson(c,0,4,8)
## [1] 23.75731
#beda maju,bda mundur,beda tengah
#titik tenga = x
#titik maju = x+h
#titik mundur = x-h
#konsentrasi polutan c(t)=t^3+2t^2,tentukan turunan 1 dan 2 pada t=2 dengan h= 0,1 gunakan beda maju,mundur,tengah untuk turunan 1
turunan_maju <- function(f, x, h) {
  (f(x + h) - f(x)) / h
}
turunan_mundur <- function(f, x, h) {
  (f(x) - f(x - h)) / h
}
turunan_tengah <- function(f, x, h) {
  (f(x + h) - f(x - h)) / (2 * h)
}
turunan_kedua <- function(f, x, h) {
  (f(x + h) - 2 * f(x) + f(x - h)) / h^2
}
C <- function(t) { t^3 + 2 * t^2 }
turunan_maju(C, 2, 0.1)
## [1] 20.81
turunan_mundur(C, 2, 0.1)
## [1] 19.21
turunan_tengah(C, 2, 0.1)
## [1] 20.01
turunan_kedua(C, 2, 0.1)
## [1] 16
# Pembanding: turunan simbolik
d1 <- D(expression(t^3 + 2 * t^2), "t")
d1
## 3 * t^2 + 2 * (2 * t)
eval(d1, list(t = 2))
## [1] 20
d2 <- D(d1, "t")
d2
## 3 * (2 * t) + 2 * 2
eval(d2, list(t = 2))
## [1] 16