Senin, 27 Mei 2013

Latex n Bash di Linux menyaingi macro Ms Word

Ternyata ga hanya di macro Microsoft office saja, di linux dengan latex dan Bash pun bisa..
Baru saja aku membuat eksperimen yang ga begitu menggemparkan dunia luar. Ah, mungkin hanya dunia imajinasiku saja. Walaupun begitu aku tetap senang dan gembira riang. Alhamdulillah, ini lumayan bisa mengisi pikiranku yang baru-baru ini sering berinteraksi dengan hati, terisi olehnya. Padahal, hanya dengan mengingat Allah, hati kita menjadi tenteram. Semoga saja ini juga termasuk ke dalam mengingat Allah. Oke, kita mulai perjalanan kita.
Kalau sebelumnya kita (mungkin lebih tepatnya aku) sering memakai macro Ms. Office untuk membuat soal (terutama macro Ms. Word), sekarang ternyata bisa lho dengan latex dan bash di linux. tampilannya kira-kira seperti ini saja
http://dl.dropbox.com/s/wg2zv7aucwjbd2d/recobayu.pdf
itu harusnya yang bentuk persamaan kuadratnya belum muncul dulu.. tapi ndak papa, untuk pertama, kenalan dulu boleh ya..
seperti biasa, aku menggunakan puppy linux, bahkan aku sudah mempostingnya di forum puppy linux ini:
http://murga-linux.com/puppy/viewtopic.php?p=705619#705619
aku menginstall latex dari emil, salah seorang matematikawan pengguna puppy linux juga dari forum sini juga:
http://murga-linux.com/puppy/viewtopic.php?t=61226
kemudian aku membuat sebuah script di rox filer yang nama filenya perskua.
kalau masih belum tau cara membuat sebuah script, gini saya beritau ya..
buka rox filer, (biasanya gambarnya rumah di pojok kiri atas desktop) kemudian klik kanan di dalam rox filer tadi, tapi di tempat kosong, pilih new, Script

Beri nama dengan perskua. kemudian tekan shift+klik file perskua tadi (bisa juga dengan klik kanan file perskua, muncul file 'perskua', kemudian pilih open as text). Langkah selanjutnya yang sangat menarik, kita masukkan script ini:

Setelah itu kita simpan, dan kita jalankan deh tuh file..
Nanti jadinya ya seperti ini ini:
http://dl.dropbox.com/s/wg2zv7aucwjbd2d/recobayu.pdf
gampang kan?

Rabu, 22 Mei 2013

Transportasi dari Tangerang ke Kopertis IV Bandung

Sehari yang lalu, pagi sekali setelah sholat subuh, kira-kira jam setengah enam aku berangkat menuju Kopertis IV Bandung. Malam hari sebelumnya aku siapkan bekal yang ada yaitu roti tawar dan tiga batang cokelat seharga dua ribuan, ini sangat menghemat perjalananku.

Aku ingat dulu waktu naik kereta biasanya di kereta membeli lontong dan gorengan. Aku anggap sama saja, roti dan cokelat. Tidak terlalu mahal dan awet, selain itu juga mengenyangkan. Tapi ingat, makannya selalu memakai tangan kanan ya.. biasanya kan kalau kita megang dua jenis makanan, misalnya lontong dan gorengan, kita pegang lontong di sebelah kanan dan gorengan di sebelah kiri. Lalu makan bergantian kiri dan kanan. Makan lontong dulu dengan tangan kanan, kemudian dilanjut lauknya, gorengan di sebelah kiri. Wah, itu ndak baik banget. Walaupun ada dua makanan, tetap saja kita nyontoh apa yang Nabi Muhammad Saw. Anjurkan, makan dengan tangan kanan. Terus gimana caranya coba? Ya bisa saja, dengan gantian. Tangan kanan megang roti, tangan kiri megang cokelatnya. Setelah makan roti tawarnya, gantian roti tawarnya dipegang tangan kiri, njur cokelatnya dioper ke tangan kanan, baru deh dimakan dengan tangan kanan. Gitu algoritmanya.. ah ribet! Terserah, mau dapet pahala karena nyontoh Nabi atau malah dapat dosa? Tuh kan, dari hal yang sebenarnya boleh-boleh saja seperti makan itu bisa jadi pahala, tapi bisa juga jadi dosa.


