Metode Monte Carlo

Metode Monte Carlo adalah algoritme komputasi untuk mensimulasikan berbagai perilaku sistem fisika dan matematika. Penggunaan klasik metode ini adalah untuk mengevaluasi integral definit, terutama integral multidimensi dengan syarat dan batasan yang rumit.

Teknik simulasi Monte Carlo terbagi atas lima langkah sederhana.

  1. Menetapkan suatu distribusi probabilitas bagi variabel yang penting.

Gagasan dasar simulasi Monte Carlo adalah membangkitkan nilai untuk variabel pada model yang sedang diuji. Pada sistem dunia nyata, sebagian besar variabel memiliki probabilitas alami, misalnya permintaan persediaan, waktu yang diperlukan untuk menyelesaikan aktivitas proyek. Cara menetapkan distribusi probabilitas bagi variabel tertentu adalah menguji hasil historis, yaitu dengan membagi frekuensi pengamatan untuk setiap output variabel yang mungkin dengan jumlah pengamatan total.

  1. Membuat distribusi probabilitas kumulatif bagi setiap variabel.

Mengubah distribusi probabilitas biasa menjadi sebuah distribusi probabilitas kumulatif (cumulative probability distribution)

  1. Menetapkan sebuah interval angka acak bagi setiap variabel.

Setelah distribusi probabilitas kumulatif bagi setiap variabel yang digunakan dalam simulasi ditetapkan, maka diberikan serangkaian angka yang mewakili setiap nilai atau output yang memungkinkan.

  1. Membangkitkan angka acak.

Angka acak dapat dihasilkan dengan dua cara. Jika persoalan yang dihadapi besar dan proses yang sedang diteliti melibatkan banyak percobaan simulasi, maka digunakan program komputer untuk membangkitkan angka acak. Jika simulasi dilakukan dengan perhitungan tangan, angka acak dapat diambil dari sebuah tabel angka acak.

  1. Menyimulasikan serangkaian percobaan.

Hasil dari eksperimen dapat disimulasikan secara sederhana dengan memilih angka acak.

Contoh Soal

Soal

Program Soal 3

from scipy import random
import numpy as np
import matplotlib.pyplot as plt

a = 0
b = 2
N=2500


def func(x):
    return (4-x**2)**0.5


area = []
for i in range(N):
    xrand = np.zeros(N)

    for i in range(len(xrand)):
        xrand[i] = random.uniform(a,b)
        integral = 0.0

    for i in range(N):
        integral+=func(xrand[i])

    jawab = (b-a)/float(N)*integral
    area.append(jawab)

plt.title("Hasil phi")
plt.hist(area,bins = 30, ec = 'black')
plt.xlabel("Area")
plt.show()

Output Soal 3

Output Soal 3

Dari output di atas, kebanyakan hasil yang keluar berada di dikisaran 3.15

Program Soal 4

from scipy import random
import numpy as np

a = -1
b = 1
N=100
xrand=np.zeros(N)
yrand=np.zeros(N)
zrand=np.zeros(N)
ulang=1

for i in range(5):
    integral=0.0
    for i in range(4):
        for i in range(len(xrand)):
            xrand[i]=random.uniform(a,b)

        for i in range(len(yrand)):
            yrand[i]=random.uniform(a,b)

        for i in range(len(zrand)):
            zrand[i]=random.uniform(a,b)

        def func(x,y,z):
            return (x**2)+(y**2)+(z**2)

        for i in range(N):
            integral+=func(xrand[i],yrand[i],zrand[i])

    jawab=(b-a)/float(N)*integral
    print("percobaan ke", ulang , ": ",jawab)
    ulang+=1

Output Soal 4

Output 4

Untuk output di atas bisa dilihat dari 5 percobaan hasil memiliki range antara 7.7 sampai 8.2.

Perhitungan manualnya adalah sebagai berikut

Manual

Terima Kasih atas perhatiannya semoga dapat membantu.