Integral

# Contoh Soal 1 (Metode Trapesium)
trapesium<-function(f,a,b,n) {
  h<-(b-a)/n #lebar pias
  jumlah<-0
  for(i in 1:(n-1)) {
    jumlah<-jumlah+f(a+i*h) #f(x1)+...+f(x(n-1))
  }
  I<-h/2*(f(a)+2*jumlah+f(b))
  return(I)
}
f<-function(t) {2*t^2+1}
trapesium(f,0,6,6)
## [1] 152
# Contoh Soal 2 (Metode Simpson 1/3)
simpson<-function(f,a,b,n) {
  h<-(b-a)/n #lebar pias (n harus genap)
  ganjil<-0
  genap<-0
  for(i in 1:(n-1)) {
    if(i%%2==1) {
      ganjil<-ganjil+f(a+i*h) #i=1,3,5..
    } else {
      genap<-genap+f(a+i*h) #i=2,4,6,...
    }
  }
  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

Fungsi Derivatif/Turunan

# Contoh Soal 3
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

Interpolasi

# Contoh Soal 4
interpolasi_linear <- function(x, y, x_target) { 
  if (x_target < min(x) || x_target > max(x)) {
    stop("Nilai target berada di luar rentang x")
  }
  
  # Cari dua titik x yang mengapit x_target
  for (i in 1:(length(x) - 1)) {
    if (x[i] <= x_target && x_target <= x[i + 1]) {
 # Lakukan interpolasi linier
 x1 <- x[i]
 x2 <- x[i + 1]
 y1 <- y[i]
 y2 <- y[i + 1]
 # Formula interpolasi linier
 y_target <- y1 + (y2 - y1) * ((x_target - x1) / (x2 - x1))
 return(y_target)
    }
  }
}

# Contoh data Z dan probabilitas
z_tabel <- c(-1.96, -1.64, -1.28, 0, 1.28, 1.64, 1.96)
alfa <- c(0.025, 0.05, 0.1, 0.5, 0.9, 0.95, 0.975)
# Target probabilitas yang ingin diinterpolasi
target_alfa <- 0.05

# Panggil fungsi interpolasi linier manual
z_estimate <- interpolasi_linear(alfa, z_tabel, target_alfa)

# Menampilkan hasil
z_estimate
## [1] -1.64