Minggu 12 MA2151 Simulasi dan Komputasi Matematika
9.2 Simulasi
Simulasi Model adalah himpunan formula yang mendeskripsikan hasil pengamatan dari suatu percobaan atau fenomena dunia nyata yang dapat digunakan untuk melakukan perkiraan/ramalan. Apabila pengamatan tidak dapat dilakukan (sulit, memakan waktu lama, mahal, berbahaya), dapat digunakan simulasi komputer, atau menggunakan program komputer untuk meniru kenyataan.
Simulasi Digunakan Jika… • Percobaan sebenarnya tidak mungkin dilakukan (studi Efek Rumah Kaca) • Percobaan berbiaya tinggi, memakan waktu lama, atau berbahaya (studi reaksi nuklir) • Sistem belum ada (pembangunan pesawat udara) • Ingin dicoba berbagai alternatif kejadian (prediksi angin topan)
Kekurangan Simulasi Komputer • Pembuatan simulasi dapat memakan waktu yang lama atau biaya yang mahal. • Karena tidak mungkin menguji semua alternatif, kita bisa memperoleh solusi yang baik, namun bukan yang terbaik. • Solusi sulit diverifikasi Karena data real tidak tersedia. • Ketika simulasi bersifat probabilistik, kita harus berhati-hati dengan kesimpulan kita.
Simulasi Monte Carlo Simulasi Monte Carlo adalah suatu model probabilistik yang melibatkan unsur peluang.
Deterministik vs Probabilistik Deterministik Semua data diketahui sebelumnya. Setelah sistem dimulai, kita tahu pasti apa yang akan terjadi Contoh: Memperkirakan jumlah uang dalam rekening bank.
Probabilistik Melibatkan unsur kemungkinan. Kita tahu peluang suatu kejadian akan terjadi, tapi kita tidak tahu kapan kejadian tersebut terjadi. Contoh: Melempar dadu sampai muncul angka “5”.
Asal Mula Simulasi Monte Carlo
• • • • • • John von Neumann (1903-1957) Stanislaw Ulam
Game theory Quantum mechanics Economics Cellular automata Nuclear weapons Computer science (“von Neumann bottleneck”)
Random Number Random number adalah bilangan yang dipilih dengan mempergunakan peluang yang muncul dari suatu distribusi. Himpunan random number dengan kardinalitas besar akan merepresentasikan distribusi yang digunakan tersebut.
(Pseudo) Random Number “True randomness is rare” (terjadi di alam seperti dalam perubahan cuaca atau terjadinya petir) random.org Kita dapat meniru perilaku random melalui proses yang deterministik. Linear congruential method menggunakan operasi modulo untuk membangkitkan barisan r r0 = 10 rn = (7 rn -1 + 1) mod 11, for n > 0
Linear Congruential Method Secara umum: r0 = seed rn = (multiplier * rn -1 + increment) mod modulus, for n > 0
Penelitian banyak dilakukan untuk membuat barisan ini sulit diprediksi (misalnya, untuk codebreaking). Perioda (panjang sebelum pengulangan) harus sebesar mungkin.
Selang dan Tipe Random Numbers Kita dapat membatasi selang dan memperoleh bilangan real atau bilangan bulat Modulus memberikan nilai maksimum sehingga dapat dilakukan pembagian untuk memperoleh bilangan real dalam selang [0,1]. Dapat juga dilakukan penskalaan ulang untuk memperoleh maksimum dan minimum yang baru: s = (max – min) * rand + min Selain itu, dapat ditentukan random number yang merupakan bilangan bulat: s = int((max – min+1) * rand + min)
9.3 Menghitung Luas Daerah dengan Simulasi Monte Carlo
Pendahuluan Dalam Metoda Numerik, dipelajari metoda deterministik untuk menghampiri luas daerah yang dibatasi oleh suatu kurva (Riemann, trapesium, atau Simpson). Kita dapat juga melakukan hampiran dengan menggunakan random number (probabilistik). Anggap kita melempar banyak dart secara random pada suatu daerah, kemudian menghitung bagian yang berada di bawah kurva.
x
f (x)
x
f (x)
Hampiran Luas Daerah Luas daerah dapat diestimasi dengan: (area of enclosing rectangle) * (# below) / (# darts)
Area of enclosing rectangle = 2*1.5 = 3.0 Bagaimana kita dapat mengetahui # below?
Menentukan Apakah Suatu Titik Terletak di Atas atau di Bawah f(x) Setiap “dart” memiliki kordinat (x, y) Substitusikan x ke dalam fungsi
Jika f(x) > y maka dart berada di bawah fungsi; dan sebaliknya, berada di atas fungsi.
f (x)
Contoh
x, y
(0.2, 0.5)
x
f (x)
Contoh
x, y
f (0.2) cos 2 (0.2) 1 1.4002 0.5
x
Hampiran yang Lebih Baik Hampiran yang lebih baik dapat dilakukan dengan melemparkan lebih banyak dart. Ini dapat dilakukan dengan: • Mendefinisikan banyaknya dart sebagai bilangan yang besar, atau • Melakukan simulasi beberapa kali dan kemudian menghitung rata-ratanya.
9.4 Random Number dengan Berbagai Distribusi
Distribusi Distribusi bilangan adalah deskripsi yang menyatakan rata-rata peluang kemunculan setiap kemungkinan keluaran atau selang keluaran. Histogram merupakan penggambaran dari suatu distribusi. Dalam suatu distribusi uniform semua keluaran memiliki peluang kemunculan yang sama.
Distribusi Uniform: Simulasi Random Number Metoda linear congruential akan menghasilkan bilangan pseudorandom yang terdistribusi secara uniform.
Histogram dari 10,000 random floating-point numbers dalam selang [0.0,1.0]
Distribusi Diskrit vs Kontinu Dalam distribusi diskrit, nilai dalam sumbu x dan y bersifat diskrit (terhitung dan berhingga). Dalam distribusi kontinu nilai dalam sumbu x dan y bersifat kontinu (tak terhitung). Dalam praktek, kita dapat memodelkan distribusi kontinu secara diskrit dengan menggunakan metoda binning.
Binning
Probability Density Function Dalam distribusi diskrit, probability density function (atau density function atau probability function) memberikan peluang kemunculan dari suatu keluaran. Dalam distribusi kontinu, PDF menunjukkan peluang suatu keluaran akan muncul dalam suatu selang.
Membangun Random Number Berdistribusi Non-Uniform Bayangkan suatu roda roulette untuk memilih keluaran e1, e2, ….
e3 e4 .60
e1 60%
.68 .78
e 2 e3 8% 10%
1.0
e4 22%
e2 e1
Algoritma Pembangkit Random Number Berdistribusi Non-Uniform Diberikan peluang p1, p2, …. untuk kejadian e1, e2, …. Generate rand, a uniform random floating-point number in [0,1); that is, from zero up to but excluding 1. if rand < p1 then use e1 else if rand < p1+p2 then use e2 … else if rand < p1+p2+…+pn-1+then use en-1 else use en
Contoh Suppose in a simulation involving animal behavior, a lab rat presses a food lever (FOOD = 1) 15% of the time, presses a water lever (WATER = 2) 20% of the time, and does neither (NEITHER = 3) the remainder of the time. Write an algorithm for the simulation.
Distribusi Normal (Gaussian) Gauss Gerling Plücker Klein Story Lefschetz Tucker Minsky Winston Waltz Pollack Levy
Carl Friedrich Gauss (1777-1855)
Distribusi Normal (Gaussian) Standard deviation s dari himpunan nilai adalah rata-rata beda terhadap mean m. Dalam distribusi normal (disebut demikian karena distribusi ini seringkali muncul) 68.3% dari data terletak dalam ±s (standar deviasi 1) dari m; 95.5% terletak dalam ±2s; dan 99.7% dalam ±3s.
extreme values are rare
Distribusi Normal (Gaussian) Distribusi normal memiliki PDF
Pembangkit random number biasanya menggunakan m = 0, s = 1, sehingga PDFnya menjadi
Distribusi Normal (Gaussian) adalah konstan, sehingga grafik fungsi ditentukan oleh ; yaitu fungsi akan mencapai maksimum di x = 0 dan mendekati 0 pada saat x membesar atau mengecil tanpa batas.
Bagaimana distribusi yang demikian dapat dibangun dari random number yang terdistribusi secara
Algoritma Box-Muller-Gauss untuk Membangkitkan Random Number Berdistribusi Normal dengan Mean m dan Standard Deviation s • Start with two uniform random numbers: • a in [0,2p) • rand in [0,1) • Then compute • Obtain two normally distributed numbers • b sin(a) + m • b cos(a) + m
Distribusi Eksponensial Distribusi eksponensial yang sering digunakan adalah distribusi yang PDFnya mengecil secara eksponensial. Distribusi ini juga disebut 1/f noise (pink noise) • noise = random • f = frekuensi; yaitu kejadian besar yang jarang terjadi • pink karena distribusi uniform sering disebut “white noise”.
Algoritma Pembangkit Random Number Berdistribusi Eksponensial dengan PDF rert, t>0, r<0 • Start with uniform random rand in [0,1) • Compute ln(rand)/r
Probability density function f(t) = 2e–2t untuk t > 0
Histogram dari 1000 random number ln(rand)/(–2)
Algoritma Metoda Rejection Untuk memperoleh random number dalam interval [a, b) yang berdistribusi f(x): • Generate randInterval, a uniform random number in [a, b) • Generate randUpperBound, a uniform random number in [0, upper bound for f ) • If f(randInterval) > randUpperBound then use randInterval
9.5 Random Walks
Random Walk Random walk merupakan pergerakan secara random dari suatu objek. Dalam simulasi dinamik, obyek bergerak dalam sel suatu matriks. Pada setiap waktu, obyek dapat bergerak, mungkin dengan memenuhi persyaratan tertentu, secara random ke sel tetangga.
Cellular Automata Cellular automata adalah model komputasi dinamik yang diskrit di dalam ruang, keadaan, dan waktu. Ruang dimodelkan sebagai array satu, dua, atau tiga dimensi. Setiap sel dalam array memiliki keadaan, dan banyaknya keadaan yang mungkin hingga. Aturan transisi memberikan relasi dan bagaimana sel akan berubah dari keadaan yang satu ke keadaan yang lain, yang akan menentukan perilaku sistem. Salah satu keuntungan adalah kita dapat memvisualisasikan perubahan setiap waktu melalui animasi yang informatif. Misalkan kita dapat melihat simuasi pergerakan semut ke sumber makanan, penyebaran api, atau pergerakan molekul gas dalam suatu wadah.
Aplikasi Random walk dapat memodelkan Brownian motion, yang merupakan perilaku molekul dalam larutan. Pada tahun 1827, Robert Brown mengamati bahwa pergerakan random serbuk sari dalam larutan tidak terjadi karena kehidupan di dalam serbuk sari tersebut. Maxwell, Clausius, dan Einstein kemudian menjelaskan bahwa partikel larutan (yang tidak terlihat) menabrak partikel serbuk sari (yang terlihat), sehingga mengakibatkan pergerakan-pergerakan kecil. Karena difusi dalam banyak hal, seperti polutan di atmosfir, kalsium dalam jaringan tulang, menunjukkan Brownian motion, simulasi yang menggunakan random walk dapat digunakan untuk memodelkan fenomena tersebut. Dalam genetika, random walks digunakan untuk mensimulasikan mutase gen. Peneliti menggunakan metoda polymerase chain reaction (PCR) untuk membuat banyak salinan dari suatu DNA. Untaian DNA memuat barisan dari empat basis A, T, C, and G. Dengan menggunakan teknik simulasi random walk, dapat ditentukan proporsi yang baik dari basis tersebut untuk mempercepat penggandaan DNA.
Algoritma untuk 2D Random Walk
Hasil Simulasi 2D Random Walk
Animasi
Contoh Simulasi Animasi
Jarak Tempuh Rata-Rata Buatlah algoritma randomWalkDistance berdasarkan algoritma randomWalkPoints, yang merupakan fungsi dengan parameter n, yang akan memberikan keluaran jarak antara titik pertama dan terakhir dari random walk dengan n langkah. Bagaimana dengan meanRandomWalkDistance yang memberikan keluaran jarak rata-rata?
Aplikasi 2D Cellular Automata
Contoh Soal 1.
Perform a simulation of Brownian motion of a pollen grain suspended in a liquid by generating a 3D random walk. Using documentation for your computational tool, investigate how to plot 3D graphics points and lines and create a 3D graphic of the walk.
2.
A hiker without a compass trying to find the way in the dark can step in any of eight directions (N, NE, E, SE, S, SW, W, NW) with each step. Studies show that people tend to veer to the right under such circumstances. Initially, the hiker is facing north. Suppose at each step probabilities of going in the indicated directions are as follows: N, 19%; NE, 24%; E, 17%; SE, 10%; S, 2%; SW, 3%; W, 10%; NW, 15%. Develop a simulation to trace a path of a hiker, and run the simulation a number of times. Describe the results. (Note that other than at the initial step, this simulation simplifies the problem by ignoring the direction in which the hiker faces.)