salman.or.id

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): 3

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

Info Sekilas Filesystem FAT32

Berikut info yang saya dapat dari url:

Berikut ringkasannya:

  • Ukuran kluster tidak bisa lebih besar atau sama dengan 64KB. Beberapa program akan sangat bermasalah dengan ukuran lebih besar dari batas ini.
  • Jumlah kluster maksimum adalah 268,435,445. Jika tiap kluster maksimal memuat 32KB maka jumlah seluruhnya adalah sekitar 8TB.
  • Boot sector menggunakan 32bit untuk menyimpan jumlah sektor, sehingga ukuran maksimal adalah 2TB pada harddisk dengan ukuran 512Byte/sektor. (2^32*512Byte = 2TB).
  • Tools di Windows XP/Windows 2K tidak mampu membuat fileystem FAT32 dengan ukuran lebih besar dari 32GB. Akan tetapi bisa mengakses filesystem lebih besar dari itu.
  • Kita tidak bisa membuat file dengan ukuran lebih besar dari 4GB-1Byte dalam sebuah partisi FAT32.

Bila mempunyai harddisk eksternal dengan ukuran besar (>60GB) dan ingin menggunakan hanya satu partisi dengan filesystem FAT32. Gunakan tools di sistem operasi GNU/Linux.

neon:~# mkfs.vfat -n RAISING -c -v -m bootmsg.txt /dev/sdb1
mkfs.vfat 3.0.1 (23 Nov 2008)
Auto-selecting FAT32 for large filesystem
/dev/sdb1 has 255 heads and 63 sectors per track,
logical sector size is 512,
using 0xf8 media descriptor, with 156296322 sectors;
file system has 2 32-bit FATs and 32 sectors per cluster.
FAT size is 38140 sectors, and provides 4881875 clusters.
Volume ID is 65e9d871, volume label RAISING    .

Hasil filesystem yang dibuat dengan perintah di atas. Ukuran klusternya 32*512Byte=16kByte.

Selesai

E.O.T

posted at: 07:20 | path: /others | permanent link | Tags , | comment(s): 1

Update Pidgin dari Repository Backports

Akhir-akhir ini terdapat masalah koneksi antara messenger klien pidgin versi 2.4 dengan server messenger yahoo. Awal-awal terjadi masalah bisa diatasi dengan mengganti server messenger. Akan tetapi dalam seminggu ini server-server alternatif ternyata juga sudah diupdate oleh yahoo, sehingga pidgin tidak bisa lagi digunakan untuk yahoo messenger

Solusi satu-satunya adalah mengupdate pidgin dengan versi terbaru. Berhubung paket standard distribusi Debian Lenny adalah pidgin versi 2.4, maka perlu dicari server alternatif lain yang menyediakan versi yang lebih baru yaitu versi 2.6.

Berdasarkan informasi dari milis tanya-jawab@linux.or.id yang diposting oleh nugrahadi@gmail.com, paket-paket backport bisa didapatkan dari alamat http://repo.ugm.ac.id/debian-backports.

Ikuti perintah-perintah berikut untuk menginstall pidgin versi 2.6.

neon:~# echo "deb http://repo.ugm.ac.id/debian-backports \
lenny-backports main contrib non-free" >> /etc/apt/sources.list
neon:~# wget http://repo.ugm.ac.id/debian-backports/archive.key
neon:~# apt-key add archive.key
neon:~# apt-get update
neon:~# apt-get -t lenny-backports install pidgin

Selesai. Jalankan pidgin kembali.

E.O.T

posted at: 19:34 | path: /debian | permanent link | Tags , , | comment(s): 0

Updates SSL Self-signed Certificate pada Zimbra

Setelah setahun instalasi Zimbra mail server kita gunakan, sertifikat SSL untuk mengakses halaman-halaman HTTPS dan jalur aman TLS akan kadaluarsa. Berikut tips singkat untuk mengupdate self-signed certificate pada sistem mail server yang menggunakan Zimbra versi 5.0 ke atas yang berjalan pada GNU/Linux Debian Etch 4.0.

Tips ini disarikan dari halaman wiki Administration Console and CLI Certificate Tools. Lebih singkat dan lebih mudah.

mail:~# cd /opt/zimbra/bin/
mail:/opt/zimbra/bin# ./zmcertmgr createca -new
mail:/opt/zimbra/bin# ./zmcertmgr createcrt -new -days 365
mail:/opt/zimbra/bin# ./zmcertmgr deploycrt self
mail:/opt/zimbra/bin# ./zmcertmgr viewdeployedcrt
mail:/opt/zimbra/bin# su - zimbra
zimbra@mail:~$ zmcontrol stop
zimbra@mail:~$ zmcontrol start
zimbra@mail:~$ exit
mail:/opt/zimbra/bin# exit

Selesai

E.O.T

posted at: 21:50 | path: /zimbra | permanent link | Tags , , | comment(s): 3