Mengukur Waktu Kalkulasi Persamaan dengan Maxima

Maxima adalah salah satu program gratis untuk membantu perhitungan matematika. Maxima jauh lebih keren daripada kalkulator biasa. Mirip-mirip matlab atau scilab, dia bisa buat ngitung persamaan aljabar, misalnya mencari faktor dari persamaan kuadrat atau menghitung perkalian persamaan dengan banyak variabel.

Saya pakai maxima di platform Linux, tepatnya Ubuntu Oneiric. Cara installnya tinggal kasih perintah lewat terminal:

sudo apt-get install maxima

tampilan maxima

Gambar di atas adalah salah satu contoh penggunaan maxima pada mode command line, yaitu untuk mencari nilai x dan y jika diketahui dua persamaan tertentu. %i adalah input, sedangkan %o adalah output. Perintah time berfungsi untuk mengetahui waktu yang dibutuhkan untuk kalkulasi, dalam proses di atas dibutuhkan waktu 0.58 detik! (saya kalau ngitung pakai cara manual –pakai tangan– butuh berapa menit yak?)

Mirip scilab dan matlab, maxima juga bisa menampilkan grafik suatu persamaan. Tapi GUI-nya harus di-install dulu, namanya wxmaxima.

sudo apt-get install wxmaxima

Membuat grafik dengan maxima

Kenapa saya pakai maxima? Kenapa gak pakai scilab aja yang dulu juga pernah dipakai pas praktikum teknik komputasi?

Saya sudah mencoba membandingkan performa keduanya. Yang saya butuhkan adalah aplikasi yang mampu menghitung dengan angka yang cukup besar. Dalam hal ini, ternyata maxima lebih baik daripada scilab.

perbandingan maxima dan scilab
kiri: maxima. kanan: scilab

Maxima bisa menghitung hasil dari 2 pangkat 200.000, meskipun hasilnya terlalu panjang untuk ditampilkan di wxmaxima. Kalau ngehitungnya dari commandline, hasil ini masih bisa ditampilkan meskipun ga semua hasil bisa kebaca karena puanjang buanget… Kalau pakai scilab, ngitung 2 pangkat 10000 aja dia udah males, katanya infinite (tak hingga).

Nah, ceritanya, saya mau mengukur berapa lama waktu yang dibutuhkan oleh si mesin pintar ini untuk menghitung suatu persamaan sederhana. Sebenarnya, waktu eksekusi hitungan bisa dilihat dari perintah time(%) di maxima (lihat gambar pertama). Masalahnya, dia cuma menampilkan dengan satuan detik. Padahal presisi yang saya butuhkan di satuan milidetik, atau kalau bisa malah mikrodetik!

Untuk mendapatkan hasil waktu dengan satuan mikrodetik, katanya bisa pakai fungsi gettimeofday(). Tapi saya belum tahu cara pakainya gimana, no idea @.@ Adakah para pembaca yang budiman yang bisa mengajarkannya kepada saya? #mataberkaca-kaca

Akhirnya saya mau coba pakai fungsi time yang sudah ada di Ubuntu. Presisinya cuma sampai milidetik sih, tapi gak papa lah. Perintah untuk maxima-nya nanti dipanggil lewat script.

Pertama, saya buat script maximanya dulu. Sederhana sekali, ditulis di text editor lalu disimpan dengan ekstensi .mac

dot mac Saya mau menghitung hasil dari 3 pangkat 270.000. Tanda $ ditambahkan biar hasil perhitungannya tidak perlu ditampilkan di layar.

Terus, dipanggil deh dari terminal… pakai -b untuk memproses file batch.

eksekusi script maxima
eksekusi script maxima

Voila! Ketauan deh waktu eksekusi dalam satuan milidetik πŸ™‚

Semoga bermanfaat πŸ˜‰

Saya masih berharap bisa tau waktunya dalam satuan mikrodetik 😦
Iklan

Penulis: fayruzrahma

always trying to be a simple person :)

2 thoughts on “Mengukur Waktu Kalkulasi Persamaan dengan Maxima”

  1. Kalo pake perintah date, opsi format +%s.%N, bisa menampilkan waktu (unix time) sampai nanosekon. Tinggal bandingkan aja waktu sebelum & sesudah eksekusi, ngitung selisihnya pake perintah `bc`, di ubuntu kan biasanya ada. Pake command misalnya

    setar=$(date +%s.%N); maksima -b skrip.mac; setop=$(date +%s.%N); echo "$setop-$setar" | bc

    .

    Suka

Ada komentar?

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s