Bismillaahi tawakkaltu ‘alallaah
Laa haula walaa quwwata illaa billaah
Aku berangkat dari kelapa dua, gading serpong menuju halte bis Kebon Nanas. Tidak lama menunggu, sekitar jam enam kurang seperempat, bis ARIMBI datang dengan senyumnya yang mengembang. Aku membayar lima puluh ribu rupiah untuk sampai ke terminal Leuwi Panjang.
Bisnya enak kok, executive, tempat duduknya longgar, ada AC nya, di belakang juga ada smoking areanya. Nah, karena tadi pagi belum sarapan, aku makan deh roti dan cokelatnya. Enak lho..
Beruntung ada Ibu dosen Fakultas Kedokteran UNPAD yang duduk disampingku. Bersama Beliau sampai di terminal Leuwi Panjang aku naik Damri jurusan Dago – Leuwi Panjang. Cuma dua ribu rupiah lho.. itu sebanding dengan jaraknya yang lumayan jauh juga.

Setelah sampai di jalan Dipati Ukur, Unpad, aku ganti mobil angkot hijau jurusan Ciroyom – Cicaheum.

Sampai di jalan PH. Hasan Mustofa, tepatnya di depan STIE EKUITAS, aku membayar dengan tiga ribu rupiah.

Untuk informasi saja, Abang angkotnya itu agak bingung pas aku bertanya, “ini melewati kopertis ga bang?” “koperdis?” “Jalan PH Hasan Mustofa..” “Oh, iya ini lewat jalan Hasan Mustofa”. Pas sampai di depan bangunan yang tulisannya di atas genteng besar sekali, STIE EKUITAS, baru abangnya bilang, “Ini dek jalan Hasan Mustofa, sampai STIE..” dari situ kayaknya abangnya lebih mengenal STIE daripada kopertis deh.. apa karena kopertisnya sudah pindah di Jatinangor ya? Katanya yang di situ hanya diperbantukan saja. Alhamdulillah sampai di kopertis dengan selamat, kira-kira jam sepuluhan. Artinya perjalanan Tangerang Bandung itu sekitar empat jam. Bertemu pak Yuri, dan membicarakan beberapa hal.
Selesai dari sana, aku kembali dengan metode runut balik. Aku telusuri jejak-jejak pagi yang menjelang siang. Aku pun sholat dzuhur di atas ARIMBI yang melaju kencang.












Sampai di Tangerang baru bisa sholat ashar dengan nyaman. Alhamdulillah..
Ya. Bisa dirangkum jadi seperti ini.
1.       Naik ARIMBI dari Kebon Nanas sampai terminal Leuwi Panjang lima puluh ribu rupiah
2.       Naik DAMRI jurusan Leuwi Panjang – Dago dua ribu rupiah
3.       Naik angkot Cicaheum – Ciroyom, turun di depan STIE EKUITAS tiga ribu rupiah
Jadi kalau pulang pergi Cuma dengan seratus sepuluh ribu rupiah.
Hemat kan?





Minggu, 19 Mei 2013

coba cdf


