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*

posted at: 14:58 | path: /programming | permanent link | Tags , | comment(s): 4

Langkah Pertama Menguasai Smarty

Apa sih sebenarnya Smarty? Penjelasan pendeknya, Smarty adalah library PHP untuk mengolah tampilan berbasis web dari sebuah cetakan tampilan dan data dari skrip PHP.

Sistem template ini sangat penting dalam pekerjaan menampilkan halaman web dinamis. Pekerjaan mengkreasi tampilan dan logika pemrograman secara mudah dipisahkan. Sehingga tingkat kebergantungan akan dikurangi.

Cara kerja sistem template pernah saya tulis di disini, atau disini. Dalam tulisan ini saya akan membahas sistem templating yang lebih rumit dan lengkap.

Asumsi:

  • Sistem operasi Debian GNU/Linux 5.0 "Lenni",
  • PHP 5.2.6,
  • Smarty 2.6.26, bisa didapatkan dari URI ini,
  • Konfigurasi Apache 2.2.9 standar bawaan Debian,
  • Mampu menggunakan perintah baris di GNU/Linux.

Siapkan direktori kerja di bawah struktur direktory Apache, yaitu /var/www. Karena otoritas membuat file/direktori dalam direktori ini adalah user "root" maka kita harus mengubah efektif id kita menjadi root dengan perintah,

salman@neon:~$ su -
Password: 
neon:~# 

Perhatikan perintah di atas. Username yang digunakan sebelumnya adalah "salman" setelah perintah "su -", user menjadi "root". Sesuaikan dengan username yang Anda gunakan. Saatnya membuat struktur direktori kerja.

neon:~# mkdir -p /var/www/smarty/{templates,templates_c,cache,configs}
neon:~# chown -R salman:salman /var/www/smarty/
neon:~# chown www-data:www-data /var/www/smarty/{templates_c,cache}

Download file Smarty dari URI yang telah ditunjukkan di atas. Kemudian uraikan file tersebut.

salman@neon:~$ tar -xzvf Smarty-2.6.26.tar.gz 
salman@neon:~$ mv Smarty-2.6.26/libs/ /var/www/smarty

Struktur direktori akan nampak seperti ini,

/var/www/smarty
|-- cache
|-- configs
|-- libs
|   |-- internals
|   `-- plugins
|-- templates
`-- templates_c

Kita akan membuat sebuah halaman sederhana untuk menampilkan pesan yang sangat terkenal, "Hello World". Siapkan template untuk ditampilkan.

salman@neon:~$ cd /var/www/smarty
salman@neon:/var/www/smarty$ vi templates/index.tpl

Isi file adalah,

<HTML>
<BODY>
{$isi}
</BODY>
</HTML>

Setelah itu siapkan skrip yang akan menggunakan template ini.

salman@neon:/var/www/smarty$ vi index.php 

Isi file,

<?php
require libs/Smarty.class.php;

$smarty = new Smarty;
$smarty->assign("isi","Hello World.");
$smarty->display(index.tpl);
?>

Setelah itu akses file index.php menggunakan web browser. Isikan pada address bar browser. http://localhost/smarty/.

E.O.T

posted at: 22:36 | path: /programming | permanent link | Tags , , | comment(s): 0