Metode Monte Carlo

advertisement
METODE MONTE CARLO
Pemodelan & Simulasi
TM11
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)
menggunakan metode pembangkitan bilangan acak LCG,
kemudian operasikan modulo 2 pada bilangan acak yang
telah dibangkitkan tersebut.
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) menggunakan metode
pembangkitan bilangan acak LCG, kemudian operasikan modulo 2 pada
bilangan acak yang telah dibangkitkan tersebut. Lakukan untuk koin
pertama (n1) dan koin kedua (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 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)
• 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) ); 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.
Download