Bismillah..
saya mendapatkan pelajaran menarik di sini. Bermula ketika pak Warno mengutak-atik cdf playernya. Ia ingin menampilkan file cdf yang bisa dianimasikan di web, di blogspot.com miliknya (usraty88.blogspot.com). Kalau saya boleh bilang, ini mirip dengan file geogebra yang juga bisa dianimasikan di blog. Cuma bedanya kalau geogebra menggunakan java, kalau wolfram mathematica pake format beda. File berformat '.cdf' bisa dibuka di beberapa platform operating system (kalau sekarang itu cuma linux, mac, sama windows saja, mungkin bisa jadi android dan ipad bisa, kapan-kapan..). Intinya sebenarnya mudah. kita buat file cdfnya dengan software berbayar wolfram mathematica. Kemudian file tadi kita upload ke cloud. Yang ini sebaiknya di dropbox saja, kalau yang google drive belum nyoba sih. tapi lebih mudah yang dropbox. setelah diupload ke sana, kita tinggal memanggilnya lagi. oh ya, untuk melihat animasi cdf nya kita harus nginstal cdf playernya dulu di komputer kita download di sini:
http://www.wolfram.com/cdf-player/
kemudian untuk milih2 os (linux, mac, apa windows), bisa diklik 'other platform'. kalau ngga ya cuma tulisan cdf player. oke kembali lagi ke masalahnya nah, pas di sini saya mengalami kesulitan karena alamat dropboxnya masih seperti ini:
http://www.dropbox.com/s/1p51c39crffhx7x/cinta.cdf
harusnya diganti tulisan www menjadi dl. jadinya linknya sekarang adalah seperti ini:
http://dl.dropbox.com/s/1p51c39crffhx7x/cinta.cdf.
lengkap ceritanya seperti ini.
pertama kita buat posting baru, kemudian 'compose' nya kita ganti menjadi 'HTML'. kemudian masukkan script ini:

selanjutnya tinggal dimasukkan script ini:

lihat kan, bukan www.dropbox.com, tapi jadi dl.dropbox.com
hasilnya seperti ini.

masih belum kelihatan? Tuh kan, berarti belum ada itunya, cdf playernya. ukuran filenya besar juga lho, sekitar 190 mb (tergantung os nya sih..). Baik, biar mengurangi penasarannya, ini saya tampilkan screenshotnya. kalau gambarnya kecil, bisa diklik biar jadi besar kok.
canggih kan?
saya tahu ini dari blognya pak zainul ini:
http://keadaantunak.blogspot.com/2012/04/periode-frekuensi-amplitudo.html
kemudian saya lihat source codenya dengan ngeklik kanan di halaman webnya, kemudian view source code. dan tak cari-cari akhirnya ketemu juga, dl.dropbox.com (bukan pake www.dropbox.com). satu lagi, kita tidak perlu menambahkan kode di header template blog kita, bisa kok. tapi ya itu, pas di awal tulisan postingan, kita tuliskan kode script src seperti di atas situ. malah kalau dengan cara ini blog kita lebih ringan dibuka. kenapa? karena pas ada orang yang mbuka postingan lain di blog kita, tidak perlu memanggil script cdfplayernya wolfram. tapi kalau kita ngutak-atik header di template blog kita, setiap kali ada orang yang mau membaca semua postingan kita, pasti memanggil javascriptnya cdfplayer. lebih berat!
buat pengetahuan saja ya..
ada ga ya cdf maker yang free atau opensource? :D
(mungkin yang mirip itu geogebra ya..)

Rabu, 15 Mei 2013

Membuat segitiga pascal di scilab


Bagaimana caranya membuat segitiga pascal di scilab?
Apa sih segitiga pascal itu?
Segitiga pascal itu seperti ini
           1                  //kombinasi 0
         1   1                //kombinasi 1
       1   2   1              //kombinasi 2
     1   3   3   1            //kombinasi 3
   1   4   6   4   1          //kombinasi 4
 1   5  10  10   5   1        //kombinasi 5
.......................
Masih ingat kombinasi?
Yang bentuknya seperti ini

Jadi segitiga pascal itu sebenarnya bisa ditulis seperti ini



Faktorial (!) dalam scilab sudah ada fungsinya, tinggal kita panggil saja. Sekarang berapa nilai dari 5! ?
Kita tulis di scilab perintah ini:
-->factorial(5)
 ans  =

    120. 
