Dokumen - Tips - Panduan Matlab Untuk Teknik Kimia
Dokumen - Tips - Panduan Matlab Untuk Teknik Kimia
MATLAB
Matlab merupakan singkatan dari Matrix Laboratory. Software ini merupakan
hasil pengembangan
EISPACK. Pertama sekali Matlab ditulis dalam bahasa Fortran oleh Cleve Moler dan
versi Matlab sekarang ditulis dalam bahasa C oleh MathWorks.
Matlab merupakan sebuah software yang mengintegrasikan analisa numerik,
komputasi matriks, pemrosesan sinyal dan grafik dimana permasalahan dan solusinya
diekspresikan dalam bentuk notasi matematika. Penggunaannya meliputi :
-
Komputasi Matematika
Pengembangan Algoritma
Grafik
Saat ini Matlab merupakan salah satu software yang populer digunakan dalam
penelitian berbagai bidang yang memanfaatkan matematika sebagai alat bantu. Dalam
dunia pendidikan, Matlab digunakan sebagai alat bantu untuk perkuliahan tingkat lanjut
Matematika, Teknik dan Sains.
2.1 Fitur/Fasilitas Matlab
Sebagai suatu sistem yang lengkap, Matlab menawarkan bermacam fasilitas
diantaranya :
-
Sebagai software aplikasi yang berbasis pada operasi matriks, maka Matlab
memberikan suatu kemudahan dalam penyelesaian suatu masalah
Fasilitas Toolbox yang lengkap. Toolbox adalah kumpulan file Matlab (M-file,
berekstensi *.m) , dimana filefile tersebut merupakan fungsi yang dibuat untuk
menyelesaikan suatu masalah tertentu dalam bidang tertentu pula. Terdapat lebih
dari 25 Toolbox, diantaranya : statistics toolbox untuk bidang statistik, kemudian
Partial Differential Equation Toolbox untuk persamaan diferensial parsial, dan
lain-lain.
Jika tidak tersedia, panggilah melalui Start Menu Window atau melalui Windows Explorer
pada folder C:\Matlab\bin.
Tampilan awal Matlab adalah Matlab Command Window, seperti gambar berikut
ini :
lokasi direktori aktif (lokasi direktori dimana kita bekerja saat ini).
tampak :Matlab Help Window, yang merupakan window bantuan untuk fungsi fungsi
yang ada di Matlab.
Dalam Matlab untuk membuat suatu fungsi yang akan disimpan dalam bentuk file
berekstensi M (biasa dilakukan untuk pemrograman) digunakan fasilitas Matlab editor.
Pemanggilan Matlab Editor dapat dilakukan dengan mengetikan >>edit kemudian tekan
tombol enter, akan tampil window berikut :
Cara lain yang biasa dilakukan untuk pemanggilan Matlab editor dilakukan dari
menu file.
Untuk mengubah direktori gunakan perintah >>cd (seperti perintah dos). Cara
lain bisa dilakukan dengan meng klik ikon path browser yang terletak di atas Matlab
Command Menu.
NOT
equal
not equal
less than
less than or equal
greater than
greater than or equal
and
or
not
==
~=
<
<=
>
>=
&
|
equal
not equal
less than
less than or equal
greater than
greater than or equal
and
or
not
Apabila diinginkan hasil dari sebuah vektor dengan elemen antara 0 dan 20
dengan kenaikan 2, yang akan menghasilkan suatu vektor waktu, maka dapat digunakan
perintah sebagai berikut:
t = 0:2:20
t=
0
10
12
14
16
18
20
10
11
Jika kita ingin menjumlahkan dua vektor yang sama panjangnya, cukup
menjumlahkan dua vektor tersebut, seperti yang tampak di bawah ini:
c = a+b
c=
4
10
12
14
16
18
20
Selain operasi penjumlahan vektor, di dalam MATLAB juga terdapat beberapa standar
fungsi seperti sin, cos, log, exp, sqrt dan masih banyak lagi yang lain. Konstanta yang
biasanya digunakan adalah pi, dan I atau j untuk akar dari 1 (imajiner). Untuk
menentukan beberapa fungsi yang digunakan, ketik help nama fungsi pada MATLAB
Command Window.
sin(pi/4)
ans =
0.7071
Untuk membuat plot dari suatu fungsi, missal fungsi sin, MATLAB menyediakan juga
fasilitasnya, pertama-tama buat batas intervalnya dengan menggunakan vektor waktu.
Tanda ; digunakan untuk tidak melihat semua nilainya. Kemudian menghitung nilai sin
pada tiap-tiap titik.
Contoh:
t = 0:0.25:7;
y=sin(t);
plot(t,y)
Akan muncul suatu window yang berisi plot pendekatan satu periode dari gelombang
sinus.
2.3.1 Kalkulus
Operasi dasar pada kalkulus: diferensial, limit, integrasi, penjumlahan, dan lain-lain.
Untuk menghitung diferensial dari suatu fungsi
f(x) = sin ax,
dapat digunakan perintah diff(f):
syms a x
f=sin(a*x)
df=diff(f) % turunan pertama dari fungsi f
dfa=diff(f,a) % turunan pertama dari fungsi f terhadap a
dfa
Perintah di MATLAB
f = x^n
f = nxn-1
g = a cos(at+b)
g = a cos(at+b)
syms r t f
x = r*cos(t)*cos(f); y = r*cos(t)*sin(f); z = r*sin(t);
J = jacobian([x; y; z], [r t f])
detJ = simple(det(J))
Tabel diferensial dan Jacobian.
Limit dari suatu fungsi f(x), dituliskan sebagai f(x) didefinisikan sebagai:
Integrasi dengan konstanta real dari suatu fungsi, misalnya funsi eksponensial dengan k
suatu konstanta, sebagai berikut:
ezplot(f,[a b]) % {Akan menghasilkan suatu grafik dari f(x) pada interval a < x < b.}
F = [2 3 ; 4 5]
F=
2
G=E.*F
G=
2
12
20
0]
0, cos(t)^2+sin(t)^2]
0.5000
0.3333
0.5000
0.3333
0.2500
0.3333
0.2500
0.2000
Elemen elemen dari matriks H tersebut dapat juga dijadikan bentuk rasional dengan
matriks simbolik sebagai berikut:
H=sym(H)
H=
[
1, 1/2, 1/3]
9, -36,
30]
H=
[ s, 1/2, 1/3]
[ 1/2, 1/3, 1/4]
[ 1/3, 1/4, 1/5]
Z=det(H)
Z=
1/240*s-1/270
sol=solve(Z)
sol =
8/9
H=subs(H,s,sol)
H=
[ 8/9, 1/2, 1/3]
[ 1/2, 1/3, 1/4]
[ 1/3, 1/4, 1/5]
Sehingga diperoleh matriks H yang singular dengan det=0.
det(H)
ans =
0
inv(H)
??? Error using ==> sym/inv
Error, (in inverse) singular matrix
Hal ini terjadi karena matrik H nya singular.
Nilai eigen dari suatu matriks A dapat dihitung dengan perintah : E = eig(A).
Atau jika ingin menghitung nilai eigen dan vektor eigen dapat menggunakan perintah
[V,E] = eig(A).
Untuk contoh matriks H terakhir, merupakan matriks yang singular, maka salah satu nilai
eigennya 0, statemen:
[T,E] = eig(H) menghasilkan matrik T dan matrik E, dimana kolom dari matrik T
merupakan vektor eigen dari matrik H, dan element diagonal dari matrik E merupakan
nilai eigen dari matrik H.
Hasil dari statement diatas:
T=
[ 1, 28/153+2/153*12589^(1/2), 28/153-2/153*12589^(1/2) ]
[ -4,
1,
1]
[10/3,92/255-1/255*12589^(1/2),292/255+1/255*12589^(1/2)]
E=
[ 0,
0,
[ 0, 32/45+1/180*12589^(1/2),
[ 0,
0]
0]
, 292/255+1/255*12589^(1/2)]
B = [1 2 3]
B=
1
A- B
ans =
4
A+ B
ans =
6
10
Syarat penjumlahan dan pengurangan adalah dimensi kedua vektor atau matriks harus
sama. Pada perkalian vektor dan matriks dilakukan menurut persamaan :
C = AB
cik = aij.bij
Syarat perkalian vektor dan matriks adalah jumlah baris vektor/matriks pertama harus
sama dengan jumlah kolom vektor/matriks kedua.
Contoh :
C = [1 2 3;4 5 6;7 8 9;10 11 12]
C=
1
10
11 12
D = [1 3;2 4; 5 7]
D=
1
C*D
ans =
20
32
44
74
68 116
92 158
Pada pembagian matriks, terdapat dua macam :
-
Sama halnya dengan perkalian dan pembagian matriks, pemangkatan elementer juga
berlaku untuk setiap elemen suatu vektor/matriks.
Contoh :
A = [1 2 3]
A=
1
B = [4 5 6]
B=
4
A*B'
ans =
32
A.*B
ans =
4
10
18
(perkalian elementer)
A./B
ans =
0.2500
0.4000
0.5000
(pembagian elementer)
A.^2
ans =
1
B.^A
ans =
4
25 216
Operasi fungsional pada Matlab dapat diaplikasikan pada vektor dan/atau matriks.
Misalnya jika x = [1 2 3] dan y = x2 + 2x + 4, maka persamaan y(x) dapat dievaluasi
secara vektor.
x = [1 2 3]
x=
1
y = x.^2 + 2*x + 4
y=
7
12
19
Beberapa fungsi bawaan dapat juga diaplikasikan secara vektor dan matriks
misalnya sinus, cosinus, exponen, logaritma dan sebagainya. Pemahaman tentang operasi
pada vektor dan matriks ini sangat membantu menyelesaikan masalah menggunakan
Matlab, karena beberapa kegiatan iteratif diganti dengan hanya sebuah atau beberapa
buah perintah Matlab.
Pada Matlab, membentuk suatu vektor/matriks sangat sederhana sekali. Selain itu
ada beberapa trik yang dapat dipergunakan dalam pembuatan suatu vektor atau matriks,
contohnya dapat dilihat pada perintah-perintah berikut :
b = ones
b=
1
b = ones(5)
b=
1
b = 2*ones(5)
b=
2
b = 2+ones(5)
b=
3
a = zeros(4)
a=
0
zeros(4,3)
ans =
0
zeros (4,1)
ans =
0
0
0
0
C = 1:10
C=
1
10
D = 1:2:10
D=
1
Jika membuat loop pada vektor/matriks dapat dilakukan dengan cara sebagai berikut :
>> for j=1:4,
j
end
j=
1
j=
2
j=
3
j=
4
v = 1:3:10
v=
1
10
Tetapi harus diingat, pada contoh yang sederhana ini cara seperti ini tidak dianjurkan
digunakan karena kurang efesien.
Berikut ini sebuah contoh penggunaan for akan diberikan, dimana diinginkan
melakukan operasi pada setiap baris yang dimulai dari baris kedua dengan cara
mengurangkan nilainya terhadap baris sebelumnya dan dikanjutkan dengan baris
berikutnya. Sebuah perintah singkat dapat digunakan untuk mengatasi masalah ini.
Contoh :
>> A = [ [1 2 3]' [3 2 1]' [2 1 3]']
A=
1
>> B = A;
>> for j=2:3,
A(j,:) = A(j,:) - A(j-1,:)
end
A=
1
-1
-1
A=
1
-1
-1
untuk menjalankannya atau untuk melihart hasilnya, ketik nama file tersebut di Matlab
command. Jangan gunakan huruf kapital karena nama fungsi di Matlab diharuskan
menggunakan huruf non-kapital.
Beberapa catatan dapat diberikan di awal fungsi/script sebagai pesan untuk para
pengguna lain atau sebagai catatan untuk mengingatkan fungsi dan urutan kerja program
di kemudian hari. Catatan di awal program dapat digunakan sebagai catatan yang dapat
dimunculkan melalui perintah help. Catatan di badan program walaupun tidak dapat
keluar melalui perintah help, tetapi akan memudahkan dalam mengenali kembali alur
program yang telah dibuat.
Perhatikan contoh berikut :
% contoh1.m
A = [1 2 3 ; 4 5 6]
B = [2 3;4 5;6 7]
C = A*B
>>contoh1
A=
1
B=
2
C=
28
34
64
79
Script dapat menerima masukan melalui input dari keyboard, tetapi tidak dapat
menerima masukan berupa argumen, karena itu script hanya digunakan untuk programprogram singkat atau program induk.
Penggunaan fungsi lebih fleksibel dibandingkan script biasa. Fungsi dapat
menerima masukan berupa argumen. Walaupun fungsi dapat menerima masukan dari
keyboard, tetapi pemogram biasanya tidak menempatkan pekerjaan ini dalam fungsi
kecuali ada tujuan khusus untuk itu.
Sebuah fungsi harus memiliki header yang ditandai dengan kata kunci function.
Pada header tersebut terdapat variabel output, nama fungsi dan variabel input. Nama
fungsi disini tidak selalu mencerminkan nama fungsi yang sebenarnya. Nama fungsi
sebenarnya adalah nama file .m yang berisi fungsi tersebut. Walaupun demikian, nama
fungsi pada header sebaiknya sama dengan nama file agar tidak membingungkan.
Perhatikan contoh berikut :
function R = contoh2(P,Q)
% contoh2.m : menghitung perkalian matriks
R = P*Q
A = [1 2 3;4 5 6];
B = [2 3;4 5;6 7];
C = contoh2(A,B)
C=
28
34
64
79
C=
28
34
64
79
Perhatikan bahwa nama variabel di dalam fungsi dan variabel pemanggil fungsi
tidak harus sama. Matlab membedakan variabel di luar fungsi dan variabel di dalam
fungsi. Variabel di dalam fungsi bersifat lokal dan hanya berlaku di dalam fungsi.
Selain melalui script dan fungsi, Matlab juga menyediakan fasilitas untuk
mengevaluasi suatu string sebagai hubungan (persamaan) matematik. Perintal eval
dapat menterjemahkan string menjadi suatu persamaan dan mengevaluasinya.
>> eval(cos(2*pi))
ans =
1
Perintah fevaldapat mengeksekusi suatu fungsi dengan nama string untuk variabel
masukan tertentu.
>> y = feval(sin,0.5*pi)
y=
1
2.4.2 Menempatkan m-file dalam Lingkungan Kerja Matlab
Lingkungan kerja Matlab memiliki alamat-alamat tertentu dalam harddisk yang
akan digunakan saat mencari suatu fungsi tertentu. Apabila file script/fungsi yang dibuat
berada di luar direktori kerja dan di luar alamat-alamat tersebut, maka Matlab akan
melaporkan bahwa file tersebut tidak ditemukan.
Mengapa hal ini menjadi suatu yang membingungkan, bukankah file-file tersebut
bisa ditempatkan bersama dengan file-file program Matlab yang lain? Jawabannya tentu
saja tidak! Menempatkan file-file program bersama file-file Matlab akan membuat filefile tersebut tidak tersusun dengan teratur dan akan menyulitkan pencarian dikemudian
hari. Untuk menghindari hal ini, tempatkan file-file kerja di dalam sebuah direktori
tertentu, kemudian daftarkan alamat direktori tersebut ke dalam daftar pencarian Matlab
(matlabpath).
Memasukkan alamat direktori kerja ke dalam alamat pencarian Matlab dapat
dilakukan melalui perintah menu : File Set Path , kemudian pilih direktori kerja
melalui Browse. Setelah selesai, jangan lupa File save path. Untuk mengetahui apakah
direktori kerja telah dikenali oleh Matlab, ubahlah direktori kerja Matlab dengan perintah
cd (misalnya ke direktori/matlab/bin) kemudian panggillah salah satu fungsi yang ada di
dalam direktori tersebut. Apabila fungsi tersebut dapat dieksekusi, maka Matlab telah
mengenali alamat direktori kerja tersebut.
2.4.3 Pengaturan Variabel
Penggunaan variabel dalam pemrograman penting untuk diperhatikan. Berikut ini
beberapa hal yang perlu diperhatikan.
2.4.3.1 Penamaan Variabel
Nama variabel penting untuk diperhatikan. Janganlah membuat nama variabel
cukup singkat sehingga sulit untuk dikenali. Sebaliknya jangan membuatnya terlalu
panjang sehingga akan memakan tempat.
Buatlah daftar variabel dan penjelasannya, khususnya variabel masukan dan
keluaran pada fungsi, agar orang lain dapat dengan mudah menggunakan fungsi ini. Perlu
diperhatikan bahwa Matlab membedakan huruf kapital dan huruf non-kapital dalam
penamaan variabel. Jadi Data akan berbeda dengan DATA dan data.
2.4.3.2 Variabel Lokal dan Variabel Global
Pada script, seperti halnya pada sistem Matlab, variabel yang dideklarasi/
didefenisikan bersifat global, artinya variabel tersebut tetap ada di dalam ruang kerja
(workspace) hingga dihapus (dengan clear) atau terhapus pada saat Matlab diterminasi.
Lain halnya variabel-variabel yang dideklarasikan di dalam fungsi. Variabelvariabel ini bersifat lokal dan tidak dapat diintervensi dari luar. Tetapi harus diingat,
variabel-variabel ini bukan bukan variabel-variabel input dan output fungsi. Untuk
memberi gambaran tentang variabel lokal ini perhatikan contoh berikut.
function a = contoh3(b)
% Contoh pemakaian variabel lokal dan variabel global
c=3
a=b+c
>>c = 5
% mula-mula c = 5
c=
5
>>b = 7
b=
7
>>a = contoh3(b)
c=
3
% di dalam fungsi c = 3
a=
10
a=
>>c
c=
5
Setiap variabel menempati suatu ruang di memory sesuai dengan jenis variabel
tersebut. Semakin banyak variabel yang digunakan, maka semakin besar pula ruang
memory yang digunakan untuk variabel-variabel ini. Apabila masalah yang diselesaikan
melibatkan jumlah variabel yang cukup banyak, sebaiknya variabel-variabel yang sudah
tidak digunakan dihapus dengan perintah clear <nama_variabel> untuk memberi
tempat kepada variabel-variabel yang baru.
2.4.3.3 Melewatkan Variabel Melalui Fungsi
Seperti yang telah dijelaskan bahwa selain variabel input dan output, variabel di
dalam fungsi bersifat lokal. Kadangkala ada beberapa variabel yang diperlukan oleh
subrutin fungsi yang dipanggil oleh subrutin lainnya.
Sebagai ilustrasi, misalkan program utama memiliki variabel a, b, c dan d.
program utama memanggil fungsi sub1 dan fungsi ini memanggil fungsi sub2 lain.
Fungsi sub1 memerlukan variabel a, b dan c, sedangkan fungsi sub2 memerlukan variabel
c dan d. Ada 2 cara melewatkan variabel d menuju sub2 :
1. Dengan melewatkan variabel d pada fungsi sub1. namun ini akan sulit apabila fungsi
yang digunakan adalah fungsi-fungsi toolbox Matlab. Apabila terpaksa harus
menjalani langkah ini, sejumlah perintah-perintah di fungsi tersebut harus diubah,
terutama yang melaksanakan perintah feval.
% Program utama : main.m
A = 1;
B = 2;
C = 3;
D = 4;
E = sub1(A,B,C,D)
function y = sub1(a,b,c,d)
p = sub2(c,d)
y = a + b + p;
function q = sub2(m,n)
q = m + n;
>>main
E=
10
2. Dengan perintah global. Variabel yang bersifat global didefenisikan di program
utama, sehingga akan selalu bersifat global di setiap fungsi. Pada Matlab versi 5.x hal
ini tidak berlaku sepenuhnya. Variabel global didefenisikan di program utama, dan di
subrutin yang akan menerimanya saja, sehingga variabel tersebuttidak sepenuhnya
global di dalam fungsi lain. Hal ini menguntungkan untuk menghindari terjadinya
penggunaan nama variabel yang sama sehingga terjadi pergantian nilai (overwrite).
% Program : test.m
for i = 1:10
for j = 1:2:10
A(i,j) = (i+j);
end
end
A
test
A=
2
10
11
10
12
11
13
10
12
14
11
13
15
10
12
14
16
11
13
15
17
10
12
14
16
18
11
13
15
17
19
Urutan loop dapat sebuah vektor dengan bilangan-bilangan tertentu seperti contoh di atas:
untuk i urutan dari 1 sampai 10 dengan kenaikan 1, sedangkan untuk j sari sampai 10
dengan kenaikan 2. jika x = [1 1.3 5.4 2.3 5.5 7], maka for x = x akan memberikan
harga-harga x seperti setiap elemen dalam vektor x : x(1) = 1, x(3) = 5.4, dan seterusnya.
c. while
Perintah ini akan mengulang perintah-perintah yang diapitnya selama kondisi pengujinya
benar. Di dalam loop harus ada perintah-perintah yang membuat kondisi penguji menjadi
salah, karena kalau tidak loop akan berlangsung terus. Contoh dapat dilihat pada
perhitungan epsilon mesin Matlab.
% Program : epsilon.m
satu = inf;
eps = 1;
while satu > 1
eps = eps/2;
satu = 1 + eps;
end
eps = eps*2
epsilon
eps =
2.2204e-016
d. switch case otherwise
Perintah ini mengarahkan alur program melalui sejumlah pilihan. Perintah ini untuk
menggantikan perintah if elseif else yang bertumpuk.
Contoh :
% Program : pilihan.m
a = input('a = ');
switch a
case (0), disp('a nol')
case (1), disp('a satu')
otherwise
disp('a bukan nol atau satu');
end
pilihan
a=1
a satu
pilihan
a=0
a nol
pilihan
a = -3
a bukan nol atau satu
pilihan
a=4
a bukan nol atau satu