Tugas Praktikum 10-Integral Numerik

Alfi Indah Nurrizqi

2021-11-16

Soal 1

Diketahui pdf (probability density function) dari distirbusi Kumaraswamy adalah sebagai berikut:

\[f\left ( x\mid a,b \right )=abx^{a-1}\left ( 1-x^{\left ( a \right )} \right )^{b-1}\]

dimana \(x\in \left ( 0,1 \right )\). Jika diketahui \(a=5\) dan \(b=3\).

  1. Hitunglah E(X) dengan menggunakan metode Trapezoida untuk n=4, Simpson untuk n=4 dan four-point Gauss Quadrature tanpa menggunakan software apapun.

  2. Jika diketahui nilai exact dari \(E\left ( X \right )=\frac{b\Gamma \left ( 1+\frac{1}{a} \right )\Gamma \left ( b \right )}{\Gamma \left ( 1+\frac{1}{a}+b \right )}\) , metode mana yang paling mendekati untuk menghitung nilai \(E(𝑋)\) dengan toleransi 0.0001? Gunakan R.

Soal 2

Diketahui pdf (probability density function) dari distribusi Eksponensial adalah sebagai berikut:

\[f\left ( x\mid a,b \right )=\lambda e^{-\lambda x}\]

dimana \(x\in \left ( 0,\infty \right )\).

Jika diketahui \(𝜆= 2\). Hitunglah CDF dari distribusi exponensial tersebut untuk \(x = 4\), dengan menggunakan metode Trapezoida, Simpson, Gauss Quadrature dan Monte Carlo dengan R. Metode mana yang paling baik? Silahkan tentukan nilai toleransi, n dan m sendiri.

Jawaban Soal 1

No 1A

Metode Trapezoida Untuk n=4

Diketahui

\[f\left ( x\mid a,b \right )=abx^{a-1}\left ( 1-x^{\left ( a \right )} \right )^{b-1}, a=5, b=3\]

Maka

\[f\left ( x\mid 5,3 \right )=5 \cdot 3 \cdot x^{5-1}\left ( 1-x^{\left ( 5 \right )} \right )^{3-1}\]

\[f\left ( x\mid 5,3 \right )=15 x^{4}\left ( 1-x^{\left ( 5 \right )} \right )^{2}\]

Nilai E(X)

\[E\left ( X \right )=x \cdot f\left ( x\mid 5,3 \right )\]

\[E\left ( X \right )=x \cdot 15 x^{4}\left ( 1-x^{\left ( 5 \right )} \right )^{2}\]

\[E\left ( X \right )=15 x^{5}\left ( 1-x^{\left ( 5 \right )} \right )^{2}\]

Panjang setiap sub interval adalah sebagai berikut :

\[h=\frac{b-a}{n}=\frac{1-0}{4}=\frac{1}{4}\]

Karena \(n=4\) maka bentuk dari metode trapezoidal adalah :

\[T_{4}=\frac{h}{2}\left [ E\left ( X_{0} \right )+2E\left ( X_{1} \right )+2E\left ( X_{2} \right )+2E\left ( X_{3} \right )+E\left ( X_{4} \right ) \right ]\]

Menghitung fungsi \(E(x)\) untuk setiap \(x_{i}\) :

\[E\left ( X_{0} \right )=E\left ( 0 \right )=15 \cdot 0^{5}\left ( 1-0^{\left ( 5 \right )} \right )^{2}=0\]

\[E\left ( X_{1} \right )=E\left ( \frac{1}{4} \right )=15 \cdot \frac{1}{4}^{5}\left ( 1-\frac{1}{4}^{\left ( 5 \right )} \right )^{2}=0.014619841\]

\[E\left ( X_{2} \right )=E\left ( \frac{2}{4} \right )=15 \cdot \frac{2}{4}^{5}\left ( 1-\frac{2}{4}^{\left ( 5 \right )} \right )^{2}=0.439910889\]

\[E\left ( X_{3} \right )=E\left ( \frac{3}{4} \right )=15 \cdot \frac{3}{4}^{5}\left ( 1-\frac{3}{4}^{\left ( 5 \right )} \right )^{2}=2.070616786\]

\[E\left ( X_{4} \right )=E\left ( 1 \right )=15 \cdot 1^{5}\left ( 1-1^{\left ( 5 \right )} \right )^{2}=0\]

Dari perhitungan nilai \(E(X)\) diperoleh nilai \(T_{4}\) :

\[T_{4}=\frac{\left ( \frac{1}{4} \right )}{2}\left [ 0 + 2 \cdot \left ( 0.014619841 \right ) + 2 \cdot \left ( 0.439910889 \right ) + 2 \cdot \left ( 2.070616786 \right ) + 0 \right ]\]

\[T_{4}=\frac{1}{8}\left [ 5.050295033 \right ]\]

\[T_{4}=0.631286879\]

Sehingga,

\[\int_{0}^{1}x\cdot15 x^{4}\left ( 1-x^{\left ( 5 \right )} \right )^{2}\approx T_{4}=0.631286879\]

Metode Simpson Untuk n=4

Diketahui

\[f\left ( x\mid a,b \right )=abx^{a-1}\left ( 1-x^{\left ( a \right )} \right )^{b-1}, a=5, b=3\]

Maka

\[f\left ( x\mid 5,3 \right )=5 \cdot 3 \cdot x^{5-1}\left ( 1-x^{\left ( 5 \right )} \right )^{3-1}\]

\[f\left ( x\mid 5,3 \right )=15 x^{4}\left ( 1-x^{\left ( 5 \right )} \right )^{2}\]

Panjang setiap sub interval adalah sebagai berikut :

\[h=\frac{b-a}{n}=\frac{1-0}{4}=\frac{1}{4}\]

Karena \(n=4\) maka bentuk dari metode simpson adalah :

\[S_{4}=\frac{h}{3}\left [ E\left ( X_{0} \right )+4E\left ( X_{1} \right )+2E\left ( X_{2} \right )+4E\left ( X_{3} \right )+E\left ( X_{4} \right ) \right ]\]

Menghitung fungsi \(E(x)\) untuk setiap \(x_{i}\) :

\[E\left ( X_{0} \right )=E\left ( 0 \right )=15 \cdot 0^{5}\left ( 1-0^{\left ( 5 \right )} \right )^{2}=0\]

\[E\left ( X_{1} \right )=E\left ( \frac{1}{4} \right )=15 \cdot \frac{1}{4}^{5}\left ( 1-\frac{1}{4}^{\left ( 5 \right )} \right )^{2}=0.014619841\]

\[E\left ( X_{2} \right )=E\left ( \frac{2}{4} \right )=15 \cdot \frac{2}{4}^{5}\left ( 1-\frac{2}{4}^{\left ( 5 \right )} \right )^{2}=0.439910889\]

\[E\left ( X_{3} \right )=E\left ( \frac{3}{4} \right )=15 \cdot \frac{3}{4}^{5}\left ( 1-\frac{3}{4}^{\left ( 5 \right )} \right )^{2}=2.070616786\]

\[E\left ( X_{4} \right )=E\left ( 1 \right )=15 \cdot 1^{5}\left ( 1-1^{\left ( 5 \right )} \right )^{2}=0\]

Dari perhitungan nilai \(E(X)\) diperoleh nilai \(T_{4}\) :

\[S_{4}=\frac{\left ( \frac{1}{4} \right )}{3}\left [ 0 + 4 \cdot \left ( 0.014619841 \right ) + 2 \cdot \left ( 0.439910889 \right ) + 4 \cdot \left ( 2.070616786 \right ) + 0 \right ]\]

\[S_{4}=\frac{1}{12}\left [ 9.220768288 \right ]\]

\[S_{4}=0.768397357\]

Sehingga,

\[\int_{0}^{1}15 x^{5}\left ( 1-x^{\left ( 5 \right )} \right )^{2}\approx S_{4}=0.768397357\]

Metode Metode four-point Gauss Quadrature Dengan n=4

Diketahui

\[f\left ( x\mid a,b \right )=abx^{a-1}\left ( 1-x^{\left ( a \right )} \right )^{b-1}, a=5, b=3\]

Maka

\[f\left ( x\mid 5,3 \right )=5 \cdot 3 \cdot x^{5-1}\left ( 1-x^{\left ( 5 \right )} \right )^{3-1}\]

\[f\left ( x\mid 5,3 \right )=15 x^{4}\left ( 1-x^{\left ( 5 \right )} \right )^{2}\]

Karena pada soal yang diinginkan adalah metode four-point gaussian quadratur, berarti nilai n=4. Berdasarkan tabel gaussian quadratur nilai-nilai koefisien dan titik gauss adalah sebagai berikut:

n Koefien Ci Titik Gauss xi
4 \(C_{1} = 0.3478548\) \(x_{1} = -0.861136311\)
\(C_{2} = 0.6521452\) \(x_{2} = -0.339981043\)
\(C_{3} = 0.6521452\) \(x_{3} = 0.339981043\)
\(C_{4} = 0.3478548\) \(x_{4} = 0.861136311\)

Langkah 1

Sebelum kita menggunakan nilai-nilai koefisien dan titik gauss, perlu dilakukan transformasi sehingga domain integral menjadi \([−1,1]\).

\[x=\left ( \frac{t(b-a)+a+b}{2} \right )\]

\[x=\left ( \frac{t(1-0)+1+0}{2} \right )\]

\[x=\left ( \frac{t+1}{2} \right )\]

dan

\[dx=\frac{b-a}{2}dt\]

\[dx=\frac{1-0}{2}dt\]

\[dx=\frac{1}{2}dt\]

Sehingga integralnya menjadi

\[\int_{0}^{1}15 x^{5}\left ( 1-x^{\left ( 5 \right )} \right )^{2}dx=\int_{-1}^{1}15 \left ( \frac{t+1}{2} \right )^{5}\left ( 1-\left ( \frac{t+1}{2} \right )^{\left ( 5 \right )} \right )^{2}\frac{1}{2}dt\]

Langkah 2

Kemudian, kita menggunakan nilai-nilai koefisien dan titik gauss saat \(n=4\)

\[\int_{-1}^{1}15 \left ( \frac{t+1}{2} \right )^{5}\left ( 1-\left ( \frac{t+1}{2} \right )^{\left ( 5 \right )} \right )^{2}\frac{1}{2}dt\approx I\]

\[I=C_{1}E\left ( t_{1} \right )+C_{2}E\left ( t_{2} \right )+C_{3}E\left ( t_{3} \right )+C_{4}E\left ( t_{4} \right )\]

\[I= 0.3478548E(-0.861136311) +0.6521452E( -0.339981043)+0.6521452E( 0.339981043)+0.3478548E( 0.861136311)\]

Menghitung fungsi \(E(x)\) untuk setiap \(x_{i}\) :

\[E\left ( -0.861136311 \right )=\frac{15}{2} \left ( \frac{-0.861136311+1}{2} \right )^{5}\left ( 1-\left ( \frac{-0.861136311+1}{2} \right )^{\left ( 5 \right )} \right )^{2} =1.21019\cdot10^{-5} \]

\[E\left ( -0.339981043 \right )=\frac{15}{2} \left ( \frac{-0.339981043+1}{2} \right )^{5}\left ( 1-\left ( \frac{-0.339981043+1}{2} \right )^{\left ( 5 \right )} \right )^{2} =0.029126407\]

\[E\left ( 0.339981043 \right )=\frac{15}{2} \left ( \frac{0.339981043+1}{2} \right )^{5}\left ( 1-\left ( \frac{0.339981043+1}{2} \right )^{\left ( 5 \right )} \right )^{2} =0.757589241\]

\[E\left ( 0.861136311 \right )=\frac{15}{2} \left ( \frac{0.861136311+1}{2} \right )^{5}\left ( 1-\left ( \frac{0.861136311+1}{2} \right )^{\left ( 5 \right )} \right )^{2} =0.477908858\]

Sehingga,

\[I= 0.3478548 \cdot 1.21019 \cdot 10^{-5} +0.6521452 \cdot 0.029126407 +0.6521452 \cdot 0.757589241+0.3478548 \cdot 0.477908858\] \[I = 0.679299934\]

Diperoleh hasil,

\[\int_{0}^{1}x \cdot 15 x^{4}\left ( 1-x^{\left ( 5 \right )} \right )^{2}dx\approx I=0.679299934\]

No 1B

Nilai Exact

