htm
2 Maret 2005
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 kenal dengan 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:
>> [2,3,5,7]
ans =
2 3 5 7
>> [2;3;5;7]
ans =
2
3
5
7
1 of 14 03/31/2011 09:48 PM
Tutorial GNU Octave - Bagian 2 http://agro.web.ugm.ac.id/octave-tutorial-2.htm
>> zeros(2)
ans =
0 0
0 0
>> eye(2)
ans =
1 0
0 1
>> 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 diassign sebuah matriks, tipe variabel A berubah dari skalar menjadi
matriks.
Jika kita mencoba membuat matriks yang ukurannya 1 x 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
2 of 14 03/31/2011 09:48 PM
Tutorial GNU Octave - Bagian 2 http://agro.web.ugm.ac.id/octave-tutorial-2.htm
>> rand
ans = 0.92603
>> p = [1 2 3]
p =
1 2 3
>> q = [4 5 6; 7 8 9]
q =
4 5 6
7 8 9
>> [p; q]
ans =
1 2 3
4 5 6
7 8 9
>> [p; 0 0 0; q]
ans =
1 2 3
0 0 0
4 5 6
7 8 9
>> r = [1; 2; 3]
r =
1
2
3
>> s = [4; 5; 6]
s =
4
5
6
>> t = [7; 8; 9]
t =
7
8
9
>> [r s t]
ans =
1 4 7
2 5 8
3 6 9
>> [r s t; 0 0 0]
3 of 14 03/31/2011 09:48 PM
Tutorial GNU Octave - Bagian 2 http://agro.web.ugm.ac.id/octave-tutorial-2.htm
ans =
1 4 7
2 5 8
3 6 9
0 0 0
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]):
>> A + 1
ans =
2 3 4
5 6 7
>> A - 1
ans =
0 1 2
3 4 5
>> A * 2
ans =
2 4 6
8 10 12
>> A / 2
ans =
0.50000 1.00000 1.50000
2.00000 2.50000 3.00000
>> A + A
ans =
2 4 6
8 10 12
>> A - A
ans =
0 0 0
0 0 0
4 of 14 03/31/2011 09:48 PM
Tutorial GNU Octave - Bagian 2 http://agro.web.ugm.ac.id/octave-tutorial-2.htm
>> B = [1 2; 3 4; 5 6]
B =
1 2
3 4
5 6
>> A * B
ans =
22 28
49 64
>> C = [1 2; 1 3]
C =
1 2
1 3
>> C^4
ans =
41 112
56 153
Misalkan harga 1 porsi nasi, sayur, dan ayam masing-masing 1000 rupiah, 750
rupiah, dan 3000 rupiah. 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?
>> 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]
5 of 14 03/31/2011 09:48 PM
Tutorial GNU Octave - Bagian 2 http://agro.web.ugm.ac.id/octave-tutorial-2.htm
ani =
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:
Dari sini terlihat bahwa Fido, Doli, Lia, dan Ani masing-masing menghabiskan
17500 rupiah, 4750 rupiah, 8000 rupiah, dan 3250 rupiah.
Untuk melakukan transpos digunakan operator ', seperti pada contoh berikut:
>> [1 2 3 4]'
ans =
1
2
3
4
>> det(C)
ans = 1
6 of 14 03/31/2011 09:48 PM
Tutorial GNU Octave - Bagian 2 http://agro.web.ugm.ac.id/octave-tutorial-2.htm
>> inv(C)
ans =
3 -2
-1 1
>> inv(eye(2))
ans =
1 -0
0 1
>> 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
Tono membeli 1 buku tulis dan 3 pulpen dengan ongkos total 2750 rupiah. Toni
membeli 2 buku tulis dan 2 puplen dengan ongkos total 2500 rupiah. Berapakah
masing-masing harga sebuah buku dan pulpen?
7 of 14 03/31/2011 09:48 PM
Tutorial GNU Octave - Bagian 2 http://agro.web.ugm.ac.id/octave-tutorial-2.htm
>> A = [1 3; 2 2]
A =
1 3
2 2
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 500 rupiah dan harga sebuah pulpen 750 rupiah.
>> E = [2 3]
E =
2 3
>> F = [2 2]
F =
2 2
>> E .* F
ans =
4 6
>> E ./ F
ans =
1.0000 1.5000
>> E .^ F
8 of 14 03/31/2011 09:48 PM
Tutorial GNU Octave - Bagian 2 http://agro.web.ugm.ac.id/octave-tutorial-2.htm
ans =
4 9
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:
>> sin(L)
ans =
-1 1
>> abs(L)
ans =
1.5708 1.5708
>> sin(abs(L))
ans =
1 1
Misalkan f(x) = (x2 + sin(x)) / √(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
9 of 14 03/31/2011 09:48 PM
Tutorial GNU Octave - Bagian 2 http://agro.web.ugm.ac.id/octave-tutorial-2.htm
Supaya kita tidak perlu repot menentukan operator yang harus diberi titik, kita
dapat saja memberikan titik ke semua operatornya:
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
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
>> M(1,2)
ans = 4
>> 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:
10 of 14 03/31/2011 09:48 PM
Tutorial GNU Octave - Bagian 2 http://agro.web.ugm.ac.id/octave-tutorial-2.htm
9 10 11 12
13 14 15 16
>> N(1,:)
ans =
1 2 3 4
>> N(:,3)
ans =
3
7
11
15
>> 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
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
11 of 14 03/31/2011 09:48 PM
Tutorial GNU Octave - Bagian 2 http://agro.web.ugm.ac.id/octave-tutorial-2.htm
>> 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(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
Dengan berbagai fungsi yang ada kita dapat mengetahui ukuran matriks. Di
subbab ini kita akan membahas fungsi size, rows, dan columns.
>> size(rand(2,3))
12 of 14 03/31/2011 09:48 PM
Tutorial GNU Octave - Bagian 2 http://agro.web.ugm.ac.id/octave-tutorial-2.htm
ans =
2 3
>> rows(rand(2,3))
ans = 2
>> columns(rand(2,3))
ans = 3
Penutup
Pada tutorial ini kita telah mengenal matriks. Bahan di tutorial ini akan menjadi
syarat untuk memahami materi di tutorial berikutnya yaitu plotting. Silahkan
kirimkan kritik, perbaikan, dan saran ke agro1986 [di] gmail.com.
Semua isi website ini (termasuk teks, gambar, program, suara, dan hasil
karya original lainnya) berada di bawah Creative Commons License, kecuali
dinyatakan tidak. [All contents on this website (including text, images,
programs, sounds, and any other original works), unless otherwise noted, is
licensed under a Creative Commons License.]
13 of 14 03/31/2011 09:48 PM
Tutorial GNU Octave - Bagian 2 http://agro.web.ugm.ac.id/octave-tutorial-2.htm
dengan syarat:
14 of 14 03/31/2011 09:48 PM