• Tidak ada hasil yang ditemukan

Diketahui matriks A, matriks B, dan vektor x sebagai berikut

Matriks dan Komputasi

1. Diketahui matriks A, matriks B, dan vektor x sebagai berikut

A=       1 3 −6 −2 5 9 7 5.6 2 4 8 −1 2.3 1.4 0.8 −2.3       B=       8 1 4 21 3 10 5 0.1 7 −2 9 −5 2.7 −12 −8.9 5.7       x=       0.4178 −2.9587 56.3069 8.1       (a) Buatlah skrip untuk menyelesaikan penjumlahan matriks A dan matriks B. (b) Buatlah skrip untuk menyelesaikan perkalian matriks A dan matriks B. (c) Buatlah skrip untuk menyelesaikan perkalian matriks A dan vektor x. (d) Buatlah skrip untuk menyelesaikan perkalian matriks B dan vektor x.

Fungsi

✍ Objektif :

⊲ Mengenalkan fungsi internal. ⊲ Membuat fungsi ekstenal.

⊲ Membuat fungsi ekternal untuk penjumlahan matrik. ⊲ Membuat fungsi ekternal untuk perkalian matrik.

3.1 Fungsi internal

Fungsi internal adalah fungsi bawaan yang sudah tersedia di dalam Matlab; contohnya: sqrt(),

sind()dan log10(). Ketika kita hendak mencari akar kuadrat dari angka 49, maka cukup dengan mengetikkan

>> sqrt(49)

ans =

7

Untuk mencari nilai sinus dari 30C >> sind(30)

ans =

0.5000

dan untuk mendapatkan nilai logaritma berbasis 10 dari angka 10000 >> log10(10000)

ans =

4

Selain sqrt(), sind() dan log10(), masih banyak lagi fungsi internal yang dimiliki Matlab. Adanya fungsi internal sangat memudahkan kita dalam membuat script dengan Matlab.

3.2 Fungsi eksternal

Fungsi-fungsi yang tidak tersedia di matlab dapat dibuat sendiri sebagai fungsi eksternal. Ca-ra membuat fungsi eksternal tidak sulit. Misalnya kita ingin membuat fungsi eksternal untuk menghitung jarak vertikal dari gerak jatuh bebas yang persamaannya adalah

h = 1 2gt

2 (3.1)

dimanah = adalah jarak vertikal, t adalah waktu (detik) dan konstanta gravitasi g = 9, 8m/dt2. Bukalah window Matlab editor, kemudian ketik script berikut

1 function y = gjb(t) 2

3 g = 9.8; 4 y = 0.5*g*t^2;

lalu simpan dengan nama gjb.m. Sampai disini, kita sudah selesai membuat fungsi eksternal dengan nama gjb(). Sebagai bukti, misalnya kita ingin hitung jarak jatuh setelah 2 detik, coba jalankan perintah berikut di window command

>> gjb(2)

ans =

19.6000

diperoleh jawaban sebesar 19,6 meter.

Contoh lain, persamaan lintasan gerak parabola adalah sebagai berikut y = (tan θo)x − gx

2

2(vocos θo)2 (3.2)

Jika vo= 5 m/dt dan θo = 30 sementara variabel x berubah-ubah, maka fungsi eksternal-nya dapat ditulis sebagai berikut

1 function y = parabol(x) 2 3 vo = 5; 4 g = 9.8; 5 tetha = 30; 6 7 y = tand(tetha)*x - (g*x.^2)/(2*(vo*cosd(tetha))^2);

Sekarang fungsi eksternal parabol() siap digunakan >> x = 1.2;

>> parabol(x)

ans =

Seperti fungsi lainnya, ia bisa menerima input berupa angka yang banyak, misalnya >> x=0:0.01:2; >> y=parabol(x); >> plot(x,y) >> xlabel(’Jangkauan (meter)’); >> ylabel(’Tinggi (meter)’); >> title(’Lintasan Gerak Parabola’)

0 0.5 1 1.5 2 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 Jangkauan (meter) Tinggi (meter)

Lintasan Gerak Parabola

Gambar 3.1: Kurva lintasan gerak parabola yang dihasilkan oleh fungsi eksternal parabol() Dalam contoh di atas, fungsi parabol() dibuat hanya bisa menerima sebuah input, yaitu x. Jika inputnya mau dimodifikasi dengan memasukkan faktor sudut awal dan kecepatan awal, maka fungsi eksternal diubah menjadi

1 function y = parabol(x,vo,theta) 2

3 g = 9.8; 4

5 y = tand(theta)*x - (g*x.^2)/(2*(vo*cosd(theta))^2);

Contoh pemanfaatan fungsi eksternal yang telah dimodifikasi tersebut adalah >> vo = 5; >> theta = 30; >> x=0:0.01:2; >> y=parabol(x,vo,theta); >> plot(x,y) >> xlabel(’Jangkauan (meter)’); >> ylabel(’Tinggi (meter)’); >> title(’Lintasan Gerak Parabola’)

3.3 Fungsi eksternal pada operasi matrik

Pada bab terdahulu kita sudah melakukan proses optimasi penjumlahan matrik dengan source

codeakhir seperti ini

1 clear all 2 clc 3

4 A=[3 8 5; 6 4 7]; % inisialisasi matrik A 5 C=[9 5 3; 7 2 1]; % inisialisasi matrik B 6

7 % ---proses penjumlahan matrik----8 for i=1:2 9 for j=1:3 10 D(i,j)=A(i,j)+C(i,j); 11 end 12 end 13

14 % ---menampilkan matrik A, C dan D----15 A

16 C 17 D

Pertanyaan yang segera muncul adalah apakah source code tersebut bisa digunakan untuk me-nyelesaikan penjumlahan matrik yang dimensinya bukan 2x3 ? Misalnya

D= A + C D =    4 3 8 6 5 1 2 3 6 7 9 1   +    2 6 7 2 9 1 3 8 5 8 4 7   

Tentu saja bisa, asal indeksi bergerak dari 1 sampai 3 dan indeks j bergerak dari 1 sampai 4. Lihat source code berikut

1 clear all 2 clc 3

4 A=[4 3 8 6; 5 1 2 3; 6 7 9 1]; % inisialisasi matrik A 5 C=[2 6 7 2; 9 1 3 8; 5 8 4 7]; % inisialisasi matrik B 6

7 % ---proses penjumlahan matrik----8 for i=1:3 9 for j=1:4 10 D(i,j)=A(i,j)+C(i,j); 11 end 12 end 13

14 % ---menampilkan matrik A, C dan D----15 A

16 C 17 D

Walaupun bisa digunakan, namun cara modifikasi seperti itu sangat tidak fleksibel dan beresiko salah jika kurang teliti. Untuk menghindari resiko kesalahan dan agar lebih fleksibel, source

codetersebut perlu dioptimasi sedikit lagi menjadi

1 clear all 2 clc 3

4 A=[4 3 8 6; 5 1 2 3; 6 7 9 1]; % inisialisasi matrik A 5 C=[2 6 7 2; 9 1 3 8; 5 8 4 7]; % inisialisasi matrik B 6

7 % ---proses penjumlahan matrik----8 dim=size(A); 9 n=dim(1); 10 m=dim(2); 11 for i=1:n 12 for j=1:m 13 D(i,j)=A(i,j)+C(i,j); 14 end 15 end 16

17 % ---menampilkan matrik A, C dan D----18 A

19 C 20 D

Perhatikan, ada tambahan 3 statemen yaitu mulai dari baris ke-8 sampai ke-10. Sementara baris ke-11 dan ke-12 hanya mengalami sedikit perubahan. Statemen di baris ke-8 bermaksud mendeklarasikan variabeldim untuk diisi oleh hasil perhitungan fungsi internal yang bernama size. Matrik A dijadikan parameter input fungsi size. Fungsi size berguna untuk menghitung jumlah baris dan jumlah kolom dari matrik A. Hasilnya adalahdim(1) untuk jumlah baris dan dim(2) untuk jumlah kolom. Pada baris ke-9, variabel n dideklarasikan untuk menerima infor-masi jumlah baris daridim(1), sementara variabel m diisi dengan informasi jumlah kolom dari dim(2) pada baris ke-10. Adapun baris ke-11 dan ke-12 hanya mengubah angka indeks batas atas, masing-masing menjadin dan m.

Sekarang kalau kita balik lagi menghitung penjumlahan matrik dari contoh sebelumnya yang berukuran 2x3, maka source code akan seperti ini

1 clear all 2 clc 3

4 A=[3 8 5; 6 4 7]; % inisialisasi matrik A 5 C=[9 5 3; 7 2 1]; % inisialisasi matrik B 6

7 % ---proses penjumlahan matrik----8 dim=size(A); 9 n=dim(1); 10 m=dim(2); 11 for i=1:n 12 for j=1:m 13 D(i,j)=A(i,j)+C(i,j); 14 end 15 end

16

17 % ---menampilkan matrik A, C dan D----18 A

19 C 20 D

Ajaib bukan!? Tidak ada statemen yang berubah kecuali hanya pada baris ke-4 dan ke-5. Per-ubahan itu tidak bisa dihindari karena memang di kedua baris itulah deklarasi elemen-elemen matrik A dan matrik C dilakukan.

3.4 Fungsi eksternal penjumlahan matrik

Saatnya kita memasuki topik tentang pembuatan fungsi eksternal. Dari source code yang terakhir tadi, mari kita ambil bagian proses penjumlahan matrik-nya saja

1 dim=size(A); 2 n=dim(1); 3 m=dim(2); 4 for i=1:n 5 for j=1:m 6 D(i,j)=A(i,j)+C(i,j); 7 end 8 end

Kita akan jadikan potongan source code ini menjadi fungsi eksternal, dengan menambahkan statemen function seperti ini

1 function D=jumlah(A,C) 2 dim=size(A); 3 n=dim(1); 4 m=dim(2); 5 for i=1:n 6 for j=1:m 7 D(i,j)=A(i,j)+C(i,j); 8 end 9 end

kemudian ia harus di-save dengan nama jumlah.m. Sampai dengan langkah ini kita telah mem-buat fungsi eksternal dan diberi nama fungsi jumlah. Sederhana sekali bukan? Untuk menguji kerja fungsi eksternal tersebut, coba jalankan source code berikut ini

1 clear all 2 clc 3

4 A=[3 8 5; 6 4 7]; % inisialisasi matrik A 5 C=[9 5 3; 7 2 1]; % inisialisasi matrik B 6

7 % ---proses penjumlahan matrik----8 D=jumlah(A,C)

9

10 % ---menampilkan matrik A, C dan D----11 A

12 C 13 D

atau anda jalankan source code yang berikut ini

1 clear all 2 clc 3

4 A=[4 3 8 6; 5 1 2 3; 6 7 9 1]; % inisialisasi matrik A 5 C=[2 6 7 2; 9 1 3 8; 5 8 4 7]; % inisialisasi matrik B 6

7 % ---proses penjumlahan matrik----8 D=jumlah(A,C)

9

10 % ---menampilkan matrik A, C dan D----11 A

12 C 13 D

atau coba iseng-iseng anda ganti matrik-nya menjadi

1 clear all 2 clc 3 4 V=[4 3; 5 1]; % inisialisasi matrik V 5 W=[2 6; 9 3]; % inisialisasi matrik W 6

7 % ---proses penjumlahan matrik----8 U=jumlah(V,W)

9

10 % ---menampilkan matrik V, W dan U----11 W

12 V 13 U

Periksa hasilnya, betul atau salah? Pasti betul! Kesimpulannya adalah setelah fungsi eksternal berhasil anda dapatkan, maka seketika itu pula anda tidak perlu menggubrisnya lagi. Bahkan anda tidak perlu mengingat nama matrik aslinya yang tertulis di fungsi jumlah yaitu matrik

Dokumen terkait