SIMULASI MONTECARLO: Menghitung Nilai Pi
Suatu ketika di salah satu sekolah dasar di kota Bekasi. Jam menunjukkan pukul 11.50, sekitar 10 menit menuju jam pulang siswa. Sang guru memberikan kuis matematika kepada murid-muridnya.
Jika ada yang bisa menyelesaikan soal ini, boleh pulang duluan!
Begitu ujarnya.
Lantas beliau menggambar sebuah lingkaran yang diberi keterangan memiliki radius 7 cm di papan tulis. Soalnya: Hitung luas lingkaran tersebut!
Semua murid sudah hapal bahwa rumus luas lingkaran adalah:
Sebagian murid menggunakan sedangkan sebagian yang lain menggunakan
.
Jadi timbullah dua jawaban:
- 154 cm
- 153.86 cm
Kedua nilai tersebut dibenarkan oleh sang guru. Murid-murid yang menjawab salah satu dari kedua jawaban tersebut diperbolehkan pulang.
Pertanyaan Mendasar: Sebenarnya berapa nilai
?
Ada satu pertanyaan yang menggelayuti pikiran saya selama ini.
Berapa sih nilai
yang sebenarnya?
Sebagai orang yang pernah kuliah di jurusan matematika, saya mengetahui
fakta menarik bahwa sejatinya bukanlah
.
Baik angka
dan
hanyalah aproksimasi dari nilai
yang
sebenarnya. Gak percaya? Dengan menggunakan nilai
yang ada di
base R, saya akan hitung selisihnya ke dua nilai aproksimasi
tersebut:
-0.0012645
0.0015927
Setelah kita tahu bahwa sejatinya nilai
yang
sebenarnya berbeda dengan apa yang kita ketahui selama ini, lalu berapa
nilai sesungguhnya?
Apa ada cara menghitung nilai
?
Cara Menghitung 
Bagi matematikawan, ada banyak cara menghitung nilai pi. Ada yang cara deterministik dan ada cara probabilistik.
Kali ini saya akan mencoba menghitung nilai
dengan cara
kedua yakni dengan pendekatan simulasi MonteCarlo. Bagaimana cara
kerjanya? Yuk perhatikan dengan seksama.
Lingkaran dengan 
Saya mulai dari lingkaran dengan berikut
ini:
Dari gambar di atas, luas area pada
di range
saya tuliskan sebagai berikut:
Mencari Nilai 
Kunci untuk mencari nilai
adalah dengan
menghitung
.
Bagaimana menghitung
?
Untuk menghitungnya saya akan gunakan metode yang tidak biasa, yakni
dengan melakukan generating random dots di area dan
. Setiap titik yang memenuhi persyaratan
akan saya tandai sebagai
inner
dan diluar itu
akan saya tandai sebagai outer
.
Perhatikan grafik di bawah ini:
Jika dilihat dari grafik di atas, semakin banyak dots yang saya buat,
semakin banyak area
yang ter-cover. Akibatnya semakin akurat saya menghitung
.
Luas dapat saya
tuliskan sebagai:
Lalu:
Berikut algoritma dan hasil perhitungan saya:
hitung_pi = function(n){
x = runif(n)
y = runif(n)
data = data.frame(x,y)
data =
data %>%
distinct() %>%
mutate(jatuh = x^2 + y^2,
ket = ifelse(jatuh <= 1, 1,0))
return(4 * sum(data$ket)/length(data$ket))
}
Ternyata hasil perhitungan saya dengan membuat 4 juta dots lebih
akurat dibandingkan pendekatan
.
Dukung selalu blog ini agar bisa terus bertumbuh dengan cara klik iklan selepas Kamu membaca setiap tulisan yang ada yah.