Tag

, , , , , , , , , , , , , , ,


The sombrero is the unofficial GNU Octave logo.

Image via Wikipedia

Bismillah.

Teringat masa kuliah dulu, ketika kuliah Praktikum Metode Numerik dan Praktikum Aljabar Linier dan Matriks yang ketika itu menggunakan Matlab. Pada waktu itu (sekitar semester 3 atau 4, af1 lupa :p), praktikum ini adalah salah satu Praktikum yang belum bisa saya porting ke Linux, karena waktu itu masih belum tau harus menggunakan apa. Sayapun telah mencari applikasi-aplikasi yang mirip seperti Matlab untuk Linux dan menemukan salah satunya yakni Simulink. Namun karena ukuran installer terlalu besar, akhirnya niat untuk memporting praktikum ini pun jadi luntur.

Beberapa minggu yang lalu, seorang teman (yakni si Budi) datang ke Kos menanyakan tetang sebuah kasus Interpolasi Newton yang diimplementasikan dengan Matlab. Tentunya saya pun sudah lupa apa itu Interpolasi Newton, soalnya sudah 3 tahun tidak mempelajarinya lagi. Akhirnya teringat untuk mencari Applikasi yang bisa menggantikan Matlab di Linux. Setelah beberapa menit membongkar Ubuntu Software Center, akhirnya ketemu juga applikasi GNU Octave dan QtOctave.

GNU Octave adalah bahasa tingkat tinggi yang digunakan untuk operasi Komputasi Numerik. GNU Octave menyediakan interface berbasis Command Line yang mudah digunakan untuk mengolah masalah Linier dan non Linier secara numerik serta untuk melakukan percobaan Linier lainnya yang menggunakan bahasa yang kompatibel dengan Matlab. Sedangkan QtOctave adalah Front-end untuk GNU Octave yang berbasis GUI.

Gambar: Tampilan GNU Octave

Gambar: QtOctave

Interface Qt Octave memang mirip dengan interface Matlab, sehingga sangat memudahkan kita jika ingin beralih ke Octave.

Seperti halnya Matlab, GNU Octave juga dilengkapi dengan banyak fasilitas misalnya untuk simulasi, Plot (2D dan 3D) serta masih banyak yang lainnya yang ada pada Paket GNU Octave.

Contoh-contoh penggunaan:

Untuk menggunakan Octave kita tidak perlu menginstall QtOctave,Karena QtOctave adalah interface untuk octave yang berbasis GUI. Untuk mencobanya jalankan melalu terminal dengan mengetikkan “octave”, maka kita akan dibawa ke Octave CLI.

Nah, berikut adalah contoh-contoh penggunaannya:

Help

Help atau manual atau dokumentasi, adalah bagian yang paling sering kita akses ketika baru belajar. Dalam Matlab, perintah help ini digunakan untuk mendeskripsikan detail informasi dari perintah yang kita cari. Miasalnya perintah “help sin” akan menampilkan informasi bagaimana menggunakan perintah sin. Contohnya:

Operasi Numerik dasar.

Seperti namanya, operasi numerik dasar melibatkan operasi-operasi aritmatika standar seperti penjumlahan, perkalian dan lainnya. Misalnya:

octave:1> a = 10
a = 10
octave:2> b = 13
b = 13
octave:3> c = a + b
c = 23
octave:4> 

Menggunakan fungsi-fungsi built-in dalam Octave:

octave:4> x = sqrt(a);
octave:5> y = sin(x)/x
y = -0.0065407
octave:6> 

Memanggil script yang berada pada M file. Misalkan:

baka@baka-yarou:~/Disk/Baka-Asa/Project/Octave$ cat operasi.m
satu = 1;
dua = 2;
jumlah = satu + dua
baka@baka-yarou:~/Disk/Baka-Asa/Project/Octave$ octave -q operasi.m
jumlah = 3

Memanggil M file dari dalam Octave command line, dengan contoh M file sama seperti di atas:

octave:1> operasi
jumlah = 3
octave:2> whos
Variables in the current scope:
 Attr Name Size Bytes Class
 ==== ==== ==== ===== ===== 
 ans 1x30 30 char
 dua 1x1 8 double
 jumlah 1x1 8 double
 satu 1x1 8 double
Total is 33 elements using 54 bytes
octave:3> 

Ket: whos : digunakan untuk menampilkan variabel-variabel yang masih aktif serta typenya.

Penting: Untuk dapat memanggil M file, jalankan octave melalui direktory kerja dimana M file tersebut di simpan.

Operasi Vector dan Matrix.

Berbicara operasi Linier dan non Linier, berarti suatu waktu pasti akan berhubungan dengan vector dan Matriks. Berikut adalah contoh penggunaan octave untuk operasi vector dan Matriks.

1. Vector

  • Raw Vector v = ( 1, 2, 3, 4, … , n) :
octave:1> v = [ 1, 2, 3, 4]
v =
 1 2 3 4
  • Vector kolom v = ( 1, 2, 3, 4, …, n)T :
octave:2> v1 = [ 1; 2; 3; 4]
v1 =
 1
 2
 3
 4
  • Otomatisasi pembuatan vektor format start[:increment]:end :
octave:3> v2 = 1:2:10
v2 =
 1 3 5 7 9

ket: start = 1

increment = 2

end = 10

contoh lain:

octave:5> v3 = 3:.1:3.5
v3 =
 3.0000 3.1000 3.2000 3.3000 3.4000 3.5000

ket: start = 3

increment = 0.1

end = 3.5

Silahkan ber-experimen dengan vector-vector lainnya.

2. Matrix

  • Basic Matrix:
octave:6> m1 = [ 3 4; 2 6 ]
m1 =
 3 4
 2 6

Ket: Setiap elemen pada satu baris dipisahkan dengan spasi, sedangkan untuk memisahkan baris dengan tanda titik-koma “;”.

  • Matriks dari Matriks lain:
octave:6> m1 = [ 3 4; 2 6 ]
m1 =
 3 4
 2 6
octave:7> m2 = [5;1]
m2 =
 5
 1
octave:8> m3 = [m1 m2]
m3 =
 3 4 5
 2 6 1

Contoh Matriks yang lainnya:

octave:9> eye(4,5)
ans =
Diagonal Matrix
 1 0 0 0 0
 0 1 0 0 0
 0 0 1 0 0
 0 0 0 1 0
octave:10> eye(5)
ans =
Diagonal Matrix
 1 0 0 0 0
 0 1 0 0 0
 0 0 1 0 0
 0 0 0 1 0
 0 0 0 0 1
octave:11> zeros(5,4)
ans =
 0 0 0 0
 0 0 0 0
 0 0 0 0
 0 0 0 0
 0 0 0 0
octave:12> ones(4)
ans =
 1 1 1 1
 1 1 1 1
 1 1 1 1
 1 1 1 1
octave:13> rand(4,5)
ans =
 0.936805 0.852671 0.897754 0.584289 0.268106
 0.612981 0.503717 0.971887 0.480078 0.313671
 0.574542 0.656631 0.762392 0.477671 0.516981
 0.063538 0.080521 0.839698 0.042325 0.920507

Aritmatika dasar Matriks:

Transpose Matriks transpose A = A’:

octave:14> m3
m3 =
 3 4 5
 2 6 1
octave:15> m3'
ans =
 3 2
 4 6
 5 1

Operasi Aritmatika dasar, contoh:

octave:21> A = [1 2; 4 3]; B = 3*ones(2,2);
octave:22> A+B, A-B, A*B
ans =
 4 5
 7 6
ans =
 -2 -1
 1 0
ans =
 9 9
 21 21

Operasi dengan Elemen Matriks:

Perhatikan dua contoh berikut dengan Matriks A sama seperti di atas. Pada contoh pertama, operasi untuk memangkatkan masing-masing elemen yang ada pada matriks (perhatikan operasinya, ada tanda titik diantara Matriks dengan operatornya).

octave:24> A.^2
ans =
 1 4
 16 9

Sedangkan untuk contoh di bawah ini sama saja dengan matriks A*A:

octave:25> A^2
ans =
 9 8
 16 17

Indexing, Slicing dan operasi-operasi vector dan matriks lainnya:

  • mengambil elemen vector
octave:26> v
v =
 1 2 3 4
octave:27> v(2)
ans = 2
  • mengambil elemen matriks
octave:28> A
A =
 1 2
 4 3
octave:29> A(2,2)
ans = 3
  • memotong Vector
octave:30> v
v =
 1 2 3 4
octave:31> v(2:4)
ans =
 2 3 4
  • memotong matriks
octave:33> A(1,:)
ans =
 1 2
octave:34> A(:,2)
ans =
 2
 3
  • Mendapatkan dimensi Vector dan Matriks (ket: v -> vector, C -> Matriks):
octave:49> length(v)
ans = 4
octave:50> [Baris,Kolom]=size(C)
Baris = 4
Kolom = 4
  • Transformasi Matriks:

diketahui matriks m3:

octave:58> m3
m3 =
 3 4 5
 2 6 1

Reshape (tranformasi matriks):

octave:59> reshape(m3,3,2)
ans =
 3 6
 2 5
 4 1

Diagonal Matriks (hasil berupa vector)

octave:60> diag(m3)
ans =
 3
 6

contoh lain:

octave:61> C
C =
 2 3 4 5
 1 2 3 4
 4 3 2 1
 7 6 5 4
octave:62> diag(C,2)
ans =
 4
 4
octave:63> diag(C)
ans =
 2
 2
 2
 4
octave:64> diag(C,1)
ans =
 3
 3
 1
octave:65> diag(C,-1)
ans =
 1
 3
 5
  • invers Matriks:
octave:67> inv(A)
ans =
 -0.60000 0.40000
 0.80000 -0.20000

Operasi Kontrol.

Operasi kontrol biasanya digunakan dalam M file, berikut adalah beberapa operasi kontrol tersebut:

Fungsi

fungsi adalah kumpulan perintah yang tujuannya untuk mempermudah pemanggilan susunan perintah atau rumus yang panjang dengan cukup memanggil nama fungsinya saja. misalnya:

function y = tambah(x,y)
 y = x + y;
end

Simpan dengan nama file tambah.m, kemudian jalankan octave. panggil fungsi dengan memanggil nama file dan dilewatkan parameter x dan y contoh:

octave:1> tambah(4,5)
ans = 9

Fungsi dengan hasil lebih dari satu:

function [a,b] = plusminus(x,y)
 a = x + y;
 b = x - y;
end

Hasil ketika dipanggil:

octave:2> [tambah, kurang] = plusminus(2,5)
tambah = 7
kurang = -3

Perulangan

file mbohlah.m

function y = mbohlah(x)
     y = x^2*sin(x);
end

file loopmbohlah.m

for n = 1:5
    x(n) = mbohlah(n)
end

hasil ketika dijalankan:

$ octave -q loopmbohlah.m
x = 0.84147
x =
 0.84147 3.63719
x =
 0.84147 3.63719 1.27008
x =
 0.84147 3.63719 1.27008 -12.10884
x =
 0.84147 3.63719 1.27008 -12.10884 -23.97311

Menggunakan while:

baka@baka-yarou:~/Disk/Baka-Asa/Project/Octave$ cat loopwhile.m
t = 1;
T = 20;
while t<T %selama nilai t l;ebih kecil dari T
 t=t+2 
end
baka@baka-yarou:~/Disk/Baka-Asa/Project/Octave$ octave -q loopwhile.m 
t = 3
t = 5
t = 7
t = 9
t = 11
t = 13
t = 15
t = 17
t = 19
t = 21

Ket: semua token yang ada setelah tanda % (persen) dianggap sebagai komentar.

Percabangan (seleksi)

file besarmana.m

function A = besarmana(x,y)
  if x == y
    fprintf('Nilai X sama dengan Y yakni %3d\n',x)
  else if x > y
    fprintf('Nilai X lebih besar dari Y\n')
  else
    fprintf('nilai Y lebih besar dari X\n')
  end
end

hasil percobaan:

baka@baka-yarou:~/Disk/Baka-Asa/Project/Octave$ octave -q
octave:1> besarmana(4,4)
Nilai X sama dengan Y yakni 4
octave:2> A=3;B=27;
octave:3> C=B/A;
octave:4> besarmana(A,C)
nilai Y lebih besar dari X
octave:5> 

Grafik

GNU Octave telah mendukung pembuatan Grafik atau plot. Plot yang tersedia yakni 2 dimensi, dan 3 Dimensi (mesh).

2D

berikut contohnya:

octave:1> x=-10:.1:10;
octave:2> y=sin(x);
octave:3> plot(x,y)
octave:4> grid

Dengan hasil grafik:

contoh lain:

dengan hasil:

3D

Contoh:

baka@baka-yarou:~/Disk/Baka-Asa/Project/Octave$ octave -q
octave:1> x=-5:0.1:5;
octave:2> [xx,yy]=meshgrid(x,x);
octave:3> z=sin(xx.^2-yy.^2);
octave:4> mesh(x,x,z);
octave:5>

dengan hasil grafik:

Serta masih banyak lagi implementasi dasar lainnya yang masih belum sanggup saya terangkan di sini. Semoga penjelasan singkat ini bisa bermanfaat bagi teman-teman yang membutuhkan. And in the end, CMIIW.

Wassalam.