Tugas STA561 Pertemuan 10
Soal 1
Diketahui pdf (probability density function) dari distirbusi Kumaraswamy adalah sebagai berikut :
\(f(x|a,b) = abx^{a-1}(1-x^{a})^{b-1} \text{ , dimana } x \in (0,1)\)
Jika diketahui \(a=5\) dan \(b=3\)
a. Menghitung Nilai Harapan Secara Manual
Hitunglah \(E(X)\) dengan menggunakan metode Trapezoida untuk \(n=4\), Simpson untuk \(n=4\) dan four-point Gauss Quadrature secara manual :
\(E(X) = \int_{0}^{1}15x^{5}(1-x^{5})^{2}dx\)
dimana, \(f(x) = 15x^{5}(1-x^{5})^{2}\)
Metode Trapezoida
Dengan \(n=4\) maka :
\(E(X) = \frac{h}{2}(f(x_{0})+2f(x_{1})+2f(x_{2})+2f(x_{3})+f(x_{4})) \text{ , dengan } X=0, 0.25, 0.5, 0.75, 1\)
\[\begin{align} h &= \frac{x_{n}-x_{0}}{n}=\frac{1-0}{4}=0.25 \\ f(x_{0}) &= 15(0)^{5}(1-(0)^{5})^{2}=0 \\ f(x_{1}) &= 15(0.25)^{5}(1-(0.25)^{5})^{2}=0.01461984 \\ f(x_{2}) &= 15(0.5)^{5}(1-(0.5)^{5})^{2}=0.4399109 \\ f(x_{3}) &= 15(0.75)^{5}(1-(0.75)^{5})^{2}=2.070617 \\ f(x_{4}) &= 15(1)^{5}(1-(1)^{5})^{2}=0 \\ \end{align}\]
\[\begin{equation} \begin{split} E(X) &= \int_{0}^{1}15x^{5}(1-x^{5})^{2} dx \\ &= \frac{h}{2}(f(x_{0})+2f(x_{1})+2f(x_{2})+2f(x_{3})+f(x_{4})) \\ &= \frac{0.25}{2}(0+2(0.01461984)+2(0.4399109)+2(2.070617)+0) \\ & = \frac{0.25}{2}(5.050295) \\ & = 0.6312869 \end{split} \end{equation}\]
Metode Simpson
Dengan \(n=4\) maka :
\(E(X) = \frac{h}{3}(f(x_{0})+4f(x_{1})+2f(x_{2})+4f(x_{3})+f(x_{4})) \text{ , dengan } X=0, 0.25, 0.5, 0.75, 1\)
\[\begin{align} h &= \frac{x_{n}-x_{0}}{n}=\frac{1-0}{4}=0.25 \\ f(x_{0}) &= 15(0)^{5}(1-(0)^{5})^{2}=0 \\ f(x_{1}) &= 15(0.25)^{5}(1-(0.25)^{5})^{2}=0.01461984 \\ f(x_{2}) &= 15(0.5)^{5}(1-(0.5)^{5})^{2}=0.4399109 \\ f(x_{3}) &= 15(0.75)^{5}(1-(0.75)^{5})^{2}=2.070617 \\ f(x_{4}) &= 15(1)^{5}(1-(1)^{5})^{2}=0 \\ \end{align}\]
\[\begin{equation} \begin{split} E(X) &= \int_{0}^{1}15x^{5}(1-x^{5})^{2} dx \\ &= \frac{h}{3}(f(x_{0})+4f(x_{1})+2f(x_{2})+4f(x_{3})+f(x_{4})) \\ &= \frac{0.25}{3}(0+4(0.01461984)+2(0.4399109)+4(2.070617)+0) \\ & = \frac{0.25}{3}(9.220768) \\ & = 0.7683974 \end{split} \end{equation}\]
Metode Gauss Quadrature
\(\int_{a}^{b}f(x)dx = \int_{-1}^{1} f(\frac{b-a}{2}\xi+\frac{a+b}{2})\frac{dx}{d\xi} d\xi\)
\(\text{dengan }\frac{dx}{d\xi} = \frac{b-a}{2}\)
Pendekatan Gauss Quadrature dengan \(n\) point :
\(\int_{a}^{b}f(x)dx = \frac{b-a}{2} \sum_{i=1}^{n} w_{i} f(\frac{b-a}{2}\xi_{i}+\frac{a+b}{2})\)
Pada metode ini akan digunakan four-point Gauss Quadrature, berikut nilai \(\xi_{i}\) dan \(w_{i}\) untuk \(n=4\) :
\[\begin{align} \xi_{1}&=-\sqrt{\frac{3}{7}-\frac{2}{7}\sqrt{\frac{6}{7}}} = -0.339981 & w_{1} &=\frac{18+\sqrt{30}}{36} = 0.6521452 \\ \xi_{2}&=\sqrt{\frac{3}{7}-\frac{2}{7}\sqrt{\frac{6}{7}}} = 0.339981 & w_{2} &=\frac{18+\sqrt{30}}{36} = 0.6521452 \\ \xi_{3}&=-\sqrt{\frac{3}{7}+\frac{2}{7}\sqrt{\frac{6}{7}}} = -0.8611363 & w_{3} &=\frac{18-\sqrt{30}}{36} = 0.3478548 \\ \xi_{4}&=\sqrt{\frac{3}{7}+\frac{2}{7}\sqrt{\frac{6}{7}}} = 0.8611363 & w_{4} &=\frac{18-\sqrt{30}}{36} = 0.3478548 \end{align}\]
\[\begin{equation} \begin{split} E(X) &= \int_{0}^{1}15x^{5}(1-x^{5})^{2} dx \\ &= \frac{b-a}{2}(w_{1}f(\frac{b-a}{2}\xi_{1}+\frac{a+b}{2})+w_{2}f(\frac{b-a}{2}\xi_{2}+\frac{a+b}{2})+w_{3}f(\frac{b-a}{2}\xi_{3}+\frac{a+b}{2})+w_{4}f(\frac{b-a}{2}\xi_{4}+\frac{a+b}{2})) \\ &= \frac{1-0}{2}(w_{1}f(\frac{1-0}{2}\xi_{1}+\frac{0+1}{2})+w_{2}f(\frac{1-0}{2}\xi_{2}+\frac{0+1}{2})+w_{3}f(\frac{1-0}{2}\xi_{3}+\frac{0+1}{2})+w_{4}f(\frac{1-0}{2}\xi_{4}+\frac{0+1}{2})) \\ &= \frac{1}{2}(w_{1}f(\frac{1}{2}\xi_{1}+\frac{1}{2})+w_{2}f(\frac{1}{2}\xi_{2}+\frac{1}{2})+w_{3}f(\frac{1}{2}\xi_{3}+\frac{1}{2})+w_{4}f(\frac{1}{2}\xi_{4}+\frac{1}{2})) \\ &= \frac{1}{2}(0.6521452f(0.3300095)+0.6521452f(0.6699905)+0.3478548f(0.06943185)+0.3478548f(0.9305682)) \\ &= \frac{1}{2}(0.6521452(0.05825283)+0.6521452(1.515178)+0.3478548(0.000024)+0.3478548(0.9558169)) \\ &= \frac{1}{2}(1.358599) \\ & = 0.6792997 \end{split} \end{equation}\]
b. Menghitung Nilai Harapan dengan Fungsi di R
Jika diketahui nilai exact dari \(E(X)=\frac{b\Gamma(1+\frac{1}{a})\Gamma(b)}{\Gamma(1+\frac{1}{a}+b)}\) , metode mana yang paling mendekati untuk menghitung nilai \(E(X)\) dengan toleransi 0.0001?
Menghitung nilai exact :
a <- 5
b <- 3
exact_value=(b*gamma(1+(1/a))*gamma(b))/(gamma(1+(1/a)+b))
exact_value## [1] 0.7102273
Fungsi \(E(X)\) buatan pengguna pada R :
f <- function(x){15*(x^5)*((1-(x^5))^2)}Metode Trapezoida
trapezoid <- function(ftn, a, b, n = 100) {
h <- (b-a)/n
x.vec <- seq(a, b, by = h)
f.vec <- sapply(x.vec, ftn) # ftn(x.vec)
Trap <- h*(f.vec[1]/2 + sum(f.vec[2:n]) + f.vec[n+1]/2)
return(Trap)
}
tol <- 0.0001
err <- 1
n = 2
while(err>tol){
res_trap <- trapezoid(f,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_trap <- n
err_trap <- err
res_trap## [1] 0.7101278
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)
}
tol <- 0.0001
err <- 1
n <- 2
f <- function(x){15*(x^5)*((1-(x^5))^2)}
while(err>tol){
res_simp <- simpson_n(f,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_simp <- n
err_simp <- err
res_simp## [1] 0.7103096
Metode Gauss Quadrature
library(polynom)
library(orthopolynom)
library(gaussquad)
library(pracma)##
## Attaching package: 'pracma'
## The following object is masked from 'package:polynom':
##
## integral
f <- function(x){15*(x^5)*((1-(x^5))^2)}
tol <- 0.0001
err <- 1
n <- 2
while(err>tol){
gL <- gaussLegendre(n = n,a=0,b=1)
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_gl <- n
err_gl <- err
res_gl## [1] 0.7101422
Rangkuman Hasil Penghitungan Nilai Harapan
Metode <- c('Trapezoida','Simpson','Gauss Quadrature')
Hasil <- c(res_trap,res_simp,res_gl)
Error <- c(err_trap,err_simp,err_gl)
n <- c(n_trap,n_simp,n_gl)
res_fin <- data.frame(Metode,Hasil,Error,n)
res_finDari perbandingan 3 metode di atas dapat disimpulkan metode Simpson menghasilkan error yang paling kecil.
Soal 2
Diketahui pdf (probability density function) dari distirbusi Eksponensial adalah sebagai berikut :
\(f(x|a,b) = \lambda e^{-\lambda x} \text{ , dimana } x \in (0,\infty)\)
Jika diketahui \(\lambda=2\), hitunglah CDF dari distribusi exponensial tersebut untuk \(x=4\), dengan menggunakan metode Trapezoida, Simpson, Gauss Quadrature dan Monte Carlo. Metode mana yang paling baik.
PDF dengan \(\lambda=2\) :
\(f(x) = 2 e^{-2x} \text{ , dimana } x \in (0,\infty)\)
CDF untuk \(x=4\) :
\(P(X \le 4) = \int_{0}^{4}2e^{-2x}dx\)
Fungsi PDF buatan pengguna pada R :
ftn2 <- function(x){2*exp(-2*x)}Menghitung nilai exact dengan fungsi pexp :
exact_value2 <- pexp(4,2)
exact_value2## [1] 0.9996645
Metode Trapezoida
tol <- 0.000001
err <- 1
n <- 2
a2 <- 0
b2 <- 4
while(err>tol){
res_trap <- trapezoid(ftn2,a2,b2,n = n)
err <- abs(res_trap-exact_value2)
#cat("n=",n,", result=",res_trap,", error=",err,"\n",sep = "")
n=n+1
if(n==5000){
break
}
}
res_trap2 <- res_trap
n_trap2 <- n
err_trap2 <- err
res_trap2## [1] 0.9996655
Metode Simpson
tol <- 0.000001
err <- 1
n <- 2
while(err>tol){
res_simp <- simpson_n(ftn2,a2,b2,n = n)
err <- abs(res_simp-exact_value2)
#cat("n=",n,", result=",res_simp,", error=",err,"\n",sep = "")
n=n+1
if(n==1000){
break
}
}
res_simp2 <- res_simp
n_simp2 <- n
err_simp2 <- err
res_simp2## [1] 0.9996655
Metode Gauss Quadrature
library(polynom)
library(orthopolynom)
library(gaussquad)
library(pracma)
GaussLegendre_integral <- function(ftn,a,b,n) {
gL <- gaussLegendre(n = n,a=a2,b=b2)
Ci <- gL$w # koefisien
xi <- gL$x # gauss point
res_gl <- sum(Ci * ftn(xi))
return(res_gl)
}tol <- 0.000001
err <- 1
n <- 2
while(err>tol){
res_gl <- GaussLegendre_integral(ftn2,a=a2,b=b2,n = n)
err <- abs(res_gl-exact_value2)
#cat("n=",n,", result=",res_gl,", error=",err,"\n",sep = "")
n=n+1
if(n==1000){
break
}
}
res_gl2 <- res_gl
n_gl2 <- n
err_gl2 <- err
res_gl2## [1] 0.9996645
Metode Monte Carlo :
mc_integral <- 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_m <- mean(Gx)
theta.hat <- (b-a)*Gx_m
return(theta.hat)
}tol <- 0.000001
err <- 1
m <- 100000
while(err>tol){
res_mc <- mc_integral(ftn2,a2,b2,m)
err <- abs(res_mc-exact_value2)
#cat("n=",n,", result=",res_simp,", error=",err,"\n",sep = "")
m=m+100000
if(m==10000000){
break
}
}
res_mc2 <- res_mc
m_mc2 <- m
err_mc2 <- err
res_mc2## [1] 1.00015
Rangkuman Hasil Penghitungan CDF
Metode <- c('Trapezoida','Simpson','Gauss Quadrature','Monte Carlo')
Hasil <- c(res_trap2,res_simp2,res_gl2,res_mc2)
Error <- c(err_trap2,err_simp2,err_gl2,err_mc2)
Parameter <- c(n_trap2,n_simp2,n_gl2,m_mc2)
res_fin2 <- data.frame(Metode,Hasil,Error,Parameter)
res_fin2Dari hasil simulasi dengan berbagai n dan m, maka dengan nilai toleransi sebesar \(0.000001\) metode yang paling mendekati nilai CDF sebenernya adalah Gauss Quadrature dengan parameter \(n=8\) karena memiliki error yang paling kecil.
Membandingkan kecepatan pemrosesan setiap metode dengan fungsi microbenchmark dari package microbenchmark :
library(microbenchmark)
speed_test <- microbenchmark(
trapezoid(ftn2,a2,b2,n = 2311),
simpson_n(ftn2,a2,b2,n = 71),
GaussLegendre_integral(ftn2,a=a2,b=b2,n = 8),
mc_integral(ftn2,a2,b2,10000),
times = 100 # 100 kali ulangan
)
ggplot2::autoplot(speed_test)## Coordinate system already present. Adding new coordinate system, which will replace the existing one.
Secara kecapatan pemrosesan metode Simpson merupakan yang paling cepat, sementara metode Gauss Quadrature sedikit lebih lambat dari metode Simpson. Dari nilai error dan kecepatan pemrosesan dapat disimpulkan bahwa metode Gauss Quadrature adalah yang terbaik, karena memiliki error paling kecil dan kecepatan pemrosesan yang cepat.