a <- 5
b <- 3
E <- (b*gamma(1+(1/a))*gamma(b))/(gamma(1+(1/a)+b))
E
## [1] 0.7102273

Fungsi E(x)

EX <- function(x){
  x*a*b*x^(a-1)*(1-x^(a))^(b-1)
} 

Metode Trapezoida

Integral menggunakan fungsi oleh user-defined function

trapezoid <- function(ftn, a, b, n = 100) {
     h <- (b-a)/n
     h
     x.vec <- seq(a, b, by = h)
     f.vec <- sapply(x.vec, EX)     # ftn(x.vec)
     Trap <- h*(f.vec[1]/2 + sum(f.vec[2:n]) + f.vec[n+1]/2)
     return(Trap)
}

Menghitung integral menggunakan fungsi trapezoid

trapezoid(EX,0,1,n = 4)
## [1] 0.6312869

Menggunakan R fungsi trapzfun dari package pracma

library(pracma)
trapzfun(EX,0,1,maxit =  4)
## $value
## [1] 0.7098069
## 
## $iter
## [1] 4
## 
## $rel.err
## [1] 0.005901199

Menggunakan R hingga hasil integral mendekati hasil exact-nya dengan toleransi 0.0001

exact_value=0.7102273
tol <-  0.0001
err <- 1
n = 4

while(err>tol){
  res_trap <- trapezoid(EX,0,1,n = n)
  
  err <- abs(res_trap-exact_value)
  
  cat("n=",n,", result=",res_trap,", error=",err,"\n",sep = "")
  
  n=n+1
  if(n==1000){
    break
  }
  
}
## n=4, result=0.6312869, error=0.07894042
## n=5, result=0.6738123, error=0.03641497
## n=6, result=0.6914928, error=0.01873454
## n=7, result=0.6997126, error=0.01051473
## n=8, result=0.7039057, error=0.006321603
## n=9, result=0.7062116, error=0.004015656
## n=10, result=0.7075597, error=0.002667593
## n=11, result=0.7083885, error=0.001838822
## n=12, result=0.7089199, error=0.001307439
## n=13, result=0.7092729, error=0.0009544148
## n=14, result=0.7095147, error=0.000712649
## n=15, result=0.7096846, error=0.0005426739
## n=16, result=0.7098069, error=0.0004204042
## n=17, result=0.7098966, error=0.0003306616
## n=18, result=0.7099637, error=0.0002636072
## n=19, result=0.7100146, error=0.0002127014
## n=20, result=0.7100538, error=0.0001734994
## n=21, result=0.7100844, error=0.0001429188
## n=22, result=0.7101085, error=0.0001187833
## n=23, result=0.7101278, error=9.953088e-05

Metode Simpson

Berikut adalah user-defined function untuk metode Simpson

simpson_n <- function(ftn, a, b, n = 100) {
    n <- max(c(2*(n %/% 2), 4))
    h <- (b-a)/n
    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))
    return(S)
}

Menghitung integral menggunakan metode simpson

simpson_n(EX,0,1,n = 4)
## [1] 0.7683974

Menghitung hasil integral mendekati hasil exact-nya dengan toleransi 0.0001

exact_value=0.7102273
tol <-  0.0001
err <- 1
n = 4

while(err>tol){
  res_simp <- simpson_n(EX,0,1,n = n)
  
  err <- abs(res_simp-exact_value)
  
  cat("n=",n,", result=",res_simp,", error=",err,"\n",sep = "")
  
  n=n+1
  if(n==1000){
    break
  }
  
}
## n=4, result=0.7683974, error=0.05817006
## n=5, result=0.7683974, error=0.05817006
## n=6, result=0.7497082, error=0.03948094
## n=7, result=0.7497082, error=0.03948094
## n=8, result=0.728112, error=0.01788467
## n=9, result=0.728112, error=0.01788467
## n=10, result=0.7188088, error=0.008581532
## n=11, result=0.7188088, error=0.008581532
## n=12, result=0.7147289, error=0.004501593
## n=13, result=0.7147289, error=0.004501593
## n=14, result=0.712782, error=0.002554712
## n=15, result=0.712782, error=0.002554712
## n=16, result=0.711774, error=0.001546662
## n=17, result=0.711774, error=0.001546662
## n=18, result=0.7112144, error=0.0009870756
## n=19, result=0.7112144, error=0.0009870756
## n=20, result=0.7108852, error=0.0006578651
## n=21, result=0.7108852, error=0.0006578651
## n=22, result=0.7106819, error=0.0004545628
## n=23, result=0.7106819, error=0.0004545628
## n=24, result=0.7105511, error=0.0003237819
## n=25, result=0.7105511, error=0.0003237819
## n=26, result=0.710464, error=0.0002366803
## n=27, result=0.710464, error=0.0002366803
## n=28, result=0.7104042, error=0.0001769138
## n=29, result=0.7104042, error=0.0001769138
## n=30, result=0.7103621, error=0.0001348299
## n=31, result=0.7103621, error=0.0001348299
## n=32, result=0.7103318, error=0.0001045198
## n=33, result=0.7103318, error=0.0001045198
## n=34, result=0.7103096, error=8.225045e-05

