Turunannya memberi tahu Anda bagaimana suatu fungsi berubah secara lokal. Anti-turunan mengumpulkan nilai-nilai lokal tersebut untuk memberi Anda nilai global; ia mempertimbangkan tidak hanya properti lokal dari fungsi pada satu nilai masukan tertentu tetapi juga nilai pada rentang masukan.
Ingatlah bahwa turunan dari \(f\) itu sendiri adalah sebuah fungsi, dan fungsi tersebut memiliki argumen yang sama dengan \(f\). Jadi, karena f(x)didefinisikan memiliki argumen bernama x, fungsi yang dibuat oleh D(f(x) ~ x)juga memiliki argumen bernama x(dan parameter lain apa pun yang terlibat)
Dalam R Studio, Anda dapat menghitung integral menggunakan metode Trapezoid, Simpson, dan Gauss Quadrature dengan menggunakan paket-paket yang tersedia. Berikut adalah cara menggunakan ketiga metode ini dalam R Studio:
trapezoid <- function(ftn, a, b, n, toleransi = 0.0001, ...){
result <- data.frame(n=NULL, result=NULL, error=NULL)
e <- 1
# proses memperoleh nilai exact
exact <- integrate(ftn, a, b, ...)
while(e > toleransi){
# proses perhitungan trapezoid
h <- (b-a)/n
x.vec <- seq(a, b, by=h)
f.vec <- sapply(x.vec, ftn, ...)
Z <- h*(f.vec[1]/2 + sum(f.vec[2:n]) + f.vec[n+1]/2)
# menampilkan nilai akhir
e <- abs(Z-exact$value)
result <- rbind(result, data.frame(n=n, result=Z, error=e))
n <- n+1
}
result
}
2.Metode Simpson
simpson <- function(ftn, a, b, n, toleransi = 0.0001, ...){
result <- data.frame(n=NULL, result=NULL, error=NULL)
e <- 1
# proses memperoleh nilai exact
exact <- integrate(ftn, a, b, ...)
while(e > toleransi){
# proses perhitungan simpson
n_s <- max(c(2*(n %/% 2), 4))
h <- (b-a)/n_s
x.vec1 <- seq(a+h, b-h, by = 2*h) # ganjil
x.vec2 <- seq(a+2*h, b-2*h, by = 2*h) # genap
f.vec1 <- sapply(x.vec1, ftn, ...) # ganjil
f.vec2 <- sapply(x.vec2, ftn, ...) # genap
S <- h/3*(ftn(a, ...) + ftn(b, ...) + 4*sum(f.vec1) + 2*sum(f.vec2))
# menampilkan nilai akhir
e <- abs(S-exact$value)
result <- rbind(result, data.frame(n=n, result=S, error=e))
n <- n+1
}
result
}
gauss_quadrature <- function(ftn, a, b, n, toleransi = 0.0001, ...){
result <- data.frame(n=NULL, result=NULL, error=NULL)
e <- 1
# proses memperoleh nilai exact
exact <- integrate(ftn, a, b, ...)
while(e > toleransi){
# proses mendapatkan koefisien dan titik gauss
eval(parse(text=paste0("gL <- gaussLegendre(n, a=", a, ",", b, ")")))
C_i <- gL$w # koefisien
x_i <- gL$x # gauss point
I <- sum(C_i * ftn(x_i, ...))
# menampilkan nilai akhir
e <- abs(I-exact$value)
result <- rbind(result, data.frame(n=n, result=I, error=e))
n <- n+1
}
result
}
Anda dapat mengganti fungsi f, nilai a, dan b sesuai dengan fungsi yang ingin Anda integrasikan dan batas integral yang diperlukan.
Semua metode ini akan menghasilkan hasil integral untuk fungsi yang Anda tentukan dengan tingkat akurasi tertentu. Anda dapat mengatur jumlah node atau titik evaluasi dalam metode Gauss Quadrature sesuai dengan kebutuhan akurasi Anda.