Definit Integral Metode Monte Carlo

Hari ini mendapat email dari seorang mahasiswa, begini bunyinya:

Bapak salaman sya mau bertanya. ini saya attach. sebelumnya terimaksih banyak ya bapak

Dan isi file attachment dalam format “doc” adalah:

bapak, saya mau menanya bagaimana skrip untuk perhitungan metode monte carlo dengan cara membangkitkan bilangan acak.

Dalam integral monte carlo ada rumus begini :

Dengan N = banyaknya data yang dibangkitkan.

Algoritmanya begini mas :
1. bangkitkan data dalam interval a sampai b
2. masukkan nilainya ke dalam fungsi g(x) lalu jumlahkan nilainya
3. hitung rata-rata lalu kalikan dengan (b-a) sebagai taksiran nilai integral yang dicari.

Misal ada soal begini :

bagaimana cara menyelesaikan dengan script python dengan integral monte carlo….? mohon saya diberi contoh skripnya ya bapak

Sebelumnya saya ucapkan terimakasih banyak atas kebaikan bapak

Entah iseng atau kurang kerjaan, saya jawab pertanyaan ini.

Berikut jawaban saya:

Berikut ini skrip yang dimaksud. Saya buat secara cepat dengan menggali ingatan hampir 14 tahun yang lalu. Tidak ada upaya optimasi apapun, hanya menerjemakan algoritma “monte carlo” yang berbasis bilangan acak. Dan perlu diingat bilangan acak ini, karena dibuat oleh komputer sifatnyat tidak benar-benar acak. Sering disebut “quasi random”.

#!/usr/bin/python
from math import *
from random import *

# ubah fungsi ini.
def equation(x):
        return x*x

def genrand(a,b,n):
        step = (b-a)/n
        pairs = []
        l = a
        while (l<n):
                x = uniform(a,b)
                pairs.append([x, equation(x)])
                l = l + step
        return pairs

def calculate(a,b,n):
        pairs = genrand(a,b,n)
        points = len(pairs)
        y = 0
        for x in pairs:
                y = y + x[1]
        avg = y/points
        bmina = b - a
        return bmina*avg

a = 2.0
b = 8.0
n = 1000
print ""
print "a = %s, b = %s, n= %s" % (a,b,n)
print "Definit integral: %s" % calculate(a, b, n)
print 40*"-"
print "notes: change equation() definition"
print ""

Gunakan dengan bijak dan tidak ada pernyataan apapun. Resiko apapun ditanggung pengguna. *LOL*

2 Responses

  1. hendro
    hendro at ·

    pak, saya minta bantuannya buat penyelesaian soal dengan script matlab monte carlo

    Diketahui dalam suatu rangkaian elektronica mengalir arus dengan persamaan

    i(t)=t.e -2t

    Daya rata-rata dalam suatu perioda dirumuskan dengan :
    T
    P=R/T integral | i kwadrat (t)dt
    0

    Dengan P adalah daya rata-rata, R adalah hambatan rangkaian, dan T adalah periode,

    Hitung menggunakan script matlap

    a). Jika periode 2 secon dan hambatan 2 KΩ, tentukan besar daya rata-rata.
    ( gunakan Metode Monte Carlo )
    b). Carilah nilai maksimum arus i ( t ) pada saat 0 < t <2
    ( gunakan Metode Monte Carlo )

Comments are closed.