Metode four-point Gauss Quadrature

Legendre order 4

gL <- gaussLegendre(n = 4,a = 0,1)

Mendefinisikan koefisien gauss point

Ci <- gL$w # koefisien
Ci
## [1] 0.1739274 0.3260726 0.3260726 0.1739274
xi <- gL$x # gauss point
xi
## [1] 0.06943184 0.33000948 0.66999052 0.93056816
I <- sum(Ci * EX(xi))
I
## [1] 0.6792999

Menggunakan R hingga hasil integral mendekati hasil exact-nya dengan toleransi 0.0001

exact_value=0.7102273
tol <-  0.0001
err <- 1
n = 4

while(err>tol){
  
  gL <- gaussLegendre(n = n,a = 0,1)

 Ci <- gL$w # koefisien
 xi <- gL$x # gauss point
  
  res_gl <- sum(Ci * EX(xi))

  err <- abs(res_gl-exact_value)
  
  cat("n=",n,", result=",res_gl,", error=",err,"\n",sep = "")
  
  n=n+1
  if(n==1000){
    break
  }
  
}
## n=4, result=0.6792999, error=0.03092738
## n=5, result=0.707375, error=0.002852279
## n=6, result=0.7101422, error=8.507726e-05

Komparasi Metode (Metode Terbaik)

Komparasi metode bertujuan untuk mengetahui metode manakah yang terbaik

exact <- 0.7102273
etrapUD <- 0.7102273-0.6312869
esimUD <- 0.7683974-0.7102273
egaquUD <- NA
ErrorUserDefine <- rbind(exact, etrapUD,esimUD,egaquUD)
ErrorUserDefine
##              [,1]
## exact   0.7102273
## etrapUD 0.0789404
## esimUD  0.0581701
## egaquUD        NA
exact <- 0.7102273
etrapFR <- 0.7102273-0.7098069
esimFR <- NA
egaquFR <- 0.7102273-0.6792999
ErrorRFunction <- rbind(exact, etrapFR,esimFR,egaquFR)
ErrorRFunction
##              [,1]
## exact   0.7102273
## etrapFR 0.0004204
## esimFR         NA
## egaquFR 0.0309274
exact <- 0.7102273
etrapT <- 0.7102273-0.7101278
esimT <- 0.7103096-0.7102273
egaquT <- 0.7102273-0.7101422
ErrorTolerance <- rbind(exact, etrapT,esimT,egaquT)
ErrorTolerance
##             [,1]
## exact  0.7102273
## etrapT 0.0000995
## esimT  0.0000823
## egaquT 0.0000851
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.0.5
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
Metode <- c("Nilai Exact",
               "Metode Trapezoida (n=4)",
               "Metode Simpson (n=4)",
               "Metode four-point Gauss Quadrature"
)

tibble(hasil <- data.frame(Metode, ErrorUserDefine,ErrorRFunction,ErrorTolerance))
## # A tibble: 4 x 4
##   Metode                           ErrorUserDefine ErrorRFunction ErrorTolerance
##   <chr>                                      <dbl>          <dbl>          <dbl>
## 1 Nilai Exact                               0.710        0.710         0.710    
## 2 Metode Trapezoida (n=4)                   0.0789       0.000420      0.0000995
## 3 Metode Simpson (n=4)                      0.0582      NA             0.0000823
## 4 Metode four-point Gauss Quadrat~         NA            0.0309        0.0000851

Kesimpulan

Berdasarkan hasil perhitungan dari ketiga metode, diperoleh metode yang terbaik metode Simpson untuk n=4 karena memiliki nilai error paling kecil dan mendekati exactnya.

Jawaban Soal 2

Fungsi distribusi kumulatif (CDF) didefinisikan sebagai berikut:

\[F\left ( x \right )=\int_{0 }^{\infty }f\left ( t \right )dt\]

Sehingga, fungsi distribusi kumulatif (CDF) distribusi Eksponensial untuk x=4, jika diketahui λ=2 yaitu:

\[F\left ( x=4\mid \lambda =2 \right )=\int_{0}^{4 }2 e^{-2 t}\]

Nilai Exact

a <- 0
b <- 4
F <- function(t){
  2*exp(-2*t)
}
Fint <- integrate(F, 0, 4)
Fint
## 0.9996645 with absolute error < 1.1e-14

Fungsi

F <- function(t){
  2*exp(-2*t)
}

Kurva F

curve(F,0,4, col="purple")
abline(v=seq(0,4,length.out = 7),col="black",lty=2)

Metode Trapezoida

Menghitung integral untuk \(n=1000\) menggunakan fungsi oleh user-defined function:

trapezoid <- function(ftn, a, b, n = 100) {
     h <- (b-a)/n
     h
     x.vec <- seq(a, b, by = h)
     f.vec <- sapply(x.vec, F)     # ftn(x.vec)
     Trap <- h*(f.vec[1]/2 + sum(f.vec[2:n]) + f.vec[n+1]/2)
     return(Trap)
}
trapezoid(F,0,4,n = 1000)
## [1] 0.9996699

Menggunakan R fungsi trapzfun dari package pracma

trapzfun(F,0,4,maxit =  1000)
## $value
## [1] 0.9996646
## 
## $iter
## [1] 14
## 
## $rel.err
## [1] 5.958465e-08

Menggunakan R hingga hasil integral mendekati hasil exact-nya dengan toleransi 0.0001

exact_value=0.9996645
tol <-  0.0001
err <- 1
n = 1000

while(err>tol){
  res_trap <- trapezoid(Distribusi,0,4,n = n)
  
  err <- abs(res_trap-exact_value)
  
  cat("n=",n,", result=",res_trap,", error=",err,"\n",sep = "")
  
  n=n+1
  if(n==1000){
    break
  }
  
}
## n=1000, result=0.9996699, error=5.368911e-06

Metode Simpson

Menghitung integral untuk \(n=1000\) menggunakan fungsi oleh user-defined function

simpson_n <- function(ftn, a, b, n = 100) {
    n <- max(c(2*(n %/% 2), 4))
    h <- (b-a)/n
    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))
    return(S)
}
simpson_n(F,0,4,n = 1000)
## [1] 0.9996645

Menggunakan R hingga hasil integral mendekati hasil exact-nya dengan toleransi 0.0001

exact_value=0.9996645
tol <-  0.0001
err <- 1
n = 1000

while(err>tol){
  res_simp <- simpson_n(F,0,4,n = n)
  
  err <- abs(res_simp-exact_value)
  
  cat("n=",n,", result=",res_simp,", error=",err,"\n",sep = "")
  
  n=n+1
  if(n==1000){
    break
  }
  
}
## n=1000, result=0.9996645, error=3.739485e-08

Metode Gauss Quadrature

Menggunakan fungsi gaussLegendre dari package pracma dengan \(n=1000\)

gL <- gaussLegendre(n = 1000,a = 0,4)

Mendefinisikan koefisien gauss point

Ci <- gL$w
xi <- gL$x 
I <- sum(Ci * F(xi))
I
## [1] 0.9996645

Menggunakan R hingga hasil integral mendekati hasil exact-nya dengan toleransi 0.0001

exact_value=0.9996645
tol <-  0.0001
err <- 1
n = 1000