Segitiga pascal baris pertama adalah kombinasi 0, itu adalah c(0,0). Kita tulis dalam scilab
-->factorial(0)/(factorial(0)*factorial(0-0))
 ans  =

    1.
Sedangkan pada baris ke dua yang berisi kombinasi 1 adalah
-->factorial(1)/(factorial(0)*factorial(1-0))
 ans  =

    1.
dan
-->factorial(1)/(factorial(1)*factorial(1-1))
 ans  =

    1.
Untuk kombinasi 2, seperti ini
-->factorial(2)/(factorial(0)*factorial(2-0))
 ans  =

    1.
-->factorial(2)/(factorial(1)*factorial(2-1))
 ans  =

    2.
-->factorial(2)/(factorial(2)*factorial(2-2))
 ans  =

    1.
Untuk kombinasi 3 perintahnya seperti ini
-->factorial(3)/(factorial(0)*factorial(3-0))
 ans  =

    1.
-->factorial(3)/(factorial(1)*factorial(3-1))
 ans  =

    3.
-->factorial(3)/(factorial(2)*factorial(3-2))
 ans  =

    3.
-->factorial(3)/(factorial(3)*factorial(3-3))
 ans  =

    1.
Seperti itu seterusnya..
Jadi kalau kita menginginkan kombinasi 5 nya berarti perintahnya seperti ini
-->factorial(5)/(factorial(0)*factorial(5-0))
 ans  =

    1.
-->factorial(5)/(factorial(1)*factorial(5-1))
 ans  =

    5.
-->factorial(5)/(factorial(2)*factorial(5-2))
 ans  =

    10.
-->factorial(5)/(factorial(3)*factorial(5-3))
 ans  =

    10.
-->factorial(5)/(factorial(4)*factorial(5-4))
 ans  =

    5.
-->factorial(5)/(factorial(5)*factorial(5-5))
 ans  =

    1.


Ngulang lagi...
Dari script-script tadi, coba kita perhatikan. Ada hal yang sama bukan? Berarti bisa kita kerjakan dengan perulangan (looping). Kita singkat dengan script yang akan kita buat ini. Sebelumnya kita buka scinotes dengan mengeklik tombol ini pada toolbar.
Lalu kita tulis script ini. Mudah kok, Cuma tiga baris saja. (awalnya aja, :) selanjutnya berkembang deh..)
for i=0:5
    factorial(5)/(factorial(i)*factorial(5-i))
end
kemudian simpan dengan nama pascal.sce. Kita kembali ke console scilab dan menjalankan program pascal.sce tadi dengan perintah ini.
-->exec('pascal.sce')
Hal yang serupa akan muncul, tapi bedanya hanya dengan tiga baris script saja. Lebih mudah, bukan?
Sekarang kita masukkan nilai-nilai kombinasi itu ke dalam sebuah matriks, sebut saja matriks a. Yang perlu kita perhatikan adalah matriks tidak memiliki baris ke nol atau kolom ke nol, yang ada mulainya dari a(1,1). Jadi untuk mengatasinya kita tambahkan sedikit saja trik, menjadi seperti ini kemudian kita simpan lagi.
for i=0:5
    a(1,i+1)=factorial(5)/(factorial(i)*factorial(5-i))
end
Tapi ada yang aneh ketika kita jalankan programnya. Keluarannya seperti ini.
 a  =

    1. 
 a  =

    1.    5. 
 a  =

    1.    5.    10. 
 a  =

    1.    5.    10.    10. 
 a  =

    1.    5.    10.    10.    5. 
 a  =

    1.    5.    10.    10.    5.    1. 
Itu karena Scilab menampilkan hasil di setiap perulangan. Sebenarnya kalau kita panggil matriks a saja yang keluar cuma sekali saja.
-->a
a  =

    1.    5.    10.    10.    5.    1. 


Akan lain hasilnya kalau kita tambahkan titik koma di akhir perintah seperti ini.
for i=0:5
    a(1,i+1)=factorial(5)/(factorial(i)*factorial(5-i));
