SOAL

  1. Diketahui pdf (probability density function) dari distribusi Kumaraswamy adalah sebagai berikut \(f(x|a,b)=abx^{a-1}(1-x^{(a)})^{b-1}\),dimana 𝑥∈(0,1) 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. (Boleh diketik ataupun ditulis tangan kemudian difoto)
  2. Jika diketahui nilai exact dari \(𝐸(𝑋) = \frac{𝑏Γ(1+ 1/a )Γ(𝑏)}{Γ(1+ 1/a +𝑏)}\), metode mana yang paling mendekati untuk menghitung nilai 𝐸(𝑋) dengan toleransi 0.0001? Gunakan R!
  1. Diketahui pdf (probability density function) dari distribusi Eksponensial adalah sebagai berikut \(𝑓(𝑥|𝑎,𝑏) = 𝜆e^{−𝜆𝑥}\),dimana 𝑥 ∈ (0,∞)
    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.

Nomor 1

Fungsi kepekatan peluang distribusi Kumaraswamy adalah sebagai berikut:

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

Bagian a

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

  • Metode Trapezoida untuk \(n=4\)

Panjang 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 sebagai berikut:

\[T_4=\frac{h}{2}[f(x_0)+2f(x_1)+2f(x_2)+2f(x_3)+f(x_4)]\]

Menghitung fungsi f(x) dari setiap \(x_i\)

\[f(x_0)=f(0)=0\]

\[f(x_1)=f(0.25)=0.015\]

\[f(x_2)=f(0.5)=0.44\]

\[f(x_3)=f(0.75)=2.071\]

\[f(x_4)=f(1)=0\]

Karena \(h=\frac{1}{4}\) diperoleh

\[T_4=\frac{1}{8}[0+(2*0.015)+(2*0.44)+(2*2.071)+0]=0.631\]

Sehingga

\[\int\limits_{0}^{1}{15x^{5}(1-x^{(5)})^{2}}\,dx ≈ T_4=0.631\]

Jika dibandingkan dengan hasil yang didapatkan secara exact sebagai berikut:

\[\int\limits_{0}^{1}{15x^{5}(1-x^{(5)})^{2}}\,dx=0.71\]

  • Metode Simpson untuk \(n=4\)

Panjang 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 sebagai berikut:

\[T_4=\frac{h}{2}[f(x_0)+2f(x_1)+2f(x_2)+2f(x_3)+f(x_4)]\]

Menghitung fungsi f(x) dari setiap \(x_i\)

\[f(x_0)=f(0)=0\]

\[f(x_1)=f(0.25)=0.015\]

\[f(x_2)=f(0.5)=0.44\]

\[f(x_3)=f(0.75)=2.071\]

\[f(x_4)=f(1)=0\]

Karena \(h=\frac{1}{4}\) diperoleh

\[T_4=\frac{1}{12}[0+(4*0.015)+(2*0.44)+(4*2.071)+0]=0.768\]

Sehingga

\[\int\limits_{0}^{1}{15x^{5}(1-x^{(5)})^{2}}\,dx ≈ T_4=0.768\]

Jika dibandingkan dengan hasil yang didapatkan secara exact sebagai berikut:

\[\int\limits_{0}^{1}{15x^{5}(1-x^{(5)})^{2}}\,dx=0.71\]

  • Metode four-point Gauss Quadrature

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

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

\[x=\frac{1}{2}[t+1]\]

dan

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

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

Sehingga integralnya menjadi

\[\int\limits_{0}^{1}{15x^{5}(1-x^{(5)})^{2}}\,dx=\int\limits_{0}^{1}{15\frac{1}{2}[t+1]^{5}(1-\frac{1}{2}[t+1]^{(5)})^{2}}\,\frac{1}{2}dt\]

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

\[\int\limits_{0}^{1}{\frac{15}{4}[t+1]^{5}(1-\frac{1}{2}[t+1]^{(5)})^{2}}\,dt ≈ I=C_1f(t_1)+C_2f(t_2)+C_3f(t_3)+C_4f(t_4)\]

Menghitung fungsi \(f(x)\) pada setiap \(x_i\)

\(f(-0.8611363)=\frac{15(\frac{1}{2}[-0.8611363+1])^{5}(1-(\frac{1}{2}[-0.8611363+1])^{(5)})^{2}}{2}=0.0000121\)

\(f(-0.3399810)=\frac{15(\frac{1}{2}[-0.3399810+1])^{5}(1-(\frac{1}{2}[-0.3399810+1])^{(5)})^{2}}{2}=0.0291\)

\(f(0.3399810)=\frac{15(\frac{1}{2}[0.3399810+1])^{5}(1-(\frac{1}{2}[0.3399810+1])^{(5)})^{2}}{2}=0.7576\)

\(f(0.8611363)=\frac{15(\frac{1}{2}[0.8611363+1])^{5}(1-(\frac{1}{2}[0.8611363+1])^{(5)})^{2}}{2}=0.4775\)

Sehingga

\(I=0.347858*0.0000121+0.6521452*0.0291+0.6521452*0.7576+ 0.347858*0.4775=0.679\)

Jika dibandingkan dengan hasil yang didapatkan secara exact sebagai berikut:

\[\int\limits_{0}^{1}{15x^{5}(1-x^{(5)})^{2}}\,dx=0.71\]

Bagian b

Fungsi

Berikut adalah user-defined function untuk metode Trapezoidal

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)
}

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)
}

Metode Trapezoidal

\[𝐸(𝑋) = \frac{𝑏Γ(1+ 1/a )Γ(𝑏)}{Γ(1+ 1/a +𝑏)}=15x^{4}(1-x^{(5)})^{2}\]

Mendefinisikan fungsi f(x)

f <- function(x){
   15*x^5*(1-x^5)^2 
}

Menghitung integral menggunakan fungsi trapezoid

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

Hitunglah menggunakan R fungsi trapzfun dari package pracma

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

Hitunglah 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(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=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

Mendefinisikan fungsi f(x)

f2 <- function(x){
  15*x^5*(1-x^5)^2
}

Menghitung integral menggunakan metode simpson

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

Hitunglah 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_simp <- simpson_n(f2,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 Gauss Quadrature

Hitunglah menggunakan R dengan fungsi gaussLegendre dengan menggunakan domain [−1,1]

Mendefinisikan fungsi hasil transformasi f(t)

ft <- function(t){
  (15*(((t+1)/2)^5)*(((1-(((t+1)/2)^5))^2)))/2
}

Legendre order 4

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

Mendefinisikan koefisien dan gauss point

Ci <- gL$w # koefisien
Ci
## [1] 0.3478548 0.6521452 0.6521452 0.3478548
ti <- gL$x # gauss point
ti
## [1] -0.8611363 -0.3399810  0.3399810  0.8611363
ft(ti)
## [1] 1.210189e-05 2.912641e-02 7.575892e-01 4.779089e-01

Menghitung integral

I <- sum(Ci * ft(ti))
I
## [1] 0.6792999

Hitunglah menggunakan R dengan fungsi gaussLegendre dengan menggunakan domain asal

Mendefinisikan fungsi f(x)

f3 <- function(x){
  15*x^5*((1-(x^5))^2)
}

Legendre order 4 dengan domain [0,1]

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

Mendefinisikan koefisien dan 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
f3(xi)
## [1] 2.420379e-05 5.825281e-02 1.515178e+00 9.558177e-01

Menghitung integral

I <- sum(Ci * f3(xi))
I
## [1] 0.6792999

Hitunglah menggunakan R hingga hasil integral mendekati hasil exact-nya dengan toleransi 0.00001

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 * f3(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

Perbandingan Metode

exact <- 0.7102273
t <- trapezoid(f,0,1,4)
s <- simpson_n(f2,0,1,4)
g <- I
nilai <- rbind(t,s,g)

exact <- 0.7102273
error_t <- abs(trapezoid(f,0,1,4)-exact)
error_s <- abs(simpson_n(f2,0,1,4)-exact)
error_g <- abs(I-exact)
error <- rbind(error_t,error_s,error_g)


perbandingan<- c("Metode Trapezoidal","Metode Simpson","Metode Gauss Quadrature")
hasil <- data.frame(perbandingan,nilai,error)
hasil
##              perbandingan     nilai      error
## t      Metode Trapezoidal 0.6312869 0.07894042
## s          Metode Simpson 0.7683974 0.05817006
## g Metode Gauss Quadrature 0.6792999 0.03092738

Berdasarkan ketiga metode tersebut yaitu, metode Trapezoidal, metode Simpson, dan metode Gauss Quadrature. Nilai yang mendekati dari nilai fungsi E(x) exact atau sebenarnya sebesar 0.71 adalah metode Gauss Quadrature dengan nilai sebesar 0.679 dengan nilai error 0.0309.

Nomor 2

Fungsi kepekatan peluang distribusi eksponensial adalah sebagai berikut:

\[𝑓(𝑥|𝜆) = 𝜆e^{−𝜆𝑥}=2e^{-2x}\]

Fungsi sebaran kumulatif distribusi eksponensial adalah sebagai berikut:

\[F(𝑥|𝜆) = 1-e^{-2x}\]

Nilai exact dari FSK distribusi eksponensial

Ft <- function(x){
  2*exp(-2*x)
}
F <- integrate(Ft,0,4)
F
## 0.9996645 with absolute error < 1.1e-14

Metode Trapezoidal

Mendefinisikan fungsi f(x)

f <- function(x){
  2*exp(-2*x)
}

Menghitung integral menggunakan fungsi trapezoid

trapezoid(f,0,4,n = 50)
## [1] 1.001796

Hitunglah menggunakan R fungsi trapzfun dari package pracma

trapzfun(f,0,4,maxit =  5)
## $value
## [1] 1.004866
## 
## $iter
## [1] 5
## 
## $rel.err
## [1] 0.01553891

Hitunglah menggunakan R hingga hasil integral mendekati hasil exact-nya dengan toleransi 0.0001

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

while(err>tol){
  res_trap <- trapezoid(f,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=50, result=1.001796, error=0.002131746
## n=51, result=1.001714, error=0.002049003
## n=52, result=1.001635, error=0.001970985
## n=53, result=1.001562, error=0.001897339
## n=54, result=1.001492, error=0.001827745
## n=55, result=1.001426, error=0.00176191
## n=56, result=1.001364, error=0.001699569
## n=57, result=1.001305, error=0.001640479
## n=58, result=1.001249, error=0.001584417
## n=59, result=1.001196, error=0.001531181
## n=60, result=1.001145, error=0.001480583
## n=61, result=1.001097, error=0.001432452
## n=62, result=1.001051, error=0.001386631
## n=63, result=1.001007, error=0.001342973
## n=64, result=1.000966, error=0.001301345
## n=65, result=1.000926, error=0.001261623
## n=66, result=1.000888, error=0.001223692
## n=67, result=1.000852, error=0.001187446
## n=68, result=1.000817, error=0.001152787
## n=69, result=1.000784, error=0.001119624
## n=70, result=1.000752, error=0.001087871
## n=71, result=1.000722, error=0.00105745
## n=72, result=1.000693, error=0.001028287
## n=73, result=1.000665, error=0.001000315
## n=74, result=1.000638, error=0.000973468
## n=75, result=1.000612, error=0.0009476878
## n=76, result=1.000587, error=0.0009229182
## n=77, result=1.000564, error=0.0008991072
## n=78, result=1.000541, error=0.000876206
## n=79, result=1.000519, error=0.0008541686
## n=80, result=1.000497, error=0.0008329523
## n=81, result=1.000477, error=0.0008125168
## n=82, result=1.000457, error=0.0007928242
## n=83, result=1.000438, error=0.0007738389
## n=84, result=1.00042, error=0.0007555275
## n=85, result=1.000402, error=0.0007378584
## n=86, result=1.000385, error=0.000720802
## n=87, result=1.000369, error=0.0007043303
## n=88, result=1.000353, error=0.0006884168
## n=89, result=1.000338, error=0.0006730365
## n=90, result=1.000323, error=0.000658166
## n=91, result=1.000308, error=0.000643783
## n=92, result=1.000294, error=0.0006298663
## n=93, result=1.000281, error=0.0006163961
## n=94, result=1.000268, error=0.0006033534
## n=95, result=1.000255, error=0.0005907204
## n=96, result=1.000243, error=0.00057848
## n=97, result=1.000231, error=0.0005666162
## n=98, result=1.00022, error=0.0005551136
## n=99, result=1.000208, error=0.0005439578
## n=100, result=1.000198, error=0.0005331349
## n=101, result=1.000187, error=0.0005226319
## n=102, result=1.000177, error=0.0005124362
## n=103, result=1.000167, error=0.000502536
## n=104, result=1.000157, error=0.00049292
## n=105, result=1.000148, error=0.0004835774
## n=106, result=1.000139, error=0.0004744979
## n=107, result=1.00013, error=0.0004656717
## n=108, result=1.000122, error=0.0004570896
## n=109, result=1.000113, error=0.0004487425
## n=110, result=1.000105, error=0.000440622
## n=111, result=1.000097, error=0.00043272
## n=112, result=1.00009, error=0.0004250287
## n=113, result=1.000082, error=0.0004175406
## n=114, result=1.000075, error=0.0004102487
## n=115, result=1.000068, error=0.0004031462
## n=116, result=1.000061, error=0.0003962266
## n=117, result=1.000054, error=0.0003894836
## n=118, result=1.000047, error=0.0003829112
## n=119, result=1.000041, error=0.0003765039
## n=120, result=1.000035, error=0.0003702561
## n=121, result=1.000029, error=0.0003641625
## n=122, result=1.000023, error=0.0003582181
## n=123, result=1.000017, error=0.0003524181
## n=124, result=1.000011, error=0.0003467579
## n=125, result=1.000006, error=0.0003412329
## n=126, result=1, error=0.000335839
## n=127, result=0.9999951, error=0.0003305719
## n=128, result=0.9999899, error=0.0003254278
## n=129, result=0.9999849, error=0.0003204029
## n=130, result=0.99998, error=0.0003154935
## n=131, result=0.9999752, error=0.000310696
## n=132, result=0.9999705, error=0.0003060072
## n=133, result=0.9999659, error=0.0003014237
## n=134, result=0.9999614, error=0.0002969424
## n=135, result=0.9999571, error=0.0002925604
## n=136, result=0.9999528, error=0.0002882747
## n=137, result=0.9999486, error=0.0002840824
## n=138, result=0.9999445, error=0.000279981
## n=139, result=0.9999405, error=0.0002759677
## n=140, result=0.9999365, error=0.0002720401
## n=141, result=0.9999327, error=0.0002681958
## n=142, result=0.9999289, error=0.0002644324
## n=143, result=0.9999252, error=0.0002607477
## n=144, result=0.9999216, error=0.0002571395
## n=145, result=0.9999181, error=0.0002536057
## n=146, result=0.9999146, error=0.0002501442
## n=147, result=0.9999113, error=0.0002467531
## n=148, result=0.9999079, error=0.0002434306
## n=149, result=0.9999047, error=0.0002401747
## n=150, result=0.9999015, error=0.0002369837
## n=151, result=0.9998984, error=0.0002338558
## n=152, result=0.9998953, error=0.0002307895
## n=153, result=0.9998923, error=0.0002277832
## n=154, result=0.9998893, error=0.0002248352
## n=155, result=0.9998864, error=0.000221944
## n=156, result=0.9998836, error=0.0002191083
## n=157, result=0.9998808, error=0.0002163266
## n=158, result=0.9998781, error=0.0002135976
## n=159, result=0.9998754, error=0.0002109198
## n=160, result=0.9998728, error=0.0002082921
## n=161, result=0.9998702, error=0.0002057133
## n=162, result=0.9998677, error=0.000203182
## n=163, result=0.9998652, error=0.0002006972
## n=164, result=0.9998628, error=0.0001982577
## n=165, result=0.9998604, error=0.0001958624
## n=166, result=0.999858, error=0.0001935102
## n=167, result=0.9998557, error=0.0001912002
## n=168, result=0.9998534, error=0.0001889313
## n=169, result=0.9998512, error=0.0001867026
## n=170, result=0.999849, error=0.0001845131
## n=171, result=0.9998469, error=0.0001823618
## n=172, result=0.9998447, error=0.000180248
## n=173, result=0.9998427, error=0.0001781708
## n=174, result=0.9998406, error=0.0001761292
## n=175, result=0.9998386, error=0.0001741225
## n=176, result=0.9998366, error=0.00017215
## n=177, result=0.9998347, error=0.0001702108
## n=178, result=0.9998328, error=0.0001683042
## n=179, result=0.9998309, error=0.0001664294
## n=180, result=0.9998291, error=0.0001645858
## n=181, result=0.9998273, error=0.0001627727
## n=182, result=0.9998255, error=0.0001609893
## n=183, result=0.9998237, error=0.0001592352
## n=184, result=0.999822, error=0.0001575095
## n=185, result=0.9998203, error=0.0001558117
## n=186, result=0.9998186, error=0.0001541413
## n=187, result=0.999817, error=0.0001524976
## n=188, result=0.9998154, error=0.00015088
## n=189, result=0.9998138, error=0.0001492881
## n=190, result=0.9998122, error=0.0001477212
## n=191, result=0.9998107, error=0.0001461789
## n=192, result=0.9998092, error=0.0001446606
## n=193, result=0.9998077, error=0.0001431658
## n=194, result=0.9998062, error=0.0001416941
## n=195, result=0.9998047, error=0.000140245
## n=196, result=0.9998033, error=0.000138818
## n=197, result=0.9998019, error=0.0001374127
## n=198, result=0.9998005, error=0.0001360286
## n=199, result=0.9997992, error=0.0001346653
## n=200, result=0.9997978, error=0.0001333224
## n=201, result=0.9997965, error=0.0001319995
## n=202, result=0.9997952, error=0.0001306962
## n=203, result=0.9997939, error=0.0001294122
## n=204, result=0.9997926, error=0.0001281469
## n=205, result=0.9997914, error=0.0001269002
## n=206, result=0.9997902, error=0.0001256715
## n=207, result=0.999789, error=0.0001244606
## n=208, result=0.9997878, error=0.0001232671
## n=209, result=0.9997866, error=0.0001220908
## n=210, result=0.9997854, error=0.0001209311
## n=211, result=0.9997843, error=0.000119788
## n=212, result=0.9997832, error=0.0001186609
## n=213, result=0.999782, error=0.0001175497
## n=214, result=0.999781, error=0.0001164541
## n=215, result=0.9997799, error=0.0001153737
## n=216, result=0.9997788, error=0.0001143083
## n=217, result=0.9997778, error=0.0001132575
## n=218, result=0.9997767, error=0.0001122212
## n=219, result=0.9997757, error=0.0001111991
## n=220, result=0.9997747, error=0.0001101908
## n=221, result=0.9997737, error=0.0001091962
## n=222, result=0.9997727, error=0.0001082151
## n=223, result=0.9997717, error=0.000107247
## n=224, result=0.9997708, error=0.000106292
## n=225, result=0.9997698, error=0.0001053496
## n=226, result=0.9997689, error=0.0001044197
## n=227, result=0.999768, error=0.0001035021
## n=228, result=0.9997671, error=0.0001025965
## n=229, result=0.9997662, error=0.0001017028
## n=230, result=0.9997653, error=0.0001008207
## n=231, result=0.9997644, error=9.995e-05

Metode Simpson

Mendefinisikan fungsi f(x)

f2 <- function(x){
  2*exp(-2*x)
}

Menghitung integral menggunakan metode simpson

simpson_n(f2,0,4,n = 50)
## [1] 0.9996682

Hitunglah menggunakan R hingga hasil integral mendekati hasil exact-nya dengan toleransi 0.0001

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

while(err>tol){
  res_simp <- simpson_n(f2,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=50, result=0.9996682, error=3.665977e-06

Metode Gauss Quadrature

Hitunglah menggunakan R dengan fungsi gaussLegendre dengan menggunakan domain [−1,1]

Mendefinisikan fungsi hasil transformasi f(t)

ft <- function(t){
  4*exp(-4*(t+1))
}

Legendre order 50

gL <- gaussLegendre(n = 50,a = -1,1)

Mendefinisikan koefisien dan gauss point

Ci <- gL$w # koefisien
Ci
##  [1] 0.002908623 0.006759799 0.010590548 0.014380823 0.018115561 0.021780243
##  [7] 0.025360674 0.028842994 0.032213728 0.035459836 0.038568757 0.041528463
## [13] 0.044327504 0.046955051 0.049400938 0.051655703 0.053710622 0.055557745
## [19] 0.057189926 0.058600850 0.059785059 0.060737971 0.061455900 0.061936067
## [25] 0.062176617 0.062176617 0.061936067 0.061455900 0.060737971 0.059785059
## [31] 0.058600850 0.057189926 0.055557745 0.053710622 0.051655703 0.049400938
## [37] 0.046955051 0.044327504 0.041528463 0.038568757 0.035459836 0.032213728
## [43] 0.028842994 0.025360674 0.021780243 0.018115561 0.014380823 0.010590548
## [49] 0.006759799 0.002908623
ti <- gL$x # gauss point
ti
##  [1] -0.99886640 -0.99403197 -0.98535408 -0.97286439 -0.95661096 -0.93665662
##  [7] -0.91307856 -0.88596798 -0.85542977 -0.82158207 -0.78455583 -0.74449430
## [13] -0.70155247 -0.65589647 -0.60770293 -0.55715830 -0.50445814 -0.44980633
## [19] -0.39341431 -0.33550025 -0.27628819 -0.21600724 -0.15489059 -0.09317470
## [25] -0.03109834  0.03109834  0.09317470  0.15489059  0.21600724  0.27628819
## [31]  0.33550025  0.39341431  0.44980633  0.50445814  0.55715830  0.60770293
## [37]  0.65589647  0.70155247  0.74449430  0.78455583  0.82158207  0.85542977
## [43]  0.88596798  0.91307856  0.93665662  0.95661096  0.97286439  0.98535408
## [49]  0.99403197  0.99886640
ft(ti)
##  [1] 3.981903530 3.905642252 3.772397335 3.588563207 3.362679687 3.104711626
##  [7] 2.825283145 2.534930649 2.243446813 1.959369317 1.689643724 1.439465077
## [13] 1.212281639 1.009929194 0.832856492 0.680401359 0.551081229 0.442869427
## [19] 0.353437578 0.280353308 0.221229896 0.173830135 0.136130230 0.106351372
## [25] 0.082967005 0.064693212 0.050468573 0.039428436 0.030877282 0.024261649
## [31] 0.019145135 0.015186280 0.012119604 0.009739766 0.007888582 0.006444570
## [37] 0.005314632 0.004427521 0.003728748 0.003176647 0.002739352 0.002392480
## [43] 0.002117376 0.001899775 0.001728792 0.001596168 0.001495697 0.001422809
## [49] 0.001374269 0.001347949

Menghitung integral

I <- sum(Ci * ft(ti))
I
## [1] 0.9996645

Hitunglah menggunakan R dengan fungsi gaussLegendre dengan menggunakan domain asal

Mendefinisikan fungsi f(x)

f3 <- function(x){
  2*exp(-2*x)
}

Legendre order 50 dengan domain [0,4]

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

Mendefinisikan koefisien dan gauss point

Ci <- gL$w # koefisien
Ci
##  [1] 0.005817245 0.013519598 0.021181097 0.028761646 0.036231121 0.043560486
##  [7] 0.050721347 0.057685987 0.064427456 0.070919671 0.077137513 0.083056926
## [13] 0.088655009 0.093910103 0.098801877 0.103311406 0.107421244 0.111115490
## [19] 0.114379851 0.117201700 0.119570117 0.121475942 0.122911799 0.123872135
## [25] 0.124353233 0.124353233 0.123872135 0.122911799 0.121475942 0.119570117
## [31] 0.117201700 0.114379851 0.111115490 0.107421244 0.103311406 0.098801877
## [37] 0.093910103 0.088655009 0.083056926 0.077137513 0.070919671 0.064427456
## [43] 0.057685987 0.050721347 0.043560486 0.036231121 0.028761646 0.021181097
## [49] 0.013519598 0.005817245
xi <- gL$x # gauss point
xi
##  [1] 0.002267191 0.011936061 0.029291832 0.054271230 0.086778090 0.126686762
##  [7] 0.173842887 0.228064041 0.289140461 0.356835858 0.430888334 0.511011396
## [13] 0.596895063 0.688207069 0.784594146 0.885683391 0.991083710 1.100387330
## [19] 1.213171376 1.328999509 1.447423612 1.567985526 1.690218820 1.813650597
## [25] 1.937803323 2.062196677 2.186349403 2.309781180 2.432014474 2.552576388
## [31] 2.671000491 2.786828624 2.899612670 3.008916290 3.114316609 3.215405854
## [37] 3.311792931 3.403104937 3.488988604 3.569111666 3.643164142 3.710859539
## [43] 3.771935959 3.826157113 3.873313238 3.913221910 3.945728770 3.970708168
## [49] 3.988063939 3.997732809
f3(xi)
##  [1] 1.9909517649 1.9528211259 1.8861986676 1.7942816036 1.6813398436
##  [6] 1.5523558128 1.4126415723 1.2674653244 1.1217234063 0.9796846586
## [11] 0.8448218622 0.7197325383 0.6061408194 0.5049645972 0.4164282460
## [16] 0.3402006796 0.2755406146 0.2214347136 0.1767187891 0.1401766540
## [21] 0.1106149481 0.0869150676 0.0680651149 0.0531756862 0.0414835023
## [26] 0.0323466062 0.0252342867 0.0197142180 0.0154386408 0.0121308244
## [31] 0.0095725677 0.0075931400 0.0060598020 0.0048698828 0.0039442911
## [36] 0.0032222851 0.0026573160 0.0022137603 0.0018643738 0.0015883236
## [41] 0.0013696759 0.0011962401 0.0010586881 0.0009498875 0.0008643962
## [46] 0.0007980840 0.0007478483 0.0007114047 0.0006871344 0.0006739744

Menghitung integral

I <- sum(Ci * f3(xi))
I
## [1] 0.9996645

Hitunglah menggunakan R hingga hasil integral mendekati hasil exact-nya dengan toleransi 0.00001

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

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

 Ci <- gL$w # koefisien
 xi <- gL$x # gauss point
  
  res_gl <- sum(Ci * f3(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=50, result=0.9996645, error=3.73721e-08

Metode Monte Carlo

mc_integral <- function(ftn, a, b,m=5000){
  #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)
}
g <- function(x) {
 2*exp(-2*x)
}
set.seed(123)
int_g <- mc_integral(g,a=0,b=4,m = 5000)
int_g
## [1] 1.018859

Perbandingan metode

exact <- 0.9996645
t <- trapezoid(f,0,4,50)
s <- simpson_n(f2,0,4,50)
g <- I
m <- int_g
nilai <- rbind(t,s,g,m)

exact <- 0.9996645
error_t <- abs(trapezoid(f,0,4,50)-exact)
error_s <- abs(simpson_n(f2,0,4,50)-exact)
error_g <- abs(I-exact)
error_m <- abs(int_g-exact)
error <- rbind(error_t,error_s,error_g,error_m)


perbandingan<- c("Metode Trapezoidal","Metode Simpson","Metode Gauss Quadrature","Metode Monte Carlo")
hasil <- data.frame(perbandingan,nilai,error)
hasil
##              perbandingan     nilai        error
## t      Metode Trapezoidal 1.0017962 2.131746e-03
## s          Metode Simpson 0.9996682 3.665977e-06
## g Metode Gauss Quadrature 0.9996645 3.737210e-08
## m      Metode Monte Carlo 1.0188585 1.919404e-02

Berdasarkan keempat metode tersebut yaitu, metode Trapezoidal, metode Simpson,metode Gauss Quadrature, dan metode Monte Carlo. Nilai yang mendekati dari nilai fungsi exact atau sebenarnya sebesar 0.9996645 adalah metode Gauss Quadrature dengan nilai sebesar 0.9996645 dan error sebesar 3.737210e-08.