Supardi 1
Modul ke 6
PEMROGRAMAN DAN TIPE DATA
Pendahuluan
Matlab memberikan kemudahan di dalam penulisan pernyataan-pernyataan atau perintah-perintah. Pernyataan/perintah tersebut dapat dituliskan di dalam editor tertentu dan disimpan eksetensi .m. Dengan memberikan nama file dengan ekstensi tersebut, maka akan dapat deksekusi di dalam lingkungan Matlab. Juga, dengan ekstensi tersebut file yang kita buat bernama M-File.
M-File dapat berupa skrip maupun fungsi. M_File dalam bentuk skrip dapat dieksekusi secara mudah dengan menuliskan nama skrip tersebyut di command window, atau cukup menekan tombol F5 dengan catatan skrip sudah diberikan nama.
M-File dalam bentuk fungsi terdiri atas argumen yang harus diberikan input sebelum dieksekusi dan menghasilkan ouput. Apabila M-File kita berupa fungsi, maka langkah eksekusi file adalah sebagai berikut.
Membuat M-File dengan
teks editor. function c = fungsiku(a,b) c = sqrt(a.^2 + b.^2);
Memanggil M-File melalui command window
>> a=2.4;
>> b= 3.1;
>> c=fungsiku(a,b)
c =
3.9205
Supardi 2 Perbedaaan antara M-File dalam bentuk skrip dan fungsi antara lain
M-File dalambentuk skrip M-File dalam bentuk fungsi 1. Tidak menerima input atau
return argumen keluaran.
2. Menjalankan data yang berada di ruang kerja (workspace)
3. Sangat berguna apabila kita
membutuhkan data
sewaktu-waktu, karena data tersimpan dalam ruang kerja.
1. Menerima argumen input dan mereturn argumen output.
2. Tidak menjalankan data yang ada di ruang kerja, melainkan dari variabel internal yang secara default merupakan variabel lokal fungsi.
3. Sangat berguna apabila di lain waktu kita membutuhkan fungsi tersebut, karena fungsi tersimpan di current directory.
Skrip
Skrip merupakan bentuk sederhana dari M-File, karena tidak memiliki argumen input maupun output. Bentuk ini sangat berguna untuk otomatisasi serangkaian perintah-perintah Matlab, misalnya perhitungan yang berulang-ulang dengan data yang sama. Dengan menggunakan tombol down arrow atau up arrow, maka kita dapat menemukan kembali data atau perintah yang pernah kita eksekusi.
Hal ini karena data atau perintah tadi terseimpan di dalam ruang kerja. Dibawah ini diberikan contoh skrip M-File sederhana
% Skrip M-file untuk menghasilkan % baris komentar
% plot ʺflower petalʺ
theta = -pi:0.01:pi; % masukan fungsi
Supardi 3 rho(1,:) = 2*sin(5*theta).^2; % mulai perhitungan
rho(2,:) = cos(10*theta).^3;
rho(3,:) = sin(theta).^2;
rho(4,:) = 5*cos(3.5*theta).^3;
for k = 1:4
polar(theta,rho(k,:)) % keluaran grafik pause
end
Fungsi
Sebagaimana bahasa pemrogrman tingkat tinggi lainnya, Matlab memiliki fungsi bawaan, yaitu fungsi yang sudah tercompile sehingga fungsi ini siap digunakan. Contoh fungsi bawaan ini misalnya sin, cos, tan, exp, log, dan lainnya.
Disamping fungsi bawaan ini, Matlab juga menyediakan fungsi yang siap digunakan dalam bentuk M-File. Ingatlah kembali, bahwa ketika kita membuat program melalui edit window, file tersebut selalu disimpan dalam ekstensi .m. Ekstensi ini menunjukkan bahwa file yang disimpan tersebut dalam format M-File. Fungsi M-File yang sudah disiapkan oleh Matlab berjumlah banyak. Sebagai contoh fzero, ode23, ode113, diag, mean, median dan yang lainnya.
Dibawah ini diberikan contoh M-File dalam bentuk fungsi yang sangat berguna bagi pemrograman komputer.
function f = fact(n) % baris untuk definisi fungsi
% FACT Factorial. H1
% FACT(N) mereturn factorial dari N,
% biasanya dilambangkan N!
% FACT(N) hasilnya sama dengan PROD(1:N).
f = prod(1:n); % body fungsi
Supardi 4 Fungsi ini memmiliki beberapa bagian, sebagaimana daapt ditemukan di dalam fungsi-fungsi di Matlab.
Baris definisi fungsi. Baris ini mendefinisikan nama fungsi dan argumen input dan output. Dalam contoh tersebut nama fungsinya adalah fac, argumen input adalah n, serta argumen output adalah f.
Baris bantuan. H1 singkatan dari baris “help 1”. Matlab akan menampilkan baris H1 ketika kita mencarinya dengan perintah lookfor.
Body fungsi. Bagian ini memuat code yang akan melakukan komputasi dan menyimpan harga untuk kepentingan setiap argumen output.
Beberapa Contoh
Misalnya kita mempunyai sebuah sistem yang terdiri atas dua massa yang tergandeng dengan sebuah pegas. Fungsi h(t) dibawah ini menggambarkan sistem terkopel tersebut
ℎ( ) = sin(7 ) + sin(8 )
Dalam Matlab, kita dapat menyatkan h(t) tersebut dengan perintah inline, h=inline(ʹsin(7*t)+sin(8*t)ʹ,ʹtʹ)
Untuk menampilkan grafik, kita tinggal mengetikkan kode di command window.
>> h=inline(ʹsin(7*t)+sin(8*t)ʹ,ʹtʹ);
>> t=0:pi/60:5*pi;
>> plot(t,h(t))
Supardi 5 Gambar 7.1 Grafik ℎ( ) = sin 7 sin 8
Perhatikan pada bagian inline, variabel t disana merupakan variabel inputan.
Variabel t tersebut disebut pula sebagai variabel dummy. Kita dapat memberikan masukan pada fungsi h dengan variabel input tidak harus bernama t. Lihat contoh di bawah ini
>> h=inline(ʹsin(7*t)+sin(8*t)ʹ,ʹtʹ);
>> x=0:pi/6:pi;
>> disp([xʹ h(x)ʹ]) 0 0 0.5236 -1.3660 1.0472 1.7321 1.5708 -1.0000 2.0944 -0.0000 2.6180 0.3660 3.1416 -0.0000 Contoh 7.1
Supardi 6 Kita juga dapat mendefinisikan fungsi sendiri. Funsgi tersebut memiliki input dapat output. Dalam contoh ini, nama input adalah t dan output h. Gambar 7.2 memberi ilustrasi contoh tersebut.
Gambar 7.2 Ilustrasi pendefinisian fungsi sendir. Setelah fungsi disimpan, kemudian dipanggil jendela command dengan input berupa array x=0:pi/6:pi. Jadi meskipun pada fungsi utamanya input adalah t, tetapi saat dipanggil kita dapat memberi inputan dengan nama variabel lainnya.
Contoh 7.2
Untuk memberikan contoh konkrit penggunaan fungsi M-File ini, ditinjau metode numerik terkenal dalam pencarian akar persamaan nonlinier bernama metode Newton-Raphson. Metode ini dapat diungkapkan dengan
= −
Apabila fungsi nonlinier yang akan dicari akar persamaannya adalah = sin( ) − , maka kita memerlukan turunan fungsi tersebut yaitu ′( ) = cos( ) − 1.
Untuk membuat fungsi M-File f(x) dan fʹ(x) kita dapat melakukan dengan dua cara, yaitu dengan inline dan menyimpannya dalam file M-File lainnya.
1) Dengan menggunakan inline, kita dapat membuat memperoleh akar persamaan tersebut dengan seperti dibawah ini
Supardi 7
clear; close all;
f=inline('sin(x)-x','x');
df=inline('cos(x)-1','x');
x=input('Masukkan terkaan awal :');
step=0; %langkah ke 0
tol=1e-2; %Toleransi selisih nilai sekarang dan sebelumnya
temp=1; % nilai awal selisih nilai lama dan sekarang
while (temp>=tol) xlama=x;
x=x-f(x)/df(x); % mencari akar persamaan dengan Newton Raphson
step=step+1; % langkah berikutnya disp([x' f(x)']);
temp=abs(x-xlama);
end
if temp<=tol % syarat akar persamaan ditemukan disp('Akar persamaan ditemukan di x =');
disp(x);
else
disp('Akar persamaan tidak ditemukan.');
end
Kemudian simpanlah file ini dengan nama newton.m dan anggillah file melalui command window.
2) Kita juga dapat menyelesaikan masalah di atas dengan terlebih dahulu membuat fungsi M-File. Cara, bukalah jendela editor kemudian tuliskan fungsi
function y=f(x) y=sin(x)-x;
Selanjutnya simpanlah file fungsi tersebut dengan nama f.m. Setelah itu, buatlagi fungsi turunan dari f yaitu
function y=df(x) y=cos(x)-1;
Setelah itu, simpan file fungsi tersebut dengan nama df.m.
Supardi 8 Untuk menjalankan fungsi tersebut, hapuslah bagian inline dari contoh program yang telah diberikan, kemudian panggillah nama file newton melalui command window atau cukup tekan F5.
Gambar 7.3 Ilustrasi pembuatan fungsi dan program utamanya
Aturan Dasar
Aturan dasar yang dimaksudkan adalah bagaimanakah cara membuat fungsi sendiri dengan argumen input dan output yang dimungkinkan. Untuk memberikan gambaran ini, marilah kita membuat sebuah fungsi yang akan digunakan untuk menghitung rerata dan dan jumlah dari data yang dimasukkan.
function [jumlah,mean]=fungsiku(x) N=length(x);
jumlah=sum(x);
mean=sum(x)/N;
Kemudian dari command window jalankan,
>> s=1:3;
Supardi 9
>> [J,M]=fungsiku(s) J =
6 M = 2
Gambar 7.4 Pembuatan funsi dengan 2 output ( jumlah dan mean) dan 1 input (x).
Setelah dijalankan variabel input dapat diganti namanya.
Dari contoh di atas kita dapat menarik kesimpulan tentang fungsi yaitu, Bentuk umum fungsi adalah
function [outarg1, outarg2, . . .] = nama_fungsi( inarg1, inarg2, . . . ) outarg1 = ... ;
outarg2 = ... ; ...
Kata kunci fungsi
Sebuah fungsi harus diawali dengan kata kunci function.
Supardi 10 Argumen input dan argumen output merupakan variabel dummy, artinya bahwa kita dapat memberikan nama berbeda saat fungsi tersebut dipanggila Sebagai contoh, argumen input pada fungsi yang dibuat adalah jumlah dan mean, tetapi ketika dipanggil di command window kita ganti dengan J dan M.
Demikian pula pada argumen outputnya, pada fungsi adalah x sedangkan saat dipanggil diganti dengan s.
Multi Argumen Output
Kita dapat menentukan lebih dari satu argumen ouput. Pada contoh, argumen ouput yang kita buat yaitu jumlah dan mean. Kita dapat membuat lebih dari dua output kika diinginkan. Untuk memanggil semua argumen output, kita harus menggunakan kurung kotah [outarg1, ouarg2, ...]. Jika hanya menginkan hasil dari outarg1 saja, maka tidak diperlukan kurung kotak.
>> jum=fungsiku(x) jum =
6
Aturan Penamaan Fungsi
Penamaan fungsi harus sesuai dengan aturan penamaan variabel di Matlab.
Apabila fungsi yang kita buat diberikan nama lain, maka pemanggilan fungsi harus sesuai dengan nama fungsi yang disimpan. Sebagai contoh, jika fungsi yang telah kita buat bukan diberikan nama fungsiku (sesuai dengan nama fungsi ini) melainkan stats, maka untuk menjalankannya
>> r=rand(1,10);
>> [J,M]=stats(r) J =
3.8603 M = 0.3860
Mengecek Jumlah Argumen Fungsi
Supardi 11 Sebuah fungsi dapat dipanggil beserta semua, sebagian atau tidak sama sekali argumen yang dimilikinya. Kalau kita tidak ingin menyertakan argumen input sama sekali, maka tanda kurung dihilangkan. Untuk argumen output, kita juga dapat menyertakan semua argumen, sebagian atau satu saja. Apabila kita memanggil fungsi tanpa argumen output, maka argumen pertama yang akan ditampilkan. Untuk mengecek jumlah input, kita menggunakan perintah nargin.
function y = myfunction(a, b, c) disp( nargin );
...
Sedangkan untuk mengecek jumlah output digunakan perintah nargout.
function [y1,y2,y3] = myfunction(a, b, c) disp( nargout );
...