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.