Menghitung Nilai Integral Tentu Dengan Modifikasi Simulasi Monte Carlo
Sepertinya sudah lama saya tidak menulis lagi karena riweuh di kantor dan kuliah.
Untuk membuka kembali niat untuk menulis, saya akan bercerita tentang salah satu metode aproksimasi (hampiran) yang bisa digunakan untuk menghitung nilai integral tentu di matematika.
Sebelumnya, saya pernah menulis tentang cara menghitung nilai
dengan dua
cara:
- Melempar darts ala Simulasi Monte Carlo.
- Membuat pendekatan trapezoid dari fungsi seperempat lingkaran.
Nah, cara ketiga ini merupakan modifikasi atau gabungan dari keduanya.
Lho kok bisa?
Jadi saya akan gunakan prinsip Monte Carlo untuk generate random points di selang integral tentu lalu menggunakan pendekatan luas square seperti halnya trapezoid.
Sebagai contoh, saya akan menyelesaikan soal berikut:
Hitunglah:
Jika kita hendak mencari solusi analitiknya, sepertinya agak susah yah. hehe (atau saya saja yang cenderung malas)
Solusi analitik dari
adalah:
Sehingga:
Oleh karena itu ada metode aproksimasi yang relatif lebih mudah dilakukan (menurut saya).
Ide dari algoritma ini adalah men-generate titik random di selang integral, kemudian dihitung luas square yang ada.
Perhatikan bahwa titik yang di-generate adalah pada sumbu
(selang integral) saja. Berbeda dengan darts yang memerlukan random di sumbu
dan
.
Sehingga:
dihitung sebagai:
dengan
Berikut adalah flowchart-nya:

Flowchart Modifikasi Monte Carlo
Berdasarkan flowchart di atas, berikut adalah function di R -nya:
modif_monte = function(f,x1,x2,N){
# set template terlebih dahulu
hasil = c()
# kita akan ulang proses ini 100 kali untuk N titik
for(ikang in 1:100){
# generating random number
x = runif(N,x1,x2)
# hitung f(x)
f_x = f(x)
# hitung luas
luas = (x2-x1) * f_x
mean_luas = mean(luas)
hasil[ikang] = mean_luas
}
# mean luas
output = mean(hasil)
# output
return(output)
}
Simple kan?
Oke, sebelum menyelesaikannya dengan fungsi di atas, saya akan berikan ilustrasi sebagai berikut:
Di atas adalah grafik dari
. Metode
ini bertujuan untuk men-generate satu random titik di antara
selang
(misal saya tuliskan sebagai
kemudian
dihitung nilai
.
Contoh:
Saya akan generate satu titik sebagai berikut:
Dari titik tersebut, saya akan buat garis sehingga terbentuklah sebuah square:
Kelak kita akan menghitung luas dari square tersebut.
Semakin banyak kita generate titiknya, kita bisa menghitung rata-rata luas dari squares tersebut. Nilai rata-rata tersebut akan dijadikan hampiran integral tentu.
Berikut adalah nilai hampirannya untuk berbagai banyak titik yang di-generate:
N | Solusi Aproksimasi | Selisih dengan Nilai Eksak |
---|---|---|
10 | 11.78907 | 0.0222857 |
100 | 11.80707 | 0.0042907 |
500 | 11.81512 | 0.0037561 |
750 | 11.81119 | 0.0001678 |
1000 | 11.81079 | 0.0005681 |
5000 | 11.81043 | 0.0009298 |
7500 | 11.81094 | 0.0004159 |
10000 | 11.81127 | 0.0000927 |
25000 | 11.81206 | 0.0007033 |
50000 | 11.81161 | 0.0002520 |
100000 | 11.81105 | 0.0003059 |
250000 | 11.81138 | 0.0000242 |
500000 | 11.81129 | 0.0000719 |
750000 | 11.81142 | 0.0000590 |
Hasil Perbandingan Solusi Numerik dan Eksak
Untuk setiap banyak titik, prosesnya saya ulangi hingga 100 kali agar lebih konvergen ke hasilnya.
Terlihat bahwa nilai hampirannya sudah sangat dekat dengan nilai eksaknya.
if you find thsi article helpful, support this blog by clicking the ads.