Operasi Matriks Octave

Panduan Praktikum 3 Octave
Edy Wihardjo, S.Pd. M.Pd.
edisi revisi: 3 Maret 2018

Pendahuluan

Tipe data yang yang sudah dikenalkan pada bagian satu adalah skalar (misalnya 100, 2.1 dan 1e-3). Pada bagian ini kita akan mengenal tipe data matriks, yaitu kumpulan skalar yang tersusun dalam baris dan kolom.

Bab ini mengasumsikan pembaca sudah mengenal matriks dan berbagai operasinya seperti perkalian antar matriks dan pencarian invers matriks. Pembahasan mengenai hal tersebut dapat ditemukan di buku-buku aljabar linier.

Membuat Matriks

Cara yang paling mudah untuk membuat matriks adalah dengan menuliskan elemen-elemennya. Elemen pada baris yang sama dipisahkan menggunakan koma (,), sedangkan untuk membatasi baris digunakan titik koma (;). Lihat contoh berikut

>> [1,2,3; 4,5,6]
ans =
   1   2   3
   4   5   6
>> [2,3,5,7]
ans =
   2   3   5   7
>> [2;3;5;7]
ans =
   2
   3
   5
   7

Saat membuat matriks, koma bisa digantikan dengan spasi. Jadi

>> [2 3 5 7] 
ans =
   1   2   3   4

artinya sama dengan

>> [2,3,5,7]
ans =
   1   2   3   4

Fungsi-fungsi yang menghasilkan matriks contohnya adalah zeros, eye, dan rand. zeros menghasilkan matriks yang semua elemennya 0, eye dapat menghasilkan matriks identitas, dan rand menghasilkan matriks yang nilai elemennya random (berada dalam interval [0,1)). Jika dipanggil menggunakan sebuah argumen skalar a, maka ukuran matriks yang dibuat adalah a x a. Jika dipanggil menggunakan dua argumen skalar a dan b, maka ukuran matriks yang dihasilkan adalah a x b.

Berikut contohnya:

Matriks Nol

>> zeros(2)
ans =
   0   0
   0   0

Matriks Identitas

>> eye(2)
ans =
Diagonal Matrix
   1   0
   0   1

Matriks Acak

>> rand(2)
ans =
  0.41055  0.24794
  0.26737  0.88569
>> eye(2,4)
ans =
   1   0   0   0
   0   1   0   0

Tentunya matriks dapat disimpan di sebuah variabel. Perlu diketahui bahwa tipe variabel di Octave tidaklah statis. Suatu variabel dapat bertipe skalar pada waktu tertentu dan bertipe matriks pada waktu lainnya. Perhatikan contohnya:

>> A = 1
A = 1
>> A = [1 2 3; 4 5 6]
A =
   1   2   3
   4   5   6

Setelah di-assign suatu matriks, tipe variabel A berubah dari skalar menjadi matriks.

Jika kita mencoba membuat matriks yang ukurannya $1 \times 1$, maka Octave akan mengubahnya menjadi skalar. Dengan pengetahuan tersebut, kita bisa membuat suatu skalar random dengan memanggil rand(1).

Fungsi rand juga bisa dipanggil tanpa argumen, yang juga menghasilkan sebuah skalar random. Hal tersebut diilustrasikan dalam contoh berikut:

>> [7]
ans = 7
>> rand(1)
ans = 0.31056
>> rand
ans = 0.92603

Kita juga dapat membentuk matriks baru dengan menggabungkan beberapa matriks. Sintaksnya mirip dengan pembuatan matriks dari skalar. Pahami contoh-contoh berikut:

>> B = [1 2 3]
B =
   1   2   3
>> C = [4 5 6; 7 8 9]
C =
   4   5   6
   7   8   9

matriks berikut merupakan perpaduan matriks B (baris ke-1) dan matriks C (baris ke-2 dan ke-3).

>> [B; C]
ans =
   1   2   3
   4   5   6
   7   8   9

dibentuk matriks baru, dimana baris pertamanya merupakan matriks B, baris ketiga dan keempatnya diperoleh dari matriks C, serta disisipkan matriks 0 di baris ke-2, menjadi matriks berikut:

>> [B; 0 0 0; C]
ans =
   1   2   3
   0   0   0
   4   5   6
   7   8   9

Pada contoh berikut, ditentukan matriks D, matriks E dan matriks F. Ketiganya merupakan matriks kolom berukuran $3 \times 1$.

>> D = [1; 2; 3]
D =
   1
   2
   3
>> E = [4; 5; 6]
E =
   4
   5
   6
>> F = [7; 8; 9]
F =
   7
   8
   9

Kemudian, dibentuk matriks baru, berukuran (ordo) $ 3 \times 3 $ dimana matriks D menjadi kolom ke-1, matriks E menjadi kolom ke-2, dan matriks F menjadi kolom ke-3, sebagai berikut:

>> [D E F]
ans =
   1   4   7
   2   5   8
   3   6   9
>> [D E F; 0 0 0]
ans =
   1   4   7
   2   5   8
   3   6   9
   0   0   0

Operasi pada Matriks

Matriks dapat dijumlahkan, dikurangi, dikali, dan dibagi oleh skalar. Operasi skalar yang bersangkutan akan dikerjakan pada tiap elemen matriks untuk menghasilkan matriks baru. Contoh berikut akan menjelaskannya (kita akan menggunakan variabel A dari contoh sebelumnya, yang bernilai [1 2 3; 4 5 6]):

Penjumlahan Matriks

>> A + 1
ans =
   2   3   4
   5   6   7

Pengurangan Matriks

>> A - 1
ans =
   0   1   2
   3   4   5

Perkalian Matriks

>> A * 2
ans =
    2    4    6
    8   10   12

Pembagian Matriks

>> A / 2
ans =
  0.50000  1.00000  1.50000
  2.00000  2.50000  3.00000

Untuk operasi penjumlahan, pengurangan, dan perkalian, matriks yang bersangkutan dapat menjadi operand sebelah kanan (misalnya 1 - A dan 2 * A). Hal tersebut tidak dapat dilakukan untuk operasi pembagian.

Operasi penjumlahan dan pengurangan antar matriks dapat dilakukan jika jumlah baris dan kolom matriks yang terlibat sama:

>> A + A
ans =
    2    4    6
    8   10   12
>> A - A
ans =
   0   0   0
   0   0   0

Untuk perkalian matriks A * B, jumlah kolom pada matriks A harus sama dengan jumlah baris pada matriks B:

>> B = [1 2; 3 4; 5 6]
B =
   1   2
   3   4
   5   6
>> A * B
ans =
   22   28
   49   64

Sebuah matriks persegi A juga dapat dipangkatkan dengan bilangan bulat n. $A^n$ didefinisikan sebagai A * A * ... * A (sebanyak n kali). Lihat contoh berikut:

>> C = [1 2; 1 3]
C =
  1  2
  1  3
>> C^4
ans =
   41  112
   56  153

Penyelesaian Masalah 1: Perkalian Matriks

Misalkan harga 1 porsi nasi, sayur, dan ayam masing-masing Rp1.000, Rp750, dan Rp3.000. Fido mentraktir temannya Doli, Lia, dan Ani. Fido membeli 4 porsi nasi, 2 porsi sayur, dan 4 porsi ayam. Doli membeli masing-masing 1 porsi nasi, sayur, dan ayam. Lia membeli 2 porsi nasi dan 2 porsi ayam. Ani membeli 1 porsi nasi dan 3 porsi sayur. Berapakah ongkos yang dihabiskan masing-masing orang?

Kita akan menggunakan matriks untuk menyelesaikan masalah ini. Pertama, kita buat 4 matriks baris dengan 3 elemen. Masing-masing matriks menunjukkan jumlah nasi (kolom 1), sayur (kolom 2), dan ayam (kolom 3) yang dibeli.

>> fido = [4 2 4]
fido =
   4   2   4
>> doli = [1 1 1]
doli =
   1   1   1
>> lia = [2 0 2]
lia =
   2   0   2
>> ani = [1 3 0]
ani =
   1   3   0

Kita akan satukan semuanya ke dalam sebuah matriks:

>> semua = [fido; doli; lia; ani]
semua =
   4   2   4
   1   1   1
   2   0   2
   1   3   0

Berikutnya adalah membuat matriks kolom yang berisi harga per porsi untuk nasi (baris 1), sayur (baris 2), dan ayam (baris 3) untuk tiap porsinya:

>> harga = [1000; 750; 3000]
harga =
    1000
     750
    3000

Dengan menghitung semua * harga, kita akan mendapatkan matriks kolom dengan tiap kolom menunjukkan biaya tiap orang (cek):

>> harga_semua = semua * harga
harga_semua =
    17500
     4750
     8000
     3250

Dari sini terlihat bahwa Fido, Doli, Lia, dan Ani masing-masing menghabiskan Rp17.500, Rp4.750, Rp8.000, dan Rp3.250.

Operasi Matriks Lanjutan

Transpos Matriks

Untuk melakukan transpos digunakan operator ', seperti pada contoh berikut:

>> G=[1 2 3]
G =
   1   2   3
>> G'
ans =
   1
   2
   3

Matriks baris yang kita transpos akan menjadi matriks kolom.

Sebaliknya jika kita mentranspos matriks kolom, maka akan menjadi matriks baris

>> H=[2;3;4]
H =
   2
   3
   4
>> H'
ans =
   2   3   4

untuk matriks yang memiliki lebih dari 1 baris dan 1 kolom

>> J=[1 2 3;3 5 6]
J =
   1   2   3
   3   5   6
>> J'
ans =
   1   3
   2   5
   3   6

Determinan Matriks

Diketahui matriks persegi C

>> C = [1 2; 1 3]
C =
   1   2
   1   3

Untuk mencari determinan matriks persegi digunakan masing-masing fungsi det. Lihat contoh berikut:

>> det(C)
ans =  1

Invers Matriks

Untuk mencari invers matriks persegi digunakan masing-masing fungsi inv. Lihat contoh berikut:

>> inv(C)
ans =
   3  -2
  -1   1

Invers Matriks Diagonal

>> inv(eye(2))
ans =
   1  -0
   0   1

Terdapat dua operasi pembagian matriks yaitu pembagian kanan dan pembagian kiri. A / B melakukan pembagian kanan dan nilainya adalah A * inv(B). A \ B melakukan pembagian kiri dan nilainya adalah inv(A) * B. Secara internal, penggunaan operator pembagian akan menghitung hasil baginya tanpa
membentuk matriks invers. Lihatlah contoh berikut:

>> D = [3 2; 2 2]
D =
  3  2
  2  2
>> C / D
ans =
  -1.0000   2.0000
  -2.0000   3.5000
>> C * inv(D)
ans =
  -1.00000   2.00000
  -2.00000   3.50000
>> C \ D
ans =
   5   2
  -1   0
>> inv(C) * D
ans =
   5   2
  -1   0

Penyelesaian Masalah 2: Menyelesaikan Sistem Persamaan Linier

Tono membeli 1 buku tulis dan 3 pulpen dengan ongkos total Rp2.7500. Toni membeli 2 buku tulis dan 2 puplen dengan ongkos total Rp25.000. Berapakah masing-masing harga sebuah buku dan pulpen?

Misalkan harga buku kita lambangkan a dan harga pulpen b. Berarti a + 3b = 27500 dan 2a + 2b = 25000. Ini adalah sistem persamaan linier dalam dua peubah. Kita akan simpan koefisiennya pada matriks A dan konstanta di sebelah kanan persamaan pada matriks B:

>> A = [1 3; 2 2]
A =
   1   3
   2   2
>> B = [27500; 25000]
B =
   27500
   25000

Misalkan x adalah matriks kolom yang berisi peubah a di baris 1 dan peubah b di baris ke 2. Karena Ax = B, berarti x = inv(A) * B. Kita akan mencari x dengan pembagian kiri:

>> x = A \ B
x =
   500
   750

Berarti harga sebuah buku Rp5.000 dan harga sebuah pulpen Rp7.500.

Operasi Antar Elemen

Operasi penjumlahan dan pengurangan antar dua matriks merupakan operasi antar elemen. Maksudnya, elemen pada lokasi yang sama di kedua matriks akan dioperasikan untuk menghasilkan elemen baru di matriks hasil.

Di lain pihak, operasi perkalian, pembagian, dan perpangkatan bukan merupakan operasi antar elemen.

Untuk mendapatkan versi antar elemen dari ketiga operasi tersebut, digunakan operator .*, ./, dan .^ (masing-masing diawali dengan titik). Perhatikan contohnya:

Didefinisikan matriks E dan matriks F

>> E = [2 3]
E  =
  2  3
>> F = [2 2]
F  =
  2  2

Perkalian Antar Elemen

>> E .* F
ans =
  4  6

Perhatikan bahwa dengan operator .*, elemen di baris 1 kolom 1 pada matriks E (nilainya dikalikan dengan elemen di lokasi yang sama pada matriks F (nilainya 2) untuk menghasilkan elemen di lokasi yang sama pada matriks hasil (nilainya 4). Hal yang sama dilakukan untuk elemen-elemen lainnya.

Pembagian Antar Elemen

>> E ./ F
ans =
  1.0000  1.5000

Perpangkatan Antar Elemen

>> E .^ F
ans =
  4  9

Perlu diketahui bahwa operator-operator lainnya seperti + dan - juga dapat diberi titik di depannya (menjadi .+ dan .-). Tentunya dalam hal ini versi “biasa” maupun versi “bertitik” sama. Operator-operator bertitik juga dapat dikerjakan pada dua skalar. Sebagai contoh, 2 .* 5 akan menghasilkan 10.

>> 2.*5
ans =  10

Beberapa fungsi-fungsi yang bekerja pada skalar juga dapat menerima argumen matriks. Contohnya adalah fungsi abs dan sin. Matriks hasil akan dibentuk dengan mengaplikasikan fungsi tersebut untuk tiap elemen matriks. Lihat contoh berikut:

>> L = [-pi/2 pi/2]
L =
  -1.5708   1.5708

Fungsi Trigonometri

>> sin(L)
ans =
  -1   1

Fungsi Absolut

>> abs(L)
ans =
  1.5708  1.5708
>> sin(abs(L))
ans =
  1  1

Sebagai panduan umum, fungsi-fungsi yang mengembalikan hasil perhitungan (misalnya abs, sin, round, dan log) dapat diberi argumen matriks.

Penyelesaian Masalah 3: Operasi Antar Elemen

Misalkan $f(x) = (x^2 + sin(x)) / \sqrt{(2x + 1)}$. Berapakah nilai $f(0)$, $f(1)$, $f(2)$, $f(3)$, $f(4)$, dan $f(5)$?

Langkah pertama adalah membuat matriks yang berisi skalar yang ingin kita cari nilai fungsinya:

>> x = [0 1 2 3 4 5]
x =
   0   1   2   3   4   5

Berikutnya adalah memanfaatkan operasi antar elemen. Jangan lupa menggunakan titik untuk operator perpangkatan (.*) dan pembagian (./).

>> y = (x.^2 + sin(x)) ./ sqrt(2*x + 1)
y =
  0.00000  1.06317  2.19550  3.45502  5.08107  7.24866

Supaya kita tidak perlu repot menentukan operator yang harus diberi titik, kita dapat saja memberikan titik ke semua operatornya:

>> y = (x.^2 .+ sin(x)) ./ sqrt(2.*x .+ 1)
y =
  0.00000  1.06317  2.19550  3.45502  5.08107  7.24866

Berarti $f(0) = 0$, $f(1) = 1.06317$, $f(2) = 2.19550$, $f(3) = 3.45502$, $f(4) = 5.08107$, dan $f(5) = 7.24866$.

Mengindeks Matriks

Pada subbab-subbab sebelumnya kita melakukan operasi terhadap keseluruhan matriks. Sekarang kita akan mempelajari cara mengakses (atau mengindeks) elemen-elemen suatu matriks.

Di Octave, baris pertama suatu matriks (paling atas) disebut baris ke 1. Kolom pertama suatu matriks (paling kiri) disebut sebagai kolom ke 1. Untuk mengindeks elemen di baris i dan kolom j pada suatu matriks M, kita menuliskan M(i,j). Perhatikan contoh berikut:

>> M = [3 4; 5 6]
M =
  3  4
  5  6

Elemen baris ke-1, kolom ke-2 dari matriks M adalah

>> M(1,2)
ans = 4

Elemen baris ke-2, kolom ke-1 dari matriks M, yaitu 5, diganti menjadi 0

>> M(2,1) = 0
M =
  3  4
  0  6

Kita juga bisa mengindeks kolom atau baris tertentu pada suatu matriks. Untuk mengindeks baris i dari matriks M, kita menulis M(i,:) sedangkan untuk mengindeks kolom j dari matriks M, kita menulis M(:,j). Contoh berikut akan menjelaskan lebih lanjut:

>> N = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
N =
   1   2   3   4
   5   6   7   8
   9  10  11  12
  13  14  15  16
>> N(1,:)
ans =
  1  2  3  4
>> N(:,3)
ans =
   3
   7
  11
  15
>> N(4,:) = zeros(1,4)
N =
   1   2   3   4
   5   6   7   8
   9  10  11  12
   0   0   0   0

Dengan mengindeks matriks, kita bisa memperbesar matriks tersebut. Octave akan memberi nilai 0 pada elemen-elemen baru yang tidak kita tentukan nilainya. Perhatikan contoh berikut:

>> N(5,1) = 1
N =
   1   2   3   4
   5   6   7   8
   9  10  11  12
   0   0   0   0
   1   0   0   0
>> N(:,5) = rand(5,1)
N =
   1.00000   2.00000   3.00000   4.00000   0.45077
   5.00000   6.00000   7.00000   8.00000   0.03871
   9.00000  10.00000  11.00000  12.00000   0.23999
   0.00000   0.00000   0.00000   0.00000   0.08678
   1.00000   0.00000   0.00000   0.00000   0.50579

Perhatikan bahwa ukuran awal matriks N adalah $4 \times 4$. Dengan memperbesar matriks kita mengubah ukurannya menjadi $5 \times 5$. Harap diingat bahwa memperbesar matriks adalah operasi yang lambat, jadi jika Anda akan menyelesaikan suatu masalah menggunakan matriks sebaiknya tentukan ukuran akhir matriksnya terlebih dahulu.

Kita tidak hanya dapat mengacu pada baris maupun kolom tertentu pada suatu matriks. Kita dapat mengacu pada submatriks apapun dalam suatu matriks. Untuk mengatur jangkauan baris dan kolom digunakan format awal:akhir. Dalam hal ini terdapat keyword khusus yaitu end yang mengacu pada akhir dari baris/kolom.

Perhatikan berbagai contoh berikut:

>> N = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
N =
   1   2   3   4
   5   6   7   8
   9  10  11  12
  13  14  15  16
>> N(2:3,1:2)
ans =
   5   6
   9  10
>> N(2:end,2:end)
ans =
   6   7   8
  10  11  12
  14  15  16
>> N(1,end-1:end)
ans =
  3  4
>> N(2:3,2:3) = zeros(2)
N =
   1   2   3   4
   5   0   0   8
   9   0   0  12
  13  14  15  16
N(3:5,3:5) = eye(3)
N =
   1   2   3   4   0
   5   0   0   8   0
   9   0   1   0   0
  13  14   0   1   0
   0   0   0   0   1

Menyelidiki Ukuran Matriks

Dengan berbagai fungsi yang ada kita dapat mengetahui ukuran matriks. Di subbab ini kita akan membahas fungsi size, rows, dan columns.

Fungsi size akan mengembalikan matriks baris dengan 2 elemen. Elemen pertamanya menunjukkan jumlah baris argumen dan elemen keduanya menunjukkan jumlah kolom argumen. Fungsi rows dan columns masing-masing akan mengembalikan jumlah baris dan kolom argumen. Perhatikan contoh berkut:

>> size(rand(2,3))
ans =
  2  3
>> rows(rand(2,3))
ans = 2
>> columns(rand(2,3))
ans = 3

Kita akan banyak mengindeks matriks dan menyelidiki ukurannya saat melakukan pemrograman dengan Octave.

Materi Tambahan: Fungsi Multi-Output

Beberapa fungsi dapat mengeluarkan lebih dari satu output. Masing-masing output akan disimpan ke dalam sebuah variabel. Sebagai contoh, fungsi size dapat mengeluarkan dua output jika dipanggil dengan cara tertentu. Ini adalah caranya:

>> [baris kolom] = size(rand(2,3))
baris = 2
kolom = 3

Dengan pemanggilan seperti di atas, output pertama akan disimpan ke variabel baris, dan output kedua akan disimpan ke variabel kolom.

Penutup

Pada tutorial ini kita telah mengenal matriks. Bahan di tutorial ini akan menjadi syarat untuk memahami materi di tutorial berikutnya yaitu plotting. Silakan kirimkan kritik, perbaikan, dan saran ke edy.fkip@unej.ac.id .

Operasi Dasar Octave

Panduan Praktikum 2 Octave
Edy Wihardjo, S.Pd. M.Pd.
edisi revisi: 3 Maret 2018

Pendahuluan

GNU Octave (selanjutnya disebut Octave saja) adalah alat untuk melakukan komputasi numerik dengan matriks dan vektor. Program tersebut juga dapat digunakan untuk perhitungan umum dan untuk menggambar grafik fungsi.

Sintaks dan nama fungsi-fungsi di Octave sama dengan Matlab, jadi pengguna Matlab dapat dengan mudah beralih ke Octave.

Octave merupakan free software sehingga Anda memiliki kebebasan untuk melihat source code programnya dan mengembangkannya.

Tutorial ini akan mengajarkan cara melakukan perhitungan sederhana dengan Octave. Bahan utama yang tercakup di dalamnya adalah operasi aritmatika, variabel, fungsi built-in, dan keterbatasan angka di Octave.

Menginstal dan Menjalankan Octave

Jika anda menggunakan Linux, Octave mungkin sudah terinstall di sistem anda. Untuk mengeceknya, bukalah console dan jalankan perintah “octave” (tanpa tanda kutip). Jika di sistem anda belum terinstall Octave, dapatkan segera di https://ftp.gnu.org/gnu/octave/windows/ untuk sistem operasi Windows.

Octave tersedia untuk berbagai platform, misalnya Linux dan Windows. Untuk pengguna Windows, downloadlah file berekstensi exe dengan tanggal rilis terbaru. Untuk pengguna Linux yang perlu didownload adalah file berekstensi tar.gz yang terbaru.

Setelah anda menginstall dan menjalankannya, anda akan dihadapkan pada layar seperti berikut:

Sekarang kita bisa mulai melakukan perhitungan dengan Octave. Untuk lebih memahami materi di tutorial ini, anda dapat langsung mengetikkan contoh-contoh yang diberikan.

Operasi-operasi Sederhana

Penjumlahan

Operasi penjumlahan dilakukan dengan menggunakan simbol +, seperti contoh berikut:

>> 1 + 2
ans = 3

Baris pertama adalah input dan baris kedua adalah outputnya.

Pengurangan

Operasi pengurangan dilakukan dengan menggunakan simbol -, seperti contoh berikut:

>> 3 - 2
ans = 1

Perkalian

Operasi perkalian dilakukan dengan menggunakan simbol *, seperti contoh berikut:

>> 3 * 2
ans = 6

Pembagian

Operasi pembagian dilakukan dengan menggunakan simbol /, seperti contoh berikut:

>> 3 / 2
ans = 1.5000

Dari contoh terakhir kita bisa melihat bahwa Octave menggunakan titik (.) sebagai tanda desimal.

Seperti biasanya, operasi perkalian dan pembagian memiliki prioritas yang lebih tinggi dari operasi penjumlahan dan pengurangan.

Urutan pengerjaan dapat diubah menggunakan kurung buka dan kurung tutup. Lihat contoh berikut:

>> 1 + 2 * 3
ans = 7

Pada contoh di atas, yang pertama kali dikerjakan adalah 2 * 3. Kemudian hasilnya (yaitu 6) dijumlahkan ke 1 sehingga hasil akhirnya adalah 7.

>> (1 + 2) * 3
ans = 9

Pada contoh berikutnya, yang pertama kali dikerjakan adalah 1 + 2 lalu hasilnya (yaitu 3) dikalikan dengan 3.

Operasi Perpangkatan

Operasi perpangkatan dilakukan dengan menggunakan simbol ^, seperti contoh berikut:

>> 2 ^ 3
ans = 8

Prioritas operasi perpangkatan lebih tinggi dari perkalian, pembagian, penjumlahan, dan pengurangan.

Berikut diberikan contohnya:

>> 2 ^ 3 * 2
ans = 16

Dalam menuliskan input untuk Octave, jumlah spasi antar elemen input tidak berpengaruh pada hasilnya. Ketiga contoh berikut memberikan hasil yang sama walaupun penulisannya berbeda:

>> (1 + 2) * 3
ans = 9
>> (1+2)*3
ans = 9
>> (     1 +2)     * 3
ans = 9

Perhitungan-perhitungan tertentu dapat memakan waktu yang sangat lama. Contohnya adalah perkalian antar matriks yang ukurannya besar (tidak akan kita bahas di sini). Jika Anda ingin menggagalkan proses perhitungan tersebut, yang perlu Anda lakukan adalah menekan CTRL+C pada keyboard (menahan tombol CTRL lalu menekan tombol C). Hal ini juga dapat Anda lakukan kalau Octave bermasalah (misalnya berhenti pada suatu perhitungan yang sederhana).

Notasi Ilmiah

Kita dapat menuliskan bilangan dengan menggunakan notasi ilmiah, misalnya 1.1e5 (atau 1.1E5) yang berarti 1.1 x 10^5

>> 1.1e5
ans = 110000

Contoh berikutnya -52e-3 (atau -52E-3) yang berarti -52 x 10^-3.

>> -52e-3
ans = -0.052000

Output dari suatu perhitungan kadang-kadang dituliskan menggunakan notasi ilmiah:

>> 999 ^ 9
ans = 9.9104e+26
>> 1.234 / 100000
ans = 1.2340e-05

Variabel

Setiap kita melakukan perhitungan, hasilnya akan disimpan ke variabel yang bernama ans (terlihat jelas di baris output). Variabel ans tersebut bisa kita gunakan untuk perhitungan selanjutnya, seperti dalam contoh berikut:

>> 1 + 2
ans = 3
>> ans * 2
ans = 6
>> ans ^ 2
ans = 36

Setelah perhitungan pertama, ans akan bernilai 3. Lalu ans dikalikan dengan 2 yang memberikan hasil 6. Hasil tersebut menjadi nilai baru dari ans. Setelah itu ans (yang sekarang bernilai 6) dikuadratkan. Hasilnya yaitu 36 menjadi nilai baru ans.

Kita dapat dengan mudah membuat variabel-variabel baru. Nama variabel dapat terdiri dari alfabet (a-z,A-Z), angka (0-9), dan garis bawah (_). Nama variabel tidak boleh dimulai dengan angka. Di bawah dicontohkan nama-nama variabel yang sah:

x
y
jumlah_murid
var23
_z

Berikutnya adalah dua contoh nama variabel yang tidak sah:

7_desember

karena dimulai dengan angka.

diam!

karena terdiri dari karakter yang tidak diizinkan yaitu tanda seru (!).

Huruf besar dan huruf kecil dibedakan, jadi radius, Radius, dan RADIUS adalah nama tiga variabel yang berbeda.

Untuk memberikan nilai ke variabel digunakan simbol =. Proses pemberian nilainya dinamakan assignment. Dalam assignment, nilai ans tidak akan berubah (kecuali kalau kita melakukan assignment terhadap ans itu sendiri). Lihat contohnya:

>> x = 2
x = 2
>> y = x + 2
y = 4
>> y ^ 2
ans = 16
>> z = 0
z = 0
>> Z - 1
error: 'Z' undefined near line 18 column 5
error: evaluating binary operator '-' near line 18, column 7

Kita bisa melihat bahwa setelah kita memberi nilai ke suatu variabel, variabel tersebut langsung bisa kita gunakan. Di dalam contoh, setelah kita memberikan nilai 2 ke x, kita berikutnya menggunakan variabel x untuk menentukan nilai variabel y.

Contoh yang terakhir menghasilkan pesan error sebab kita mencoba menghitung Z - 1. Padahal variabel Z (huruf kapital/besar) belum pernah kita beri nilai sebelumnya. Error yang dicontohkan tidaklah fatal. Octave akan mengabaikan masukan yang bermasalah dan kita dapat melanjutkan pemakaian.

Ada beberapa variabel yang sudah didefinisikan oleh Octave. Beberapa di antaranya adalah bilangan pi dan e yang dipakai untuk perhitungan-perhitungan tertentu.

>> pi
ans =  3.1416
>> e
ans =  2.7183

Ada juga variabel yang berfungsi untuk mengatur perilaku Octave. Contohnya adalah output_precision yang menentukan jumlah bilangan penting (significant figures) yang ditampilkan Octave. Perhatikan contoh berikut:

>> output_precision
output_precision = 5
>> pi
pi = 3.1416

Kita bisa melihat bahwa nilai awal output_precision adalah 5 (default). Saat kita melihat nilai pi, yang ditampilkan hanyalah 5 bilangan penting.

>> output_precision = 8
output_precision = 8
>> pi
pi = 3.1415927

Berikutnya kita merubah output_precision menjadi 8. pi akhirnya ditampilkan dengan 8 bilangan penting.

>> r = 2.1
r = 2.1000000
>> luas = pi * r^2
luas = 13.854424

Lalu kita menghitung luas lingkaran yang jari-jarinya r = 2.1.

Fungsi Built-in

Octave menyediakan banyak fungsi built-in. Salah satu contohnya adalah fungsi sqrt (square root) yang digunakan untuk menghitung akar kuadrat suatu bilangan. Inilah cara menggunakannya:

>> sqrt(2)
ans = 1.4142

Untuk memanggil suatu fungsi, kita menuliskan nama fungsinya, diikuti dengan kurung buka, lalu menuliskan argumen-argumennya, dan diakhiri dengan kurung tutup.

Fungsi sqrt hanya membutuhkan satu argumen (dalam contoh di atas argumennya adalah 2).

Berikut akan didaftar beberapa fungsi built-in dalam Octave. Semua fungsi tersebut memerlukan satu argumen.

Menghitung Nilai Mutlak

Untuk menghitung nilai mutlak suatu bilangan, gunakan fungsi abs (nilai absolut).

>> abs(-2)
ans = 2
>> abs(2)
ans = 2

Membulatkan Bilangan ke Bilangan Bulat Terdekat

Untuk membulatkan suatu bilangan ke bilangan bulat terdekat, gunakan fungsi round

>> round(2.5)
ans = 3
>> round(2.49)
ans = 2

Menghitung Bilangan Bulat Terbesar yang Lebih Kecil atau Sama

Untuk mengembalikan bilangan bulat terbesar yang lebih kecil atau sama dengan bilangan input, gunakan fungsi floor.

>> floor(2.9)
ans = 2 
>> floor(-0.1) 
ans = -1

Menghitung Bilangan Bulat Terkecil yang Lebih Besar atau Sama

Untuk mengembalikan bilangan bulat terkecil yang lebih besar atau sama dengan bilangan input, gunakan fungsi ceil.

>> ceil(2.9) 
ans = 3 
>> ceil(-0.1)
ans = 0

Trigonometri

Untuk menghitung nilai trigonometri, gunakan fungsi yang terkait, argumen dalam radian.

Menghitung Sinus suatu Sudut

Untuk menghitung sinussuatu sudut, gunakan fungsi sin.

>> sin(pi/2) 
ans = 1

Menghitung Cosinus suatu Sudut

Untuk menghitung cosinus suatu sudut, gunakan fungsi cos.

>> cos(0) 
ans = 1

Menghitung Tangen suatu Sudut

Untuk menghitung tangen suatu sudut, gunakan fungsi tan.

>> tan(0) 
ans = 0

Menghitung Secant suatu Sudut

Untuk menghitung secant suatu sudut, gunakan fungsi sec.

>> sec(0) 
ans 1

Menghitung Cosecant suatu Sudut

Untuk menghitung cosecant suatu sudut, gunakan fungsi csc.

>> csc(pi/2) 
ans = 1

Menghitung Cotangent suatu Sudut

Untuk menghitung cotangent suatu sudut, gunakan fungsi cot.

>> cot(pi/4) 
ans = 1

Logaritma dan Ekponensiasi

Menghitung Pangkat

Untuk menghitung pangkat suatu bilangan, gunakan fungsi exp.

exp(1) 
ans = 2.7183

Menghitung Logaritma

Untuk menghitung logaritma suatu bilangan, gunakan fungsi log.

>>  log(e) 
ans = 1

Menghitung Logaritma Basis 10

Untuk menghitung logaritma basis 10 suatu bilangan, gunakan fungsi log10.

>> log10(100) 
ans =  2

Menghitung Logaritma Basis 2

Untuk menghitung logaritma basis 2 suatu bilangan, gunakan fungsi log2.

>> log2(8) 
ans = 3

Fungsi Built-in Lainnya

Bagi yang memerlukannya, terdapat fungsi-fungsi trigonometri invers yaitu asin, acos, atan, asec, acsc, dan acot. Keluaran fungsi-fungsi tersebut adalah sudut dalam radian.

Terdapat pula fungsi trigonometri hiperbolis yaitu sinh, cosh, tanh, sech, csch, dan tanh.

Fungsi invers yang bersangkutan adalah asinh, acosh, atanh, asech, acsch, dan atanh.

Contoh fungsi yang memerlukan dua argumen adalah fungsi mod. mod(a, b) akan mengembalikan sisa pembagian jika a dibagi b. Sebagai contoh:

>> mod(6, 3)
ans = 0
>> mod(7, 3)
ans = 1
>> mod(9, 3)
ans = 0

Keterbatasan Bilangan di Octave

Tipe data bilangan yang telah kita temui sejak awal tutorial (misalnya 1, 1.5, dan 1e5) di Octave disebut sebagai skalar. Jangkauan dan ketepatan skalar di Octave terbatas, seperti ditunjukkan pada contoh berikut:

>> 999 ^ 999
ans = Inf
>> -999 ^ 999
ans = -Inf
>> 1e-999
ans = 0
>> -1e-999
ans = -0

Jika bilangan yang kita masukkan (atau hasil perhitungan) terlalu besar nilai mutlaknya, maka hasilnya adalah Inf (singkatan dari infinity, yang artinya tak hingga) atau -Inf.

Di lain pihak, jika perhitungan menghasilkan bilangan yang terlalu kecil nilai mutlaknya (mendekati 0), maka nilainya akan menjadi 0atau -0. Lalu apa bedanya 0 dengan -0?

Jika sebuah bilangan positif dibagi dengan 0 maka hasilnya adalah Inf sedangkan jika pembaginya adalah -0 maka hasilnya adalah -f.

Sebaliknya jika sebuah bilangan negatif dibagi dengan 0 hasilnya adalah `-Inf n jika pembaginya adalah -0 maka hasilnya adalah Inf. Perhatikan contoh berikut:

>> 1 / 0
ans = Inf
>> 1 / -0
ans = -Inf

Beberapa operasi hasilnya adalah NaN (Not a Number), misalnya 0 / 0. Segala operasi yang melibatkan NaN misalnya NaN / 2, sin(NaN), dan NaN - NaN hasilnya adalah NaN.

>> 0/0
warning: division by zero
ans = NaN

Operasi yang melibatkan Inf memiliki aturan tersendiri yang tidak akan dibahas di sini. Silakan anda mencoba-coba jika tertarik (misalnya Inf - 2, Inf - Inf, dan -2 * Inf).


Bilangan positif terkecil dan terbesar yang dapat ditangani Octave disimpan di variabel realmindan realmax. Di sistem saya nilainya adalah sebagai berikut:

realmin
s = 2.2251e-308
realmax
s = 1.7977e+308

Perlu diingat bahwa di dalam sistem bilangan riil tidak dikenal bilangan infinity n NaN. Nilai-nilai tersebut ada di Octave untuk menandakan bahwa operasi-operasi tertentu (misalnya pembagian dengan 0) telah terjadi.

Penyelesaian Masalah

Menyelesaikan Persamaan Kuadrat

Dengan pengetahuan yang kita punya sekarang, kita sudah dapat menyelesaikan berbagai masalah matematis dengan Octave. Sebagai contoh, misalkan kita ingin mencari penyelesaian dari 2x2-5x-3=0. Kita akan menggunakan rumus abc, jadi kita akan memberikan nilai pada variabel a, b, dan c untuk mempermudah perhitungan selanjutnya.

a = 2
= 2

b = -5
= -5

c = -3
= -3

Berikutnya kita akan memberikan nilai ke diskriminannya d, yaitu b2-4ac.

d = b^2 - 4*a*c
= 49

Karena d positif, pasti kita akan mendapat dua penyelesaian riil (sebetulnya Octave juga dapat menangani bilangan kompleks, namun hal tersebut tidak akan bahas di sini). Kita akan mencari penyelesaiannya satu-persatu:

x1 = (-b + sqrt(d)) / (2*a)
= 3

x2 = (-b - sqrt(d)) / (2*a)
= -0.50000

Jadi himpunan selesaiannya adalah {3, -1/2}.

Materi Tambahan

Mencegah Octave Menampilkan Hasil Perhitungan

Kita dapat mencegah Octave menampilkan hasil perhitungan dengan menggunakan titik koma (;). Perhatikan contoh berikut:

a = 1
= 1

b = 2
= 2

c = 3;

d = 4;

a + b + c + d
s = 10

at kita melakukan assignment terhadap c dan d, output nya tidak langsung ditampilkan karena kita mengakhiri assignment tersebut dengan titik koma.

Jika kita ingin mendapatkan informasi tentang suatu variabel atau fungsi pada Octave, kita tinggal menggunakan perintah help. Ini contohnya:
help pi
is a built-in constant

— Built-in Variable: pi
​ The ratio of the circumference of a circle to its diameter.
​ Internally, pi' is computed as4.0 * atan (1.0)’.

Additional help for built-in functions, operators, and variables is available in the on-line version of the manual. Use the command
`help -i ‘ to search the manual index.

Help and information about Octave is also available on the WWW
at http://www.octave.org and via the help-octave@bevo.che.wisc.edu
mailing list.

help log
g is a built-in mapper function

— Mapping Function: log (X)
​ Compute the natural logarithm for each element of X. To
compute
​ the matrix logarithm, see *Note Linear Algebra::.
See also: log2, log10, logspace, and exp.

Additional help for built-in functions, operators, and variables is available in the on-line version of the manual. Use the command
`help -i ‘ to search the manual index.

Help and information about Octave is also available on the WWW
at http://www.octave.org and via the help-octave@bevo.che.wisc.edu
mailing list.
Untuk keluar dari Octave, tuliskan “exit” atau “quit” (tanpa tanda kutip).

Penutup

Inilah akhir dari tutorial pertama kita! Dengan pengetahuan yang didapat dari tutorial ini kita sudah bisa menggunakan Octave sebagai kalkulator sederhana.

Tutorial berikutnya akan membahas penggunaan matriks beserta operasinya pada
Octave.

Silakan kirimkan kritik, perbaikan, dan saran ke edy.fkip@unej.ac.id atau dengan mengirim pesan Telegram ke: @edyjo

Mengenal Octave

Panduan Praktikum 1 Octave
Edy Wihardjo, S.Pd. M.Pd.
edisi revisi: 3 Maret 2018
Panduan ini merupakan draf Buku Ajar Octave untuk digunakan sebagai referensi pada matakuliah Algoritma Pemrograman.

Karena masih berupa draf, artinya masih dalam proses penulisan, silakan draf ini diedarkan untuk kalangan terbatas, mohon tidak diedarkan secara luas, dan digunakan hanya untuk kepentingan perkuliahan matakuliah Algoritma Pemrograman.

Silakan kirim kritik, saran perbaikan melalui email: edy.fkip@unej.ac.id atau melalui pesan Telegram https:/t.me/edyjo utnuk mendapat respon yang lebih cepat.

Mengunduh Octave

Octave merupakan suatu program yang bersifat freeware. Silakan digunakan untuk kepentingan non-komersial, misalnya untuk pendidikan.

Anda, bahkan, bisa mengakses kode sumbernya (source code).

Di samping Source, Octave juga tersedia untuk komputer dengan sistem operasi GNU/Linux, macOS, BSD, dan Windows.

Dengan asumsi, pembaca tutorial ini, pengguna OS WIndows

Silakan unduh Octave melalui link berikut: https://ftp.gnu.org/gnu/octave/windows/ sesuai kebutuhan Anda.

Untuk OS Windows terdapat opsi (pilihan) untuk platform 32 bit ditandai dengan nama file yang memuat ..w32.. dan platform 64 bit, ditandai dengan nama file yang memuat ..w64...

Sebagai gambaran Octave platform 32 bit bisa dioperasikan baik pada Windows 32 bit maupun Windows 64 bit. Sedangkan platform 64 bit hanya bisa dioperasikan pada Window 64 bit atau tidak bisa dioperasikan pada Window 32 bit.

Octave

Octave rilis terbaru (pada 28 Feb 2018) adalah versi 4.2.1

terdapat versi installer dengan ekstensi file .exe dan versi portable dengan ekstensi .zip

Tutorial ini menampilkan step-by-step instalasi Octave versi installer untuk sistem operasi Windows 64 bit. Instalasi Octave untuk OS Windows 32 bit tidak jauh berbeda.

Menginstal Octave

Proses instalasi dimulai dengan meng-klik ganda (double click) file installer Octave.

Octave

Pada saat Octave diinstal pada OS Windows 10, tampil pesan warning yang menyatakan bahwa Octave belum sepenuhnya diuji (not fully tested) pada sistem operasi Windows 10.

Silakan klik Yes untuk melanjutkan instalasi. Instalasi Octave pada OS Windows 10 saya berfungsi dengan normal.

Octave

Kemudian, tampil warning kedua, terkait dengan Octave yang tidak menemukan JRE (Java Runtime Environment) pada sistem komputer saya. Ketiadaan JRE akan berpengaruh pada fungsi khusus (tertentu) Octave. Sehingga Anda masih tetap bisa melanjutkan instalasi Octave, yaitu dengan mengklik Yes, dan menginstal JRE kemudian, ketika dibutuhkan.

Octave

Tampilan awal adalah welcome screen terkait informasi panduan instalasi Octave. Silakan klik Next untuk melanjutkan instalasi.

Octave

Setelah itu, ditampilkan License Agreement terkait pemanfaatan (penggunaan) Octave. Klik Next untuk melanjutkan instalasi.

Octave

Kemudian ditampilkan opsi instalasi, yang meliputi: (1) opsi untuk menginstal Octave untuk semua pengguna pada sistem komputer tujuan, (2) membuat pintasan di desktop, disarankan dicentang, untuk memudahkan mengaktifkan (menjalankan) Octave, dan (3) mendaftar file dengan ekstensi .m, yaitu file Matlab untuk diasosiasikan dengan Octave.

Octave

Menentukan lokasi instalasi. Secara default, Windows akan mengarahkan instalasi ke folder C:\Program Files.

Octave

Namun, Octave mensyaratkan lokasi instalasi tidak memuat spasi . Dalam hal ini, karena Program Files memuat spasi, maka Anda perlu mengarahkan ke lokasi instalasi yang tidak memuat spasi, misalnya C:\Octave.

Anda bisa mengarahkan ke lokasi lain yang berbeda. Dengan catatan, nama folder tidak memuat spasi.

Octave

Setelah meng-klik Install, maka proses instalasi akan berjalan.

Octave

Lama instalasi bergantung pada spesifikasi komputer Anda.

Octave

Setelah beberapa saat, proses instalasi dinyatakan selesai.

Octave

Sebelum meng-klik Finish, Anda bisa memilih untuk menampilkan file Readme dan langsung menjalankan Octave.

Menjalankan Octave

Untuk menjalankan Octave, silakan klik pintasan (shortcut) Octave di desktop, hingga ditampilkan welcome screen seperti berikut. Klik Next untuk melanjutkan.

Octave

Kemudian, ditampilkan opsi untuk memungkinkan Octave melakukan koneksi untuk menampilkan Community News dari komunitas pengguna Octave.

Octave

Silakan uncheck jika tidak berkenan. Klik Next untuk melanjutkan.

Octave

Setelah itu, ditampilkan link (tautan) untuk mengakses dukungan (support) dan dokumentasi panduan, baik secara online (berupa file .html) maupun offline, yaitu file .pdf. Klik Finish untuk melanjutkan.

Octave

Jika pada proses instalasi Anda mencentang pilihan untuk membuat shortcut , maka di desktop akan terdapat 2 shortcut , yaitu Octave ... (GUI) dan Octave ... (CLI).

Octave

Tampilan Octave (GUI) sebagai berikut:

Octave

Sedangkan tampilan Octave (CLI) sebagai berikut.

Octave

Perbedaan diantara keduanya adalah sebagai berikut. Pada Octave (GUI), ditandai dengan >>. Adapun pada Octave (CLI) ditandai dengan adanya baris perintah yang dimulai dengan octave:> disertai nomor baris, misalnya ocatve1:>.

Untuk memudahkan penulisan , pada tutorial berikutnya, akan dicantumkan penulisan perintah menggunakan sistem GUI yaitu hanya dimulai dengan >>, bukan octave:>. Namun Anda tetap bisa mengoperasikannya, baik di sistem GUI maupun CLI.

Nias Cluster, 3 Maret 2018