end
ketika kita jalankan yang muncul adalah tidak ada apa-apa. Makanya kita panggil matriks a pada akhir script.
for i=0:5
    a(1,i+1)=factorial(5)/(factorial(i)*factorial(5-i));
end
a
Setelah kita simpan, sekarang outputnya adalah seperti ini.
a  =

    1.    5.    10.    10.    5.    1. 
Itu adalah kombinasi ke lima dari segitiga pascal.


Melihat sekeliling lebih luas..

Sekarang kita generalisir untuk beberapa baris. Kalau untuk baris pertama (kombinasi 0) scriptnya seperti ini.
for i=0:0
    a(1,i+1)=factorial(0)/(factorial(i)*factorial(0-i));
end
a
untuk baris ke dua (kombinasi 1) scriptnya seperti ini.
for i=0:1
    a(1,i+1)=factorial(1)/(factorial(i)*factorial(1-i));
end
a
Untuk baris ke tiga (kombinasi 2), scriptnya seperti ini.
for i=0:2
    a(1,i+1)=factorial(2)/(factorial(i)*factorial(2-i));
end
a
baris ke empat (kombinasi 3) seperti ini
for i=0:3
    a(1,i+1)=factorial(3)/(factorial(i)*factorial(3-i));
end
a
baris ke lima (kombinasi 4) seperti ini
for i=0:4
    a(1,i+1)=factorial(4)/(factorial(i)*factorial(4-i));
end
a

baris ke enam (kombinasi 5) seperti ini
for i=0:5
    a(1,i+1)=factorial(5)/(factorial(i)*factorial(5-i));
end
a
dan seterusnya. Dari fakta-fakta di atas, kita bisa mempersingkat script untuk tiap baris, tinggal kita ganti saja bilangan yang berganti-ganti di atas menjadi seperti ini.
for j=0:6
    for i=0:j
        a(j+1,i+1)=factorial(j)/(factorial(i)*factorial(j-i));
    end
end
a
kita simpan, kemudian kita jalankan lagi hasilnya seperti ini.
a  =

    1.    0.    0.     0.     0.     0.    0. 
    1.    1.    0.     0.     0.     0.    0. 
    1.    2.    1.     0.     0.     0.    0. 
    1.    3.    3.     1.     0.     0.    0. 
    1.    4.    6.     4.     1.     0.    0. 
    1.    5.    10.    10.    5.     1.    0. 
    1.    6.    15.    20.    15.    6.    1. 
Ya! Kita sudah punya segitiga pascal secara otomatis. Tapi tunggu dulu, ada yang aneh, terlihat ada yang kurang nyaman di mata. Apa itu? Nolnya. Benar. Kenapa seperti itu? Itu karena matriks a itu isinya adalah bilangan. Sehingga sel yang kosong ditulis nol. Lalu, bagaimana biar nolnya hilang? Coba tebak, bagaimana caranya?

Tidak hanya di gitar,
String pun ada di sini..
Oke, ide yang bagus! Kita ganti matriks a menjadi matriks string. Untuk itu, agar matriksnya baru lagi, kita hapus dulu variabel yang ada, yaitu a dengan perintah clear. Perintah ini sebenarnya tidak hanya akan menghapus a saja, tapi semua variabel yang telah kita inputkan. Jadi sebaiknya di awal script kita tuliskan clear dulu. Setelah itu kita ubah tipe tiap unsur matriks itu menjadi string. Script akhirnya seperti ini.
clear
for j=0:6
    for i=0:j
        a(j+1,i+1)=string(factorial(j)/(factorial(i)*factorial(j-i)));
    end
end
a
ketika kita jalankan di console, keluarannya seperti ini nih..
a  =

!1                       !
!                        !
!1  1                    !
!                        !
!1  2  1                 !
!                        !
!1  3  3   1             !
!                        !
!1  4  6   4   1         !
!                        !
!1  5  10  10  5   1     !
!                        !
!1  6  15  20  15  6  1  !

Berinteraksi dengan User
Biar lebih keren, kita tulis permintaan “mau ditampilkan berapa kombinasi?” pada awal script. Pengguna aplikasi biasanya tidak mau terkekang oleh apapun. Semakin bebas ia bergerak, semakin lama juga ia akan menikmati program kita. Biarkan user memilih dan memasukkan bilangan yang menurutnya tepat. Dan tunggu saja, dia akan puas dengan hasil kerja keras kita. Ok, itu bisa dilakukan dengan mudah sekali, tinggal menambahkan perintah ini.
kombinasi=input('mau ditampilkan berapa kombinasi?')
selanjutnya kita ganti j nya yang tadinya dari nol sampai 6 saja, menjadi dari nol sampai variabel kombinasi. Script lengkapnya sekarang seperti ini.
clear
kombinasi=input('mau ditampilkan berapa kombinasi?')
for j=0:kombinasi
    for i=0:j
        a(j+1,i+1)=string(factorial(j)/(factorial(i)*factorial(j-i)));
    end
end
a
dan output yang muncul pertama kali seperti ini.
mau ditampilkan berapa kombinasi?
Kalau kita memasukkan nilai 10, maka secara otomatis segitiga pascal yang terbentuk itu seperti ini.

a  =

!1                                              !
!                                               !
!1  1                                           !
!                                               !
!1  2   1                                       !
!                                               !
!1  3   3   1                                   !
!                                               !
!1  4   6   4    1                              !
!                                               !
!1  5   10  10   5    1                         !
!                                               !
!1  6   15  20   15   6    1                    !
!                                               !
!1  7   21  35   35   21   7    1               !
!                                               !
!1  8   28  56   70   56   28   8    1          !
!                                               !
!1  9   36  84   126  126  84   36   9   1      !
!                                               !
!1  10  45  120  210  252  210  120  45  10  1  !
Canggih kan?



Jadikan ia lebih indah,
dengan simetri di tengah
Sudah merasa puas? Jangan dulu. Seitiga pascal yang terbentuk itu masih di pinggir. Sekarang bagaimana kalau segitiganya itu biar jadi benar-benar simetri di tengah gitu? Coba dikerjakan. Kuncinya adalah permainan letak dalam matriks. Baris pertama biar jadi di tengah-tengah, baris kedua dan seterusnya membentuk segitiga. Letak yang berpengaruh adalah pada kolom, jadi barisnya masih sama.
Nyerah? Jangan dulu, ayo coba dulu, asah otak kita biar jadi semakin tajam.
Sudah jadi? Ya! Betul sekali.. Seperti inilah scriptnya.
clear
kombinasi=input('mau ditampilkan berapa kombinasi?');
for j=0:kombinasi
    for i=0:j
        a(j+1,kombinasi-2*i+j+1)=string(factorial(j)/(factorial(i)*factorial(j-i)));
    end
end
a
dan keluarannya seperti ini.
-->exec('pascal.sce')

mau ditampilkan berapa kombinasi?7


-->a
 a  =

!                        1                           !
!                                                    !
!                    1       1                       !
!                                                    !
!                1       2       1                   !
!                                                    !
!            1       3       3       1               !
!                                                    !
!         1      4       6       4       1           !
!                                                    !
!      1     5       10      10      5      1        !
!                                                    !
!   1     6      15      20      15      6     1     !
!                                                    !
!1     7     21      35      35      21     7     1  !
Canggih!
Semoga bermanfaat.
:)
– 340706 –

Ku tantang kau!
Bagaimana biar segitiga pascalnya seperti ini?
a  =

!                         1  !
!                            !
!                      1  1  !
!                            !
!                  1   2  1  !
!                            !
!              1   3   3  1  !
!                            !
!          1   4   6   4  1  !
!                            !
!      1   5   10  10  5  1  !
!                            !
!   1  6   15  20  15  6  1  !
!                            !
!1  7  21  35  35  21  7  1  !

pdfnya bisa diunduh melalui google drive sini: