Tag
2D, 3D, GNU Octave, kalkulasi, Linux, M File, Math, Matlab, Matriks, mesh, Metode Numerik, Plot, shell, Simulink, tutorial, vector
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> m3m3 =3 4 52 6 1octave:15> m3'ans =3 24 65 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 -qoctave: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.