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*
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
Menampilkan File Text Secara Interaktif
Setelah beberapa hari terpikir bagaimana menampilkan text secara interaktif di web browser, inilah skrip pertama untuk menuju ke arah tersebut.
Untuk mencoba skenario ini perlu dibuat dua skrip php, yang pertama adalah skrip untuk membuat bilangan random dan menyimpannya dalam sebuah file text.
<?php
$fp = fopen("data.log", "a+");
while (1) {
$rnd = rand(1,64000)."\n";
fwrite($fp, $rnd);
sleep(1);
}
?>
Yang kedua adalah skrip untuk menampilkan isi file yang dihasilkan oleh skrip yang pertama.
<?php
$lastlen = 0;
$filename = "data.log";
while (1) {
$fp = file($filename);
$len = count($fp);
if ($lastlen < $len) {
for ($x=$lastlen; $x<$len; $x++) {
echo $fp[$x];
}
}
$lastlen = $len;
}
?>
Untuk mencoba jalankan perintah berikut di console,
salman@neon:~$ php random.php &
salman@neon:~$ php showrandom.php
Pekerjaan rumah berikutnya adalah bagaimana skrip ini diakses dan berjalan di web browser.
E.O.N.>
PHP: Template
Pengantar
Template secara bahasa bisa diartikan sebagai cetakan. Dengan template ini bila ingin membuat sebuah benda, katakanlah sebuah mainan, kita tidak perlu lagi memikirkan bagaimana bentuknya. Kita hanya perlu memikirkan apa bahan yang akan kita pakai. Sedangkan bentuknya akan dipikirkan dan dibuat oleh orang lain.
Begitu pula dalam pengembangan sebuah halaman web, sering dijumpai pekerjaan desain halaman html yang berbeda-beda dengan isi yang sama. Tentu saja ini akan menyita waktu jika harus memasukkan tag-tag html dalam skrip. Karena setiap desain berubah programmer harus mengubah kode program dari halaman web yang bersangkutan.
Karena kesulitan ini timbul ide untuk memisahkan antara pekerjaan desain dan skrip, sehingga tingkat ketergantungan antara desain dan skriping tidak terlalu kuat. Para desainer dapat dengan bebas mengubah desain mereka tanpa mengharuskan para programmer mengubah skrip yang mereka buat. Tentu saja harus ada persetujuan-persetujuan yang dibuat antara para programmer dan desainer. Dengan cara ini waktu yang dibutuhkan dalam pekerjaan pembuatan halaman web akan leih sedikit, dengan hasil yang maksimal.
Ada banyak paket pemroses template yang bisa didapatkan dari internet. Misalnya FastTemplate, XTemplate, flextemplate, dan phplate. Alih-alih menjelaskan paket-paket yang tersedia ini saya memberikan contoh sebuah program pemroses template sederhana, sehingga cara kerjanya dapat kita runut dengan mudah.
Memilih-milih Warna untuk Web
Memilih warna untuk sebuah halaman web atau aplikasi berbasis web seharusnya pekerjaan yang mudah. Akan tetapi bagi saya yang tidak punya selera seni, pekerjaan itu justru justru sulit dan memakan waktu. Setelah mencari-cari menggunakan Google, saya temukan sebuah website yang sangat membantu.
Website yang saya temukan adalah http://www.colr.org. Website yang dibuat dengan menggunakan http://webpy.org/ ini bisa kita gunakan untuk mengumpulkan warna-warna yang sudah menjadi pilihan kita. Selain itu kita juga bisa mendapatkan skema warna berdasarkan foto yang bisa kita upload. Disediakan juga skema warna yang dibuat dari foto acak dari situs stok foto, yaitu flickr. Selain itu tema-tema warna juga bisa didapatkan dari website lain yang kita ketahui URL-nya.