while(err>tol){
  
  gL <- gaussLegendre(n = n,a = 0,4)

 Ci <- gL$w # koefisien
 xi <- gL$x # gauss point
  
  res_gl <- sum(Ci * F(xi))

  err <- abs(res_gl-exact_value)
  
  cat("n=",n,", result=",res_gl,", error=",err,"\n",sep = "")
  
  n=n+1
  if(n==1000){
    break
  }
  
}
## n=1000, result=0.9996645, error=3.737209e-08

Metode Monte Carlo

CDF dari suatu distribusi Eksponensial didefinisikan sebagai berikut:

\[F\left ( x=4\mid \lambda =2 \right )=\int_{0}^{4 }2 e^{-2 t}dt\]

x <- 4
lambda <- 2
F <- function(x){
  lambda * exp(-lambda*x)
}
monte_carlo <- function(ftn, a, b,m=1000){
  #Membangkitkan x berdistribusi U(a,b)
  x <- runif(m,a,b)
  # Menghitung rata-rata dari output fungsi
  Gx <- ftn(x)
  Gx_mean <- mean(Gx)
  theta.hat <- (b-a)*Gx_mean
  return(theta.hat)
}
set.seed(123)
int_g <- monte_carlo(F,0, 4,m = 1000)
int_g
## [1] 1.001826

Komparasi Metode (Metode Terbaik)

Berdasarkan user-defined function:

NilaiExact<-0.9996645
TrapezoidaUD<-0.9996699-0.9996645
SimpsonUD<-0.9996645-0.9996645
gaussianUD<-NA
MonteUD<-0.9996645-0.9693147
ErrorUserDefine<-rbind(NilaiExact,TrapezoidaUD,SimpsonUD,gaussianUD,MonteUD)
ErrorUserDefine
##                   [,1]
## NilaiExact   0.9996645
## TrapezoidaUD 0.0000054
## SimpsonUD    0.0000000
## gaussianUD          NA
## MonteUD      0.0303498

Berdasarkan Fungsi dari Package:

NilaiExact<-0.9996645
TrapezoidaF<-0.9996646-0.9996645
SimpsonF<-NA
gaussianF<-0.9996645-0.9996645
MonteF<-NA
ErrorFungsi<-rbind(NilaiExact,TrapezoidaF,SimpsonF,gaussianF,MonteF)
ErrorFungsi
##                  [,1]
## NilaiExact  0.9996645
## TrapezoidaF 0.0000001
## SimpsonF           NA
## gaussianF   0.0000000
## MonteF             NA

Berdasarkan Nilai Toleransi:

NilaiExact<-0.9996645
TrapezoidaToleransi<-0.9996699-0.9996645
SimpsonToleransi<-0.9996645-0.9996645
gaussianToleransi<-0.9996645-0.9996645
MonteToleransi<-NA
ErrorToleransi<-rbind(NilaiExact,TrapezoidaToleransi,SimpsonToleransi,gaussianToleransi,MonteToleransi)
ErrorToleransi
##                          [,1]
## NilaiExact          0.9996645
## TrapezoidaToleransi 0.0000054
## SimpsonToleransi    0.0000000
## gaussianToleransi   0.0000000
## MonteToleransi             NA
library(dplyr)
Nama_Metode <- c("Nilai Exact",
               "Metode Trapezoida (n=1000)",
               "Metode Simpson untuk (n=1000)",
               "Metode four-point Gauss Quadrature",
               "Metode Monte Carlo"
)

tibble(hasil <- data.frame(Nama_Metode, ErrorUserDefine,ErrorFungsi,ErrorToleransi))
## # A tibble: 5 x 4
##   Nama_Metode                        ErrorUserDefine  ErrorFungsi ErrorToleransi
##   <chr>                                        <dbl>        <dbl>          <dbl>
## 1 Nilai Exact                             1.00        1.00            1.00      
## 2 Metode Trapezoida (n=1000)              0.00000540  0.000000100     0.00000540
## 3 Metode Simpson untuk (n=1000)           0          NA               0         
## 4 Metode four-point Gauss Quadrature     NA           0               0         
## 5 Metode Monte Carlo                      0.0303     NA              NA

Berdasarkan perhitungan yang telah dilakukan, dapat disimpulkan bahwa metode terbaik yaitu metode Simpson dengan \(n=1000\) , karena memiliki nilai error yang paling kecil diantara metode yang lainnya.