METODE MONTE CARLO Pemodelan & Simulasi TM14 Metode Monte Carlo • Metoda Monte Carlo telah digunakan sejak abad ke-18 oleh Comte de Buffon yang mengembangkan eskperimen untuk memperoleh rasio antara diameter dan keliling lingkaran. • Di awal abad ke-20 metoda ini juga digunakan untuk memecahkan persamaan Boltzmann. • Pemakaian metoda ini semakin matang dan mendapatkan nama `Metoda Monte Carlo` sejak digunakan dan dikembangkan dalam Manhattan Project pada perang dunia ke-II di laboratorium Los Alamos (sekarang bernama Los Alamos National Laboratory, LANL). Ilustrasi Penerapan Metode Monte Carlo Kasus irradiasi neutron terhadap suatu bahan. Bahan ini terdiri dari tiga inti nuklir A, B, dan C . Diketahui probabilitas terjadinya tumbukan neutron dengan salah satu inti nuklir tersebut; untuk inti A probabilitasnya 0.2, inti B probabilitasnya 0.3, dan inti C probabilitasnya 0.5. Bagaimana distribusi terjadinya irradiasi dengan salah satu inti nuklir bila terdapat 500 neutron; berapa neutron yang menumbuk masing-masing inti nuklir? Dari sifat pembangkitan bilangan random, misalnya dibangkitkan N bilangan random yang terdistribusi homogen pada interval (0,1), maka dapat dipahami bahwa 0.2 N akan terdapat pada interval 0 r < 0.2 0.3 N akan terdapat pada interval 0.2 r < 0.5 0.5 N akan terdapat pada interval 0.5 r < 1 Kemungkinan terjadinya distribusi di atas akan semakin besar jika nilai N semakin besar. Sifat pembangkitan bilangan random inilah yang digunakan untuk menyelesaikan kasus iradiasi neutron di atas. Dengan membangkitkan bilangan random, distribusi terjadinya tumbukan dengan salah satu inti nuklir yang telah diketahui probabilitasnya dapat disimulasikan. Skema penyelesaian masalah di atas dapat digambarkan pada halaman berikut. Langkah yang dilakukan untuk penyelesaian adalah sebagai berikut : • bangkitkan bilangan random r yang terdistribusi homogen pada (0,1) • cek apakah r < 0.2 • bila r < 0.2 maka kejadian yang terpilih adalah kejadian A, yaitu neutron bertumbukan dengan inti A. • bila r > 0.2 maka cek apakah r < 0.5 • bila r < 0.5 maka kejadian yang terpilih adalah kejadian B • bila tidak maka yang terpilih adalah kejadian C Secara umum, bila E1, E2, …, En adalah n kejadian yang saling lepas, dan masing-masing memiliki probabilitas untuk terjadi sebesar p1, p2, …,pn dimana p1+p2+…+pn=1, maka dapat ditentukan bahwa nilai bilangan random r yang memenuhi p1 + p2 +…+ pi-1 r < p1 + p2 +…+ pi menunjukkan terjadinya kejadian Ei. Inilah prinsip dasar dari metoda Monte Carlo untuk kasus kejadian yang diskrit. Untuk kasus kontinu, variabel kontinu dibagi ke dalam banyak partisi dan menggunakan konsep yang sama dengan pada kasus diskrit. Misalnya terdapat variabel x dengan interval 0 < x < n bagi kejadian E1, E2, …,En dengan nilai x pada interval i-1 < x < i menyatakan kejadian Ei. Dibangun probability density function p(x) dengan definisi p(x) menunjukkan nilai probabilitas x terletak pada interval i-1 < x < i Maka p(x) akan berbentuk fungsi tangga seperti gambar berikut. Setiap masalah simulasi dapat didekati dengan metode Monte Carlo? Dengan catatan kunci: – – – – – Mampu memformulasikan masalah, Membuat overview sistem, Penyederhanaan sistem menuju algoritma, Menyusun algoritma, Pembuatan program; teknik pembuatan program bersifat bebas hampir tidak ada aturan yang terlalu mengikat. Contoh: Probabilitas pelemparan koin tunggal Sebuah pelemparan koin sebanyak N = 100 kali diperoleh hasil 45 kali keluar muka dan 55 kali keluar ekor. Dari data ini didapat nilai probabilitas untuk keluarnya – muka sebagai p(M) = N(M)/N – ekor sebagai p(E) = N(E)/N Dari model di atas susun algoritma dan program untuk kasus pelemparan sebanyak 1000 kali, 2000 kali, dsb… sampai dengan 10000 kali. Apa yang terjadi? Algoritma yang dapat digunakan: 1. Bangkitkan nilai 0 dan 1 sebanyak 1000 (N=1000). Caranya: bangitkan bilangan acak menggunakan metode LCG, kemudian operasikan modulo 2 pada bilangan acak yang telah dibangkitkan tersebut hasilnya pasti bilangan 0 atau 1. 2. Klasifikasi – Jika n = 0, maka M = M+1 misalkan 0 adalah Muka (M) – Jika n = 1, maka E = E+1 misalkan 1 adalah Ekor (E) 3. Hitung probabilitas M dengan cara M/N dan probabilitas E dengan cara E/N. Buatlah coding-nya menggunakan matlab, tanpa fungsi mod. Contoh: Probabilitas pelemparan koin ganda Untuk pelemparan koin ganda sebanyak 1000 kali, maka ada 3 kombinasi utk hasilnya yaitu: – Muncul muka dan muka MM – Muncul ekor dan muka EM – Muncul ekor dan ekor EE Algoritma: 1. Bangkitkan nilai 0 dan 1 sebanyak 1000 (N=1000) Caranya: Untuk koin 1 (n1) : bangkitkan bilangan acak menggunakan metode LCG, kemudian operasikan modulo 2 pada bilangan acak yang telah dibangkitkan tersebut. Lakukan hal yang sama koin 2(n2). 2. Klasifikasi – Jika n1 = 0 dan n2 = 0, maka MM = MM+1 – Jika (n1 = 1 dan n2 = 0) atau (n1 = 0 dan n2 = 1), maka EM = EM+1 – Jika n1 = 1 dan n2 = 1, maka EE = EE+1 3. Hitung probabilitas MM dengan cara MM/N, probabilitas EM dengan cara EM/N dan probabilitas EE dengan cara EE/N. Buatlah coding-nya menggunakan matlab, tanpa fungsi mod. Contoh: Metode Monte Carlo untuk menghitung nilai Jika sebuah lingkaran dengan radius 1 diletakkan ke dalam bujursangkar bersisi 2 satuan seperti gambar di bawah, Dari gambar tersebut didapatkan perbandingan: r2 Luas lingkaran Luas bujursangkar 4 Karena r =1, dapat diambil satu kotak serta seperempat lingkaran sehingga gambarnya menjadi: Maka perbandingan antara luas keduanya menjadi (1 / 4) r 2 1 Luas lingkaran 1 r2 Luas bujursangkar 1 4 4 Lemparkan sebuah kelereng secara bebas ke dalam kotak sebanyak 4 kali, maka kemungkinan kelereng akan jatuh di dalam lingaran atau diluar lingkaran. Bayangkan bila hal ini dilakukan sebanyak 1000 kali (N=1000). Jika diketahui bahwa posisi kelereng berada dalam lingkaran terjadi sebanyak M kali, maka banyaknya nilai M dibanding total pelemparan N akan senilai dengan perbandingan luas seperempat lingkaran dibanding 1 kotak atau M 1 N 4 4M N Algoritma: • Buat inisialisasi M = 0, N = 1000 • Bangkitkan nilai x secara random yang memiliki nilai 0 – 1 (gunakan multiplicative random number generator) • Bangkitkan nilai y secara random yang memiliki nilai 0 – 1 (gunakan multiplicative random number generator) • Pasangan (x, y) mewakili posisi jatuhnya kelereng dalam kotak • Hitung r2 =x2 + y2 • Jika nilai r2 < 1, maka M = M + 1, jika tidak, maka M = M • Lakukan proses looping ini sampai 1000 kali • Setelah proses looping selesai, hitung nilai p = (4M)/N Buatlah coding-nya menggunakan matlab, tanpa fungsi mod. Contoh: Menghitung nilai integral Misalkan akan dihitung nilai integral dari fungsi f(x) = 2x dengan batas bawah = 0 dan batas atas = 2, atau Nilai integral dapat dihitung dengan menemukan luas area di bawah kurva f(x) untuk batas-batas tsb, shg Secara analitis, hasil integral dari fungsi f(x) = 2x dengan batas bawah = 0 dan batas atas = 2 adalah Menghitung nilai integral dengan metode Monte Carlo Untuk soal di atas, luas area yang dicari adalah daerah yang berwarna biru muda. Dengan dasar pemikiran tsb, maka jika digunakan metode Monte Carlo akan diperoleh persamaan: luas area biru muda luas luas luas total persegipanjang 2 x 4 8 Bila dilakukan pelemparan koin tunggal sebanyak N kali, dan koin yang jatuh di bawah garis f(x) =2x adalah sebanyak M kali, maka: luas M 8 N Algoritma: • Bangkitkan 2 bilangan acak x dan y masing-masing 1000 bilangan acak • Nilai x mempunyai rentang 0 – 2 (yaitu dari batas bawah (x1) hingga batas atas integral (x2) ). Caranya: gunakan LCG dan kemudian bilangan acak yg diperoleh dikenakan mod 3. Mengapa?? • Nilai y mempunyai rentang 0 – 4 (yaitu dari f(x1) hingga f(x2) ); gunakan LCG dan kemudian bilangan acak yg diperoleh dikenakan mod 5. Mengapa?? • Bila y < f(x) maka M = M + 1, jika tidak maka M = M • Ulangi hingga N = 1000, dan hitung M • Luas atau integral f(x ) ditentukan dengan integral f(x) luas 8M N Buatlah coding-nya menggunakan matlab, tanpa fungsi mod.