• Tidak ada hasil yang ditemukan

Matrik dan Vektor

Dalam dokumen Pengenalan Scilab (Halaman 62-81)

Bab 4

Pembuatan Vektor dan Matrik Secara Manual

Suatu vektor atau matrik dapat dibuat secara manual dengan menggunakan operator kurung-siku kanan ([) dan operator kurung-siku kiri (]).

Elemen-elemen suatu vektor dapat dipisahkan dengan menggunakan tanda spasi, koma (,) atau titik koma (;). Jika elemen-elemen vektor dipisahkan dengan tanda spasi atau koma maka yang dihasilkan adalah suatu vektor baris, namun jika elemen-elemen vektor dipisahkan dengan titik-koma maka yang akan dihasilkan adalah suatu vektor kolom.

-->v1 = [1, 3, 9]

v1 =

1. 3. 9.

-->v2 = [2 4 6]

v2 =

2. 4. 6.

-->v3 = [10; 11; 12]

v3 = 10.

11.

12.

Dalam pembuatan suatu matrik, elemen-elemennya harus dimasukkan secara perbaris.

Elemen-elemen yang terdapat dalam satu baris yang sama dapat dipisahkan dengan tanda spasi atau tanda koma. Kemudian diantara suatu baris dengan baris lainnya dapat dipisahkan dengan tanda titik-koma atau dengan tombol ENTER.

-->A = [9 7 5; 1 4 3]

A =

9. 7. 5.

1. 4. 3.

-->B = [1 2 4 [Enter]

--> 2 4 8 [Enter]

--> 3 6 12]

B =

1. 2. 4.

2. 4. 8.

3. 6. 12.

Elemen matrik yang terdapat pada setiap baris harus sama jumlahnya. Jika hal ini tidak dipenuhi maka akan muncul sebuah pesan kesalahan, seperti yang pada contoh berikut ini.

-->X = [1 2 3; 4 5 6 7; 8 9 10]

!--error 6 inconsistent row/column dimensions

Suatu ekspresi matematika juga dapat digunakan sebagai nilai suatu dari elemen vektor atau matrik, seperti pada contoh di bawah ini:

-->D = [(1+2) 3*4; exp(1) log(10)]

D =

3. 12.

2.7182818 2.3025851

Vektor Inkremental

Vektor inkremental adalah suatu vektor baris dimana nilai dari setiap elemennya bertambah atau berkurang secara konstan terhadap elemen sebelumnya. Suatu vektor inkremental dibuat dengan operator titik-dua () sebagai berikut.

x = j:k x = j:d:k

Statemen j:k akan menghasilkan sebuah vektor baris dimana nilai elemen pertamanya adalah j, nilai elemen berikutnya adalah j+1 dan seterusnya sampai nilai elemen terakhir nilainya sama dengan k atau suatu nilai inkremental terbesar yang lebih kecil dari k. Apabila nilai indek j lebih besar dari indek k maka statemen j:k akan menghasilkan sebuah vektor kosong.

-->tahun = 2011:2016 tahun =

2011. 2012. 2013. 2014. 2015. 2016.

Statemen j:d:k akan menghasilkan sebuah vektor baris dimana nilai elemen pertamanya adalah j, nilai elemen berikutnya adalah j+d, dan seterusnya sampai diperoleh suatu elemen yang nilai nilainya sama dengan k atau suatu nilai inkremental terbesar yang lebih kecil dari k. Nilai d dapat berupa suatu bilangan desimal positif maupun desimal negatif.

Namun bila d bernilai negatif maka nilai j harus lebih besar daripada k.

-->xpts = 0:.25:2 xpts =

0. 0.25 0.5 0.75 1. 1.25 1.5 1.75 2.

-->y = 10:-2:1 y =

10. 8. 6. 4. 2.

Fungsi-Fungsi untuk Membuat Suatu Vektor

Terdapat dua fungsi yang dapat digunakan untuk membuat suatu vektor baris inkremental yaitu linspace dan logspace.

Linspace

Fungsi linspace mempunyai sintaks sebagai berikut:

X = linspace(n_awal, n_akhir, npts)

Output dari fungsi linspace adalah sebuah vektor baris yang mempunyai elemen sebanyak npts dimana elemen-elemen tersebut mempunyai jarak linier yang seragam yang nilainya terletak diantara n_awal dan n_akhir. Argumen npts bersifat opsional jika tidak digunakan maka jumlah elemen yang dihasilkan adalah sebanyak 100 elemen.

Berikut ini contoh penggunaan fungsi linspace. -->a = linspace(1,2,4)

a =

1. 1.333 1.667 2.

-->b = linspace(4,0,5) b =

4. 3. 2. 1. 0.

Logspace

Sintak dari fungsi logspace adalah sebagai berikut:

X = logspace(n_awal, n_akhir, npts)

Output dari fungsi logspace adalah sebuah vektor baris yang mempunyai elemen sebanyak npts dimana elemen-elemen tersebut mempunyai jarak logaritmik yang seragam yang

nilainya terletak diantara 10n_awal dan 10n_akhir. Apabila argumen n_akhir berupa %pi maka nilai dari elemen terakhir adalah  bukan 10. Argumen npts bersifat opsional jika tak digunakan maka jumlah elemen yang dihasilkan adalah sebanyak 50 elemen.

Ilustrasi penggunaan fungsi logspace adalah sebagai berikut:

-->x = logspace(1,2,4) x =

10. 21.544347 46.415888 100.

Fungsi-Fungsi untuk Membuat Suatu Matrik

Scilab juga menyediakan fungsi-fungsi yang dapat digunakan untuk membuat beberapa matrik khusus. Fungsi-fungsi tersebut yaitu ones, zeros, eye, diag dan rand.

Ones

Fungsi ones(m,n) akan menghasilkan suatu matrik berukuran m × n dimana semua elemennya mempunyai nilai satu.

-->A = ones(3,4) A =

1. 1. 1. 1.

1. 1. 1. 1.

1. 1. 1. 1.

-->B = ones(3,1) B =

1.

1.

1.

Fungsi ones juga dapat menerima argumen berupa suatu matrik. Statemen ones(X) akan menghasilkan suatu matrik satuan yang berukuran sama dengan matrik X.

-->C = [4 5 1; 4 4 2];

-->D = ones(C) D =

1. 1. 1.

1. 1. 1.

Zeros

Fungsi zeros(m,n) akan menghasilkan suatu matrik berukuran m × n dimana semua elemennya mempunyai nilai nol.

-->X = zeros(2,3) X =

0. 0. 0.

0. 0. 0.

Argumen dari fungsi zeros juga dapat berupa suatu matrik. Fungsi zeros(X) akan menghasilkan suatu matrik nol yang berukuran sama dengan matrik X.

Eye

Fungsi eye(m,n) akan menghasilkan suatu matrik identitas yang berukuran m × n.

-->I = eye(3,3) I =

1. 0. 0.

0. 1. 0.

0. 0. 1.

-->J = eye(2,5) J =

1. 0. 0. 0. 0.

0. 1. 0. 0. 0.

Fungsi eye juga dapat menerima argumen berupa suatu matrik. Statemen eye(X) akan menghasilkan suatu matrik identitas yang berukuran sama dengan matrik X.

Rand

Fungsi rand dapat digunakan untuk membuat suatu matrik yang elemen-elemennya merupakan bilangan random. Sintak dari fungsi rand adalah sebagai berikut:

A = rand(m,n,dist) A = rand(X,dist)

dimana m dan n adalah jumlah baris dan kolom matrik yang akan dibuat, X adalah sembarang matrik dan dist adalah distribusi dari bilangan random. Apabila argumen fungsi rand berupa suatu matrik X maka matrik bilangan random yang dihasilkannya akan

mempunyai dimensi yang sama dengan dimensi matrik X.

Terdapat dua pilihan untuk argumen dist yaitu:

'uniform' untuk membuat bilangan random yang mempunyai distribusi seragam dalam range [0,1]

'normal' untuk membuat bilangan random yang mempunyai distribusi normal dengan nilai rata-rata 0 dan deviasi standar 1.

Argumen dist bersifat opsional apabila tidak dipergunakan maka bilangan random akan dibuat dengan menggunakan distribusi seragam.

Berikut ilustrasi dari fungsi rand. -->x = rand(2,4)

x =

0.8782165 0.5608486 0.7263507 0.5442573 0.0683740 0.6623569 0.1985144 0.2320748 -->Y = rand(3,3,'normal')

Y =

- 0.1884803 - 1.3874078 0.0698768 0.4241610 2.7266682 - 2.8759126 - 1.0327357 - 0.7123134 - 1.3772844

Diag

Fungsi diag dapat digunakan untuk membuat sebuah matrik diagonal. Misalkan v adalah sebuah vektor maka fungsi diag(v) akan menghasilkan suatu matrik yang elemen-elemen diagonalnya merupakan elemen-elemen dari vektor v.

-->d = [1 2 3 4];

-->D = diag(d) D =

1. 0. 0. 0.

0. 2. 0. 0.

0. 0. 3. 0.

0. 0. 0. 4.

Selain itu, fungsi diag juga dapat digunakan untuk mengekstrak elemen-elemen diagonal suatu matrik, seperti pada contoh di bawah ini.

-->A = [9 8 7;6 5 4;3 2 1]

A =

9. 8. 7.

6. 5. 4.

3. 2. 1.

-->diag(A) ans = 9.

5.

1.

Konkatenasi

Konkatenasi merupakan operasi penggabungan beberapa vektor atau matrik sehingga menjadi sebuah vektor atau matrik baru yang lebih besar. Seperti pada operasi pembuatan suatu vektor atau matrik secara manual, operasi konkatenasi juga dilakukan dengan menggunakan operator kurung-siku kanan dan operator kurung-siku kiri ([ ]).

Beberapa contoh operasi konkatenasi adalah sebagai berikut:

-->V1 = [1 2 3 4];

-->V2 = [5 6 7 8];

-->V3 = [11 12 13 14];

-->V4 = [15 16 17 18];

-->P = [V1 V2]

P =

1. 2. 3. 4. 5. 6. 7. 8.

-->Q = [V1 V2;

--> V3 V4]

Q =

1. 2. 3. 4. 5. 6. 7. 8.

11. 12. 13. 14. 15. 16. 17. 18.

-->N1 = [1 2 3 4 5];

-->N2 = [10 20 30; 11 21 31];

-->N3 = eye(2,2);

-->N = [N1; N2 N3]

N =

1. 2. 3. 4. 5.

10. 20. 30. 1. 0.

11. 21. 31. 0. 1.

Operasi konkatenasi hanya dapat dilakukan terhadap vektor-vektor atau matrik-matrik yang mempunyai dimensi yang konsisten. Apabila persyaratan tersebut tidak dipenuhi maka akan muncul sebuah pesan kesalahan seperti pada contoh di bawah ini.

-->A = [1 2 3];

-->B = [4 5 6 7];

-->X = [A; B]

!--error 6

inconsistent row/column dimensions

Dimensi Matrik

Informasi mengenai dimensi dari suatu matrik dapat diperoleh dengan menggunakan fungsi size yang mempunyai sintaks sebagai berikut:

[nr,nc] = size(A)

dimana nr dan nc adalah jumlah baris dan kolom dari matrik atau vektor A. Fungsi size juga dijalankan dengan argumen output tunggal, sebagai berikut:

n = size(A)

Output dari sintak ini adalah suatu vektor baris, dimana elemen pertama dan keduanya masing-masing menyatakan jumlah baris dan jumlah kolom matrik A.

Berikut ini contoh penggunaan fungsi size. -->A = [1 1 0 1; 1 0 2 0; 0 -2 2 -4];

-->[nr,nc] = size(A) nc =

4.

nr = 3.

Jumlah semua elemen yang terdapat pada suatu vektor atau matrik dapat diketahui dengan menggunakan fungsi length, seperti yang ditunjukkan pada contoh-contoh di bawah ini.

-->length(a) ans = 5.

-->length(A) ans = 12.

Merubah Dimensi Matrik

Suatu matrix dapat dirubah dimensinya dengan fungsi matrix dengan sintaks sebagai berikut:

matrix(A, m, n)

dimana A adalah matrik yang akan dirubah dimensinya, kemudian m dan n adalah ukuran dimensi dari matrik yang baru. Jika yang dirubah dimensi baris atau kolomnya saja maka angka -1 digunakan sebagai nilai argumen untuk dimensi lainnya yang tidak ditentukan.

Berikut ini ilustrasi penggunaan fungsi matrix. -->V = 1:12;

-->M = matrix(V,3,4) M =

1. 4. 7. 10.

2. 5. 8. 11.

3. 6. 9. 12.

-->A = [1:4 ; 5:8 ; 9:12]

A =

1. 2. 3. 4.

5. 6. 7. 8.

9. 10. 11. 12.

-->B = matrix(A, 2, 6) B =

1. 9. 6. 3. 11. 8.

5. 2. 10. 7. 4. 12.

-->C = matrix(A, -1, 4) C =

1. 2. 3. 4.

5. 6. 7. 8.

9. 10. 11. 12.

Dimensi dari matrik yang dihasilkan oleh fungsi matrix harus sesuai atau kompatibel dengan dimensi dari matrik lama. Apabila persyaratan ini tidak dipenuhi maka akan muncul suatu pesan kesalahan seperti pada contoh di bawah ini.

-->X = matrix(A,5,3) !--error 60

argument with incompatible dimensions

Mengekstrak Elemen-Elemen Suatu Vektor

Elemen ke-i dari suatu vektor v dapat diekstrak dengan notasi sebagai berikut:

v(i)

Pada operasi ini, simbol $ dapat digunakan untuk menyatakan indek dari elemen yang terakhir. Berikut ini ilustrasi proses ekstrasi elemen-elemen suatu vektor.

-->a = [1 3 5 7 9];

-->a(2) ans = 3.

-->a($) ans = 9.

Semua elemen vektor yang terletak pada indek ke-i sampai ke-j dapat diekstrak dengan cara sebagai berikut.

v(i:j)

Elemen-elemen vektor yang letaknya tidak berurutan juga dapat diekstrak dengan menggunakan notasi sebagai berikut:

v([i k p . . .])

dimana i, k, p adalah letak atau indek dari elemen-elemen yang akan diekstrak.

Berikut ilustrasi proses ekstraksi beberapa elemen vektor sekaligus.

-->a = [1 3 5 7 9];

-->b = a(2:4) b =

3. 5. 7.

-->c = a([5 1 3]) c =

9. 1. 5.

Mengekstrak Elemen-Elemen Suatu Matrik

Elemen yang terletak pada baris ke-m dan kolom ke-n dari suatu matrik X dapat diekstrak dengan notasi sebagai berikut:

X(m,n)

Pada operasi ini, simbol $ dapat digunakan untuk menyatakan baris terakhir atau kolom terakhir.

Berikut ini beberapa contoh proses ekstraksi elemen-elemen suatu matrik.

-->A = [1 2 3; 4 5 6; 7 8 9]

A =

1. 2. 3.

4. 5. 6.

7. 8. 9.

-->a12 = A(1,2) a12 =

2.

-->b = A(2,$) b =

6.

-->A($,$) ans =

9.

Elemen-elemen matrik X yang terletak pada baris ke-i dapat diekstrak dengan sintaks sebagai berikut:

X(i,:)

Kemudian untuk mengekstrak semua elemen matrik X yang terletak pada kolom ke-j sintaknya adalah sebagai berikut.

X(:,j).

Berikut ini ilustrasi ekstraksi elemen-elemen matrik yang terletak pada suatu baris atau kolom tertentu.

-->A = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]

A =

1. 2. 3. 4.

5. 6. 7. 8.

9. 10. 11. 12.

13. 14. 15. 16.

-->A(3,:) ans =

9. 10. 11. 12.

-->A(:,$) ans = 4.

8.

12.

16.

Elemen-elemen matrik X yang terletak pada baris ke-i sampai baris ke-j serta kolom ke-m sampai kolom ke-n dapat diekstrak dengan sintaks sebagai berikut:

X(i:j, m:n)

Pada operasi ini, simbol titik-dua (:) juga dapat digunakan untuk menyatakan elemen-elemen yang terletak pada semua baris atau semua kolom yang dimaksud.

-->A(2:3, 2:4) ans =

6. 7. 8.

10. 11. 12.

-->A(3:4, :) ans =

9. 10. 11. 12.

13. 14. 15. 16.

Beberapa elemen matrik yang letaknya tidak berurutan dapat diekstrak secara serentak dengan sintaks sebagai berikut:

X([p q ...], [r s ...])

dimana p q ... adalah indek untuk posisi baris, kemudian r s ... adalah indek untuk posisi kolom.

-->A([1 2], [2 4]) ans =

2. 4.

6. 8.

Elemen-elemen matrik yang diekstrak harus berada di dalam dimensi matrik. Apabila elemen yang diekstrak berada di luar dari dimensi matrik maka akan muncul sebuah pesan kesalahan seperti pada contoh di bawah ini.

-->A(4,5)

!--error 21 invalid index

Merubah Nilai Elemen Suatu Vektor atau Matrik

Elemen-elemen yang terdapat pada sebuah matrik atau vektor juga dapat dirubah nilainya dengan menggunakan statemen penugasan, seperti yang terlihat pada contoh-contoh di bawah ini.

-->x = [1 2 4 6];

-->x(2) = 3 x =

1. 3. 4. 6.

-->x($) = 12 x =

1. 3. 4. 12.

-->A = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]

A =

1. 2. 3. 4.

5. 6. 7. 8.

9. 10. 11. 12.

13. 14. 15. 16.

-->A(4,4) = 0 A =

1. 2. 3. 4.

5. 6. 7. 8.

9. 10. 11. 12.

13. 14. 15. 0.

-->A(2,:) = [0 1 0 0]

A =

1. 2. 3. 4.

0. 1. 0. 0.

9. 10. 11. 12.

13. 14. 15. 0.

-->A(3:4, 1:3) = zero(2,3) A =

1. 2. 3. 4.

0. 1. 0. 0.

0. 0. 0. 12.

0. 0. 0. 0.

Seperti yang terlihat pada contoh-contoh di atas, notasi untuk menyatakan indek dari elemen-elemen matrik atau vektor yang akan dirubah nilainya adalah sama seperti notasi yang digunakan pada proses ekstraksi elemen-elemen matrik atau vektor.

Apabila indek atau posisi dari elemen yang akan dirubah nilainya berada di luar dari dimensi matrik atau vektor maka dimensi dari matrik atau vektor akan bertambah secara otomatis. Pada operasi ini elemen-elemen baru lainnya yang nilainya tidak didefinisikan akan diisi dengan nilai nol.

-->X = [1 2 3 4];

-->X(7) = 7 X =

1. 2. 3. 4. 0. 0. 7.

-->Z = ones(3,3);

-->Z(3,5) = 2 Z =

1. 1. 1. 0. 0.

1. 1. 1. 0. 0.

1. 1. 1. 0. 2.

Menghapus Elemen-Elemen Suatu Vektor atau Matrik

Elemen-elemen yang terdapat pada suatu vektor atau matrik dapat dihapus sehingga menjadi sebuah vektor atau matrik baru yang lebih kecil. Notasi posisi elemen-elemen vektor atau matriks adalah sama seperti notasi pada proses ekstraksi elemen-elemen vektor atau matrik.

Berikut ini beberapa contoh operasi penghapusan elemen-elemen suatu vektor atau matrik.

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

-->A(4) = [ ] A =

1. 2. 3. 5. 6. 7.

-->xyz = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

xyz =

16. 3. 2. 13.

5. 10. 11. 8.

9. 6. 7. 12.

4. 15. 14. 1.

-->xyz(2,:) = []

xyz =

16. 3. 2. 13.

9. 6. 7. 12.

4. 15. 14. 1.

-->xyz([1 3],:) = []

xyz =

9. 6. 7. 12.

Seperti yang terlihat pada contoh-contoh yang telah diberikan, statemen untuk menghapus elemen-elemen suatu matrik atau vektor adalah serupa dengan sintak untuk merubah nilai elemen-elemen suatu matrik atau vektor, namun pada bagian kanan dari statemennya adalah berupa sebuah matrik kosong yang dinyatakan dengan simbol [].

Sebuah elemen tunggal tidak dapat dihapus dari suatu matrik karena elemen-elemen yang terdapat di dalam suatu matrik harus membentuk sebuah larik segiempat. Apabila operasi tersebut dilakukan maka akan muncul adalah sebuah pesan kesalahan seperti yang ditunjukkan pada contoh di bawah ini.

-->Z = [1 2 3; 4 5 6]

Z =

1. 2. 3.

4. 5. 6.

-->Z(2,3) = []

!--error 15

submatrix incorrectly defined

Mencari Elemen-Elemen Matrik atau Vektor Yang Memenuhi Kriteria Tertentu Pada sebuah matrik atau vektor, indeks atau letak dari elemen-elemennya yang memenuhi suatu kriteria tertentu dapat diketahui dengan cara sebagai berikut

find(lgk)

Argumen lgk adalah suatu ekspresi logika yang merepresentasikan kriteria pencarian.

Output dari fungsi find adalah suatu vektor baris yang menyatakan lokasi dari elemen-elemen yang memenuhi kriteria yang diberikan dan jika tidak ada elemen-elemen yang memenuhi kriteria maka outputnya adalah sebuah matrik kosong [ ].

Berikut ini adalah beberapa contoh penggunaan perintah find. -->x = [0.8 1.2 5.8 8.9 0.3 7.2 1.5 5.6 0.2];

-->i = find(x > 2) i =

3. 4. 6. 8.

-->y = x(i) y =

5.8 8.9 7.2 5.6 -->k = find((x > 2) & (x <= 6)) k =

3. 8.

-->w = x(k) w =

5.8 5.6 -->j = find(x > 10) j =

[]

-->R = rand(4,4) R =

0.923 0.037 0.187 0.853 0.100 0.518 0.019 0.012 0.468 0.833 0.843 0.187 0.395 0.610 0.075 0.492 -->i = find(R >= 0.5)

i =

1. 6. 7. 8. 11. 13.

-->X = R(i) X =

0.923 0.518 0.833 0.610 0.843 0.853

-->j = find(R >= 0.95) j =

[]

Elemen-elemen dari sebuah vektor atau matrik yang memenuhi suatu kriteria tertentu juga dapat diekstrak secara langsung dengan subskripsi logika tanpa harus menggunakan fungsi find, seperti yang ditunjukkan pada contoh-contoh di bawah ini.

-->x

x =

0.8 1.2 5.8 8.9 0.3 7.2 1.5 5.6 0.2 -->z = x(x > 2)

z =

5.8 8.9 7.2 5.6 -->v = x((x > 2) & (x <= 6)) v =

5.8 5.6 -->R

R =

0.923 0.037 0.187 0.853 0.100 0.518 0.019 0.012 0.468 0.833 0.843 0.187 0.395 0.61 0.075 0.492 -->R((R > 0.25) & (R < 0.75))

ans = 0.468 0.395 0.518 0.61 0.492

Dari contoh-contoh yang diberikan, terlihat bahwa proses pencarian elemen-elemen matrik atau vektor yang memenuhi suatu kriteria tertentu lebih mudah untuk dilakukan melalui subskripsi logika daripada dengan menggunakan fungsi find.

Matrik Non-Numerik

Scilab juga dapat menangani operasi pembuatan maupun operasi manipulasi terhadap matrik non-numerik seperti matrik polinomial dan matrik string secara mudah seperti pada matrik numerik. Penjelasan mengenai hal tersebut akan diberikan pada Bab 7:

Polinomial dan Rasioanl dan Bab 8: String.

Bab 5

Dalam dokumen Pengenalan Scilab (Halaman 62-81)

Dokumen terkait