KATA PENGANTAR
Puji syukur penulis panjatkan atas kehadirat Allah SWT. yang telah memberikan
rahmat dan petunjuk-Nya, sehingga penulis dapat menyelesaikan modul ini dengan baik.
Modul ini disusun sebagai bahan pendamping perkuliahan Paket Komputasi semester 3,
Unmuh Ponorogo jurusan matematika.
Matematika selalu dihubungkan dengan alur pemikiran yang sistematis dan juga
logis. Kelebihan tersebut menjadikan mahasiswa matematika mempunyai keunggulan dalam
menyelesaikan masalah. Langkah-langkah yang diambil dalam menyelesaikan suatu
permasalahan setiap orang pasti berbeda. Hal ini tidak berpengaruh jika masalahnya
sederhana, akan tetapi jika kompleks tentunya akan menjadi masalah baru. Inilah pentingnya
menyusun langkah-langkah yang efisien.
Modul ini merupakan lanjutan dari modul C++ pada semester 2. Pada matkul
sebelumnya kita menggunakan C++ untuk menguji kebenaran dari algoritma yang telah
dibuat. Pada modul kali ini kita menggunakan Matlab untuk menguji algoritma. Selain itu
juga diberikan dasar-dasar penggunaan matlab smpai pada menggambar grafik serta
pemrograman M-File.
Penulis berharap dengan adanya modul ini dapat bermanfaat bagi mahasiswa
semuanya. Penulis menyadari bahwa modul ini masih banyak mengalami kekurangan. Untuk
itu penulis mengharapkan saran dan kritik yang membangun.
Penulis
ii
DAFTAR ISI
iii
BAB I
PENDAHULUAN
Penggunaan MATLAB dewasa ini sangat luas, tidak hanya di bidang pendidikan tinggi
tetapi sudah banyak digunakan pada bidang industri. Pada beberapa topik tertentu yang
banyak digunakan pada bidang sains dan teknologi telah diciptakan sejumlah toolbox pada
MATLAB, seperti signal processing, control systems, neural networks, fuzzy logic,
wavelets, simulation, finance dan banyak lagi yang lainnya.
1
fungsi untuk visualisasi data baik dua dimensi maupun tiga dimensi, pemrosesan
citra/gambar, animasi dan grafik presentasi. Pengaturan tampilan grafik dan juga
pembuatan GUI telah tersedia pada bagian ini.
Application Program Interface(API), yaitu fasilitas yang dapat digunakan untuk
menginteraksikan program yang ditulis dalam bahasa C, Fortran dan MATLAB. Ia
juga memuat fasilitas untuk pemanggilan routines dari MATLAB (dynamical
linking), pemanggilan MATLAB sebagai mesin hitung, dan untuk pembacaan dan
penulisan MAT-files.
1.2. Memulai dan Mengakhiri MATLAB
Untuk mengaktifkan MATLAB, cukup diklik dua kali icon shortcut MATLAB pada
desktop window atau melalui kelompok program pada MENU START. Sedangkan untuk
keluar dari MATLAB, pilih Exit MATLAB dari menu File pada desktop, atau ketik quit
pada CommandWindow.
Tampilan ini dapat diubah sesuai selera yaitu dengan cara membuka, menutup atau
memperbesar/memperkecil ukuran window yang tersedia.
2
• Help browser, Fungsi dari browser adalah untuk mencari dan melihat dokumen pada
MATLAB yang diperlukan untuk minta bantuan. Untuk mengaktifkan sarana ini klik
tombol tandatanya pada toolbar, atau ketik helpbrowser pada Command WIndow.
• Current Directory, Apapun file yang akan dijalankan haruslah terletak pada
direktori yang sedang aktif atau berada pada search path titik acuan. Untuk melihat,
membuka atau mengedit file-file MATLAB kita dapat menggunakan Current
Directory browser, atau dengan menggunakan perintah dir, cd, dan delete.
• Workspace Browser, Workspace Browser pada MATLAB terdiri dari kumpulan
variabel (nama array) yang didefinisikan ketika sedang menggunakan MATLAB dan
tersimpan di dalam memory. Untuk mengetahui variabel yang sedang aktif beserta
karakterisasinya kita dapat menggunakan Workspace Browser atau dengan mengetik
who atau whos pada Command Window. Ingat, variabel ini hanya aktif sementara
yaitu sepanjang belum keluar MATLAB. Bila kita sudah keluar MATLAB maka
semua variabel yang telah didefinisikan akan hilang. Bila variabel tersebut masih
akan digunakan lagi maka variabel tersebut dapat disimpan dengan memilih Save
Workspace As dari Menu File.
• Array Editor, Bila kita mengklik double variabel padaWorkspace Browser maka
akan muncul Array Editor. Editor ini dapat digunakan untuk mengedit data yang ada
pada array tersebut.
• Editor/Debugger, Editor/Debugger digunakan untuk membuat M-files dan
menjalankan proses debugging. Sesungguhnya M-file dapat dibuat pada text editor
apapun tetapi untuk proses debugging tetap harus menggunakan MATLAB
Editor/Debugger.
3
BAB 2
EKSPRESI MATEMATIKA PADA MATLAB
Pada dasarnya data numerik pada MATLAB berbentuk matriks. Pendefinisian matriks
akan diberikan pada bab selanjutnya. Untuk sementara pada bab ini kita hanya berurusan
dengan bilangan atau skalar.Secara garis besar, ekspresi matematika pada MATLAB terdiri
dari empat macam, yaitu :
1. Variabel
2. Bilangan
3. Operator
4. Fungsi
2.1. Variabel
Variabel MATLAB tidak membutuhkan deklarasi ataupun statemen dimensi. Penulisan
variabel dimulai dengan hurup, dapat diikuti dengan hurup atau angka atau underscore.
MATLAB hanya dapat mengenal 31 karakter pertama dari nama variabel. Contoh : bila
pada command windows diketik
>> Jumlah_nilai=270
Tekan enter, maka akan diperoleh :
Jumlah_nilai=
270
Di sini Jumlah_nilai adalah nama variabel yang disimpan pada workspace dengan nilai
270. Bila terdapat variabel baru dengan nama sama maka secara otomatis nilai variabel
lama akan terhapus dan berlaku nilai variabel baru. MATLAB sangat sensitif dalam
membaca variabel, ia membedakan antara hurup besar dan hurup kecil. Contoh : x dan X
adalah dua variabel yang berbeda. Pada satu baris kita dapat mendefinsikan lebih dari satu
variabel dengan cara memberikan tanda koma (,) diantara dua variabel. Sebagai contoh:
>>x =23, X=73
maka akan muncul
x=
23
X =
73
Semua variabel yang telah didefinisikan tersimpan di dalam workspace. Bila kita ingin
melihat kembali variabel apa saja yang telah tersimpan dapat dilihat pada workspace, atau
pada command window ketik who atau whos. Sebagai contoh bila diketik perintah whos
dan tekan enter maka diperoleh :
4
>> whos
Name Size Bytes Class
X 1x1 8 double array
Jumlah_nilai 1x1 8 double array
x 1x1 8 double
array Grand total is 3 elements using 24 bytes
Jadi kita telah mempunyai tiga variabel dengan nama X, Jumlah_nilai, dan x. Ketiga
varibel adalah skalar yaitu matriks dengan ukuran 1x1. Masing- masing variabel
membutuhkan 8 byte untuk ukuran file, jadi total space yang dibutuhkan adalah 24 byte.
Untuk mengetahui kembali nilai variabel tersebut cukup diketik nama variabelnya. Sebagai
contoh :
>> Jumlah_nilai
Jumlah_nilai =
270
Sebagaimana telah dijelaskan bahwa variabel-variabel yang telah didefinisikan tidaklah
permanen tersimpan pada workspace. Untuk menyimpan variabel digunakan perintah
>>save {nama file}
untuk menyimpan semua variabel dan
>>save {nama file} {nama variabel} {nama variabel}
untuk menyimpan variabel tertentu saja. Sebagai contoh
>> save fileku Jumlah_nilai
Jumlah_nilai =
25
akan menyimpan variabel Jumlah_nilai dalam fileku.mat. Untuk membersihkan command
window gunakan perintah
>>clc
sedangkan untuk menghilang semua variabel yang ada pada command window gunakan
perintah
>>clear
Jadi perintah
>>clear
>>clc
akan membersihkan command window dan menghapus semua variabel yang telah
tersimpan pada workspace. Dalam kasus ini semua variabel tidak bisa di panggil lagi,
kecuali variabel yang telah disimpan. Untuk memanggil kembali variabel yang tersimpan
dalam mat.file, gunakan perintah
>>load {nama file}
Contoh
>> load fileku
5
akan mengaktifkan kembali variabel Jumlah_nilai yang tersimpan di dalam file fileku.
Lambang Arti
Penjumlahan
Pengurangan
Perkalian
Pembagian Biasa
Pembagian Kiri
Pangkat
Kompleks Konjugat Atau Transpose Matriks
2.2. Bilangan
Bilangan pada MATLAB menggunakan notasi desimal biasa, menggunakan titik desimal,
tanda plus atau tanda minus. Notasi saintifik menggunakan hurup e untuk menyatakan
pangkat 10. Bilangan imaginer dinyatakan dengan hurup atau . contoh : Beberapa contoh
bilangan yang berlaku pada MATLAB:
Semua bilangan tersimpan secara internal dengan meng-gunakan format long yang
dispesifikasi oleh standar titik mengambang (floating-point) IEEE. Bilangan titik
mengambang mempunyai presisi kira-kira 16 digit desimal signifikan dan jangkauan antara
10−323 sampai dengan 10308.
2.3. Operator
Operator pada MATLAB dan artinya dapat dilihat sebagai berikut :
Beberapa contoh :
>>4+12
ans =
16
Angka 16 adalah hasil penjumlahan antara 4 dan 12. Di sini ans adalah variabel yang
diberikan oleh MATLAB karena tidak ada definisi variabel untuk 4+12 sebelumnya.
Terkadang kita hanya ingin melihat hasil akhir perhitungan tetapi tidak perlu menampilkan
nilai dari setiap variabel dengan alasan terlalu ramai. Untuk itu gunakan saja semicolon (;)
setelah nilai variabel yang tidak perlu ditampilkan.
>>x = 3 ; y = 6 ; z=2+5 i ;
>>x+y
ans =
9
>>x−y
ans =
−3
6
>>x y
ans =
18
>> x/y
ans =
0.5000
>> x\y
ans =
2
>> z’
ans =
2.000−5.000i
Satu catatan yang perlu diperhatikan berarti membagi atau dibagi oleh
7
fix Pembulatan menuju nol.
floor Pembulatan menuju
ceil Pembulatan menuju
round Pembulatan menuju bilangan bulat terdekat
mod modulo
rem sisa setelah pembagian
Table 2.5: Fungsi Pembulatan dan sisa
pi 3.14159265…
i satuan imajiner, yaitu √
j sama dengan i.
eps Presisi relatif, atau epsilon mesin , yaitu
realmin Bilangan titik mengambang terkecil, yaitu
realmax Bilangan titik mengambang terbesar, yaitu
Inf Takberhingga
NaN Not-a-Number
Table 2.6: Konstanta pada MATLAB
8
>> fix(x1),fix(x2)
ans =
−1
ans =
3
>> floor(x1), floor(x2)
ans =
−2
ans =
3
>> ceil(x1),ceil(x2)
ans =
−1
ans =
4
>> round(x1), round(x2)
ans =
−1
ans =
4
Selain fungsi-fungsi elementer di atas masih terdapat ratusan bahkan ribuan fungsi yang
sudah disediakan oleh MATLAB, baik dalam bentuk built-in maupun dalam bentuk m-file.
Secara khusus, MATLAB menyediakan fungsi khusus untuk membangkitkan konstanta
yang sering digunakan.
>>sin(pi/2)
ans =
1
>>atan (1)
ans =
0.7854
Diperhatikan output MATLAB tidak pernah menghasilkan lambang konstanta. Dalam
contoh terakhir, kita tahu bahwa ( ) tetapi MATLAB menulis dalam bentuk
desimal 0.7854 yang merupakan aproksimasi dari
Bilangan eps digunakan sebagai toleransi untuk beberapa fungsi MATLAB, seperti rank,
det,eig, dan lain-lain. Lambang Inf akan muncul bila kita membagi dengan nol
bilangan yang tak nol, atau hasil suatu kalkulasi melebihi realmax . Sedangkan NaN
menunjukan ekspresi yang tidak terdefinisi, seperti 0/0 atau Inf-Inf. Secara matematis,
ekspresi dengan juga tidak terdefinisi.
>> factorial(170)
ans =
7.2574e+306
>> factorial(171)
ans =
Inf
9
Di sini fungsi factorial berarti ( ) ( )( ) ( )( ). Dalam
contoh ini, MATLAB masih dapat menghitung 170! tetapi tidak mampu lagi menghitung
faktorial yang lebih besar, karena sudah melebihi bilangan realmax yaitu sekitar
a x = [4/7 1.2345e-5]
x=
0.5714 0.0000
>> format short
>> x
x =
0.5714 0.0000
>> format long
>> x
x =
0.571428571428571 0.000012345000000
>> format short e
>> x
5.7143e-001 1.2345e-005
>> format long e
>> x
0.5714285714285714e-001 0.0000123450000000e-005
>> format bank
10
>> x
x =
0.57 0.00
>> format hex
>> x
x =
3fe2492492492492 3ee9e3abe16fc70d
format r a t
>> x
x =
4/7 2/162009
Memasukan perintah panjang yang memerlukan lebih dari satu baris cukup
menggunakan titik tiga ( ). Ekspresi berikut :
>>ell=1−1/2+1/3−1/4+1/5−1/6+1/7 ...
−1/8+1/9−1/10+1/11−1/12;
berarti perintah pada baris pertama belum selesai masih dilanjutkan pada
baris kedua. Sekali lagi notasi (;) pada akhir suatu variabel
dimaksudkan agar hasil perhitungan tidak ditampilkan namun tetap
tersimpan pada workspace.
Latihan
1. Hitunglah
a.
b. . /
√ √
c. √ (√ √ )
d.
e.
f.
11
BAB 3
VEKTOR DAN MATRIKS
3.1. Vektor
Vektor merupakan array tunggal, baik berbentuk baris (horizontal) maupun kolom
(vertikal). Suatu vektor pada MATLAB didefinisikan dengan menempatkan barisan
bilangan di dalam kurung siku [].
>> v=[1 2]
ans =
1 2
>> v=[1 ; 2]
ans =
1
2
Contoh ini memberikan cara mendefinisikan vektor baris dan vektor kolom. Beberapa
operasi yang biasa dilakukan pada vektor, antara lain besar atau panjang vektor, hasil kali
silang antara dua vektor, hasil kali titik antara dua vektor, operasi aritmatika elemen per
elemen, elemen maksimum, elemen minimum. Misalkan ( ) dan
( ) maka beberapa fungsi yang sering digunakan diberikan pada tabel
berikut.
12
>> norm(a)
ans =
3.7417
>> dot(a,b)
ans =
3
>> 3 a
ans =
3 6 −9
>> a+b
ans =
3 4 −2
>> a. b
ans =
2 4 −3
>> a b
? ? ? Error using ==> mtime Inner matrix dimension must agree .
Perhatikan pada baris terakhir muncul pesan error karena MATLAB menganggap kedua
vektor a dan b adalah matriks. karena ukuran dimensi keduanya tidak mungkin dapat
dikalikan. Operasi antar komponen bersesuaian vektor a dan b diberikan lagi pada contoh
berikut.
>> a.^b
ans =
1 4 −3
>> a./b
ans =
0.5000 1.0000 -3.0000
>> q=[0.9501 0.2311 0.6068 0.4860 0.8913 0.7621 ...
0.4565 0.0185 0.8214 0.4447]
>> max(q)
ans =
0.9501
>> min(q)
ans =
0.0185
>> sum(q)
ans =
5.6686
>> prod(q)
ans =
1.3573e-004
>> prod(q)
ans =
0.00013573
13
>> sort(q)
ans =
Columns 1 through 5
0.018504 0.23114 0.4447 0.45647 0.48598
Columns 6 through 10
0.60684 0.7621 0.82141 0.8913 0.95013
Pada baris terakhir adalah perintah untuk mengurutkan secara menaik elemen-elemen
dalam vektor q.
• a1:a2 mendenisikan array mulai dari a1, a1+1, a1+2, ..., sampai dengan
bilangan terbesar sebelum a2.
• a1:s:a2 mendenisikan array mulai dari a1, a1+s, a1+2s, ... dan
seterusnya sampai dengan bilangan yang "paling dekat" dengan a2. Bila a1<a2 dan
s>0 diperoleh array naik. Sebaliknya, bila a1>a2 dan s<0 diperoleh array turun.
• linspace(a1,a2,n) mendenisikan array dengan cara membagi interval
[a1,a2] menjadi bagian yang sama panjang.
>> x=1:10
x =
1 2 3 4 5 6 7 8 9 10
>> yy=1:5:50
yy =
1 6 11 16 21 26 31 36 41 46
>> y=50:−5:1
y =
50 45 40 35 30 25 20 15 10 5
>> ab=1:0.5:4
ab =
Columns 1 through 7
1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000
>> dd=linspace(1,10,12)
ddd =
Columns 1 through 7
1.0000 1.8182 2.6364 3.4545 4.2727 5.0909 5.9091
Columns 8 through 10
6.7273 7.5455 8.3636 9.1818 10.0000
Coba dicermati perbedaan array yang didenisikan menggunakan operator kolon dan
menggunakan perintah linspace. Bila array yang dihasilkan ternyata tidak mencukupi bila
ditulis satu baris pada command window maka penulisan lebih dari satu baris akan muncul
seperti ab dan ddd di atas. Bila pendenisian array tidak sesuai dengan alur logika maka
akan dihasilkan array kosong.
14
Contoh :
>> ko=−5:−2:10
ko =
Empty matrix : 1 −by−0
Ini berarti tidak ada bilangan yang dapat dihasilkan oleh perintah ini. Logikanya, untuk
membuat array dari -5 menuju 10 (array naik) tidaklah mungkin dilakukan dengan
memasukan step -2 (untuk array turun).
3.3. Matriks
Matriks pada MATLAB berupa array bilangan yang berbentuk persegi panjang. Seperti
biasa ukuran matriks ditentukan oleh banyaknya baris dan kolom. Secara khusus, bilangan
atau skalar adalah matriks berukuran 1 ⇥ 1. Sedangkan vektor dipandang sebagai matriks
yang hanya mempunyai satu kolom atau satu baris. Jadi semua data numerik di dalam
MATLAB dipandang sebagai matriks. Sejumlah ekspresi matematika seperti variabel,
bilangan, operator dan fungsi digunakan dalam dalam bekerja dengan matriks atau array.
Terdapat beberapa cara mendefinisikan matrik dalam MATLAB, yaitu : kita dapat mema-
sukan matriks dalam MATLAB dalam beberapa cara :
[ ]
Caranya :
• Pada setiap baris, untuk memisahkan tiap-tiap elemen, gunakan spasi atau koma.
• Gunakan semicolon ; untuk mengakhiri tiap-tiap baris.
• Lingkupi semua elemen dengan kurung siku, [].
>> A=[16 3 2 13; 5 10 11 9; 9 6 7 12; 4 15 14 1]
A =
16 3 2 13
5 10 11 9
9 6 7 12
4 15 14 1
Diperhatikan dua ekspresi untuk mendenisikan vektor baris dan vektor kolom berikut :
15
>> b=[16 3 2 13]
b =
16 3 2 13
>> c=[16;3;2;13]
c =
16
3
2
13
>> c'
ans =
16 3 2 13
16
>> A(3,:)
ans =
9 6 7 12
>> A(1:3,2)
ans =
3
10
6
>> A(3,2:end)
ans =
6 7 12
Bila a suatu vektor tidak masalah baris ataupun kolom, maka ekspresi a(j), j = 1, 2, ..., end
menyatakan komponen ke j vektor a. Ekspresi a(k:l) adalah elemen vektor a dari
komponen k s.d. komponen l.
>> a =[2 34 −46 67 −5]
a =
2 34 −46 67 −5
>> a(3)
ans =
−46
>> a(2:4)
ans =
34 −46 67
17
Jadi jumlah bilangan pada semua baris A adalah
>> sum (A’)
ans =
34 34 34 34
Diagonal A diperoleh seperti berikut :
>> diag(A)
ans =
16
10
7
1
dan
>> sum(diag(A’))
ans =
34
memberikan jumlah bilangan pada diagonal.
MATLAB telah menyediakan fungsi untuk menghitung invers dan determinan suatu ma-
triks.
>> P=[1 2 4;4 6 5;2 2 5]
P =
1 2 4
4 6 5
2 2 5
>> inv(P)
ans =
−1.2500 0.1250 0.8750
0.6250 0.1875 −0.6875
0.2500 −0.1250 0.1250
>> det(P)
ans =
−16
18
• magic(n) mendenisikan matriks bujur sangkar ajaib ordo n.
Tiga matriks pertama di atas paling sering digunakan terutama ketika kita menyusun
program untuk numerik matematika.
>> Z=zeros(3,5)
Z =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
>> A=ones(1,5)
A =
1 1 1 1 1
>> V=3 ones(4,4)
V =
3 3 3 3
3 3 3 3
3 3 3 3
3 3 3 3
>> BR=rand(1,6)
BR =
0.61543 0.79194 0.92181 0.73821 0.17627 0.40571
>> R=rand(4,4)
R =
0.93547 0.057891 0.13889 0.27219
0.9169 0.35287 0.20277 0.19881
0.41027 0.81317 0.19872 0.015274
0.89365 0.0098613 0.60379 0.74679
>> m=magic(5)
m =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> sum(m)
ans =
65 65 65 65 65
>> sum(m')
ans =
65 65 65 65 65
>> sum(diag(m))
ans =
65
19
3.7. Memperbesar Matriks
Penggunaan kurung siku [ ] tidak hanya untuk mendenisikan matriks secara eksplisit tetapi
dapat pula digunakan untuk menggabungkan beberapa matriks berukuran kecil menjadi
matriks baru yang lebih besar.
>> B=[1;2;3]
B =
1
2
3
>> C=[0 0 0 0;1 1 1 1]
C =
0 0 0 0
1 1 1 1
>> D=[P B ; C]
D =
1 2 4 1
4 6 5 2
2 2 5 3
0 0 0 0
1 1 1 1
Matriks-matriks yang akan digabungkan haruslah kompatibel berdasarkan baris atau
kolom. Diperhatikan contoh berikut
>> E1=[1 2;3 4]
E1 =
1 2
3 4
>> E2=[3 3;4 4;5 5]
E2 =
3 3
4 4
5 5
>> G1=[E1 E2]
??? Error using ==> horzcat All matrices on a row in the bracketed
expression
>> G2=[E1; E2]
G2 =
1 2
3 4
3 3
4 4
5 5
Menghapus Baris dan Kolom Kita dapat menghapus beberapa baris atau beberapa kolom
suatu matriks dengan menggunakan array kosong [ ].
20
>> A=magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> X=A;
>> X(:,2)=[];
>> X
X =
16 3 13
5 10 8
9 6 12
4 15 1
>> Y=A;
>> Y(1,:)=[];
>> Y
Y =
5 11 10 8
9 7 6 12
4 14 15 1
Ekspresi X(:,2)=[ ] berarti membuang kolom 2 matriks X=A, sedangkan
Y(1,:)=[] berarti membuang baris 1 matriks X=A.
+ Penjumlahan. - Pengurangan.
* Perkalian Matriks. / Pembagian Matriks.
.* Perkalian elemen demi elemen.
./ Pembagian elemen demi elemen.
.^ Pangkat elemen demi elemen.
Sebagai ilustrasi, misalkan kita mempunyai matriks A, B dan vektor a, b yang didenisikan
sebagai berikut :
>> A=magic(3),B=A',a=[8 5 2],b=[4 5 6]
A =
8 1 6
3 5 7
4 9 2
B =
8 3 4
1 5 9
6 7 2
21
a =
8 5 2
b =
4 5 6
>> A+B
ans =
16 4 10
4 10 16
10 16 4
>> A*B
ans =
101 71 53
71 83 71
53 71 101
>> A.*B
ans =
64 3 24
3 25 63
24 63 4
Perintah A*B berarti perkalian antara matriks A dan matriks B. Sedangkan A.*B
menghasilkan perkalian elemen demi elemen matriks A dan matriks B. Dua matriks A dan
B dapat dikalikan bila banyaknya baris pada matriks A sama dengan banyaknya kolom
matriks B. Sedangkan perkalian per elemen A.*B hanya terdenisi bila ukuran kedua
matriks persis sama.
>> a-b
ans =
4 0 -4
>> a*b
??? Error using ==> mtimes
Inner matrix dimensions must agree.
>> a.*b
ans =
32 25 12
>> a./b
ans =
2.0000 1.0000 0.33333
Diperhatikan di sini operasi a*b tidak terdefinisi. Hal ini disebabkan operasi * digunakan
pada perkalian matriks, sedangkan di sini banyak baris vektor a yaitu 1 tidak sama dengan
banyak kolom vektor b yaitu 3.
>> 3+a
ans =
11 8 5
>> 5*b %setiap elemen b dikalikan dengan 5
22
ans =
20 25 30
Baru saja diperkenalkan notasi baru yaitu %. Perintah setelah tanda % tidak diproses oleh
MATLAB, biasanya hanya digunakan untuk memberikan keterangan atau komentar.
>> a*A
ans =
87 51 87
>> A-10 %setiap elemen matriks A dikurangi 10
ans =
-2 -9 -4
-7 -5 -3
-6 -1 -8
>> a(3)+b(2)+A(1,2)+B(3,2)
ans =
15
Ekspresi terakhir ini berarti elemen ketiga vektor a ditambah elemen kedua vektor b
ditambah elemen baris kesatu dan kolom kedua matriks A ditambah elemen baris ketiga
dan elemen kolom kedua matriks B.
Latihan
1. Buatah matriks tridiagonal berukuran 100 x 100 seperti matriks di bawah ini
[ ]
2. Diberikan matriks A:
[ ]
carilah :
a. A−1
b. A−1A
3. Selesaikan sistem persamaan linear berikut:
23
BAB 4
GRAFIK FUNGSI
0.8
0.6
0.4
0.2
0
y
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6
x
Penjelasan :
24
• Perintah xlabel dan ylabel digunakan untuk membuat label pada sumbu
koordinat.
• Perintah title digunakan untuk menuliskan judul grafik.
Secara umum, langkah-langkah dalam membuat grak fungsi dilakukan sebagai berikut :
1. Mempersiapkan data.
2. Memilih letak dan posisi gambar.
3. Memanggil perintah plot.
4. Memilih bentuk garis, warna dan tanda khusus.
5. Menetapkan batas-batas sumbu koordinat termasuk membuat grid bila diperlukan.
6. Melengkapi grafik dengan keterangan seperti judul grafik, label sumbu koordinat dan
legend.
7. Menyimpan atau mengekspor grafik
Ketujuh langkah tersebut tidak semuanya harus dilakukan, tergantung dari bagaimana
tampilan gambar yang diinginkan. Namun langkah 1 dan langkah 3 mutlak diperlukan.
Diperhatikan masukan berikut :
>> x =0:0.2:12;
>> y1=bessel(1,x);
>> y2=bessel(2,x);
>> y3=bessel(3,x);
>> subplot(3,1,1)
>> plot(x,y1,’r.−’)
>> title(’Grafik fungsi Bessel pertama’)
>> subplot(3,1,2)
>> plot(x,y2,’g ’)
>> title(’Grafik fungsi Bessel kedua’)
>> subplot(3,1,3)
>> plot(x,y3,’m’)
>> title(’Grafik fungsi Bessel ketiga’)
Hasilnya adalah sebagai berikut.
25
Perintah subplot(m,n,k) berarti MATLAB menyediakan posisi ke k dari m baris dan
n kolom tempat gambar yang tersedia. Cara penghitungan dimulai dari kiri-ke kanan-ke
bawah kiri - ke kanan - dst. Sebagai contoh, misalkan kita ingin membuat 6 buah grak yang
disusun dalam 3 baris dan 2 kolom. Kita gunakan perintah subplot(3,2,k), dan posisinya
dapat dilihat pada gambar berikut.
Bila ketiga grafik di atas mau diletakkan pada satu sumbu koordinat, perintah subplot tidak
diperlukan. Untuk itu cukup ditulis
>> plot(x,y1,x,y2,x,y3)
>> legend(’Bessel pertama ’,’ Bessel kedua ’,’ Bessel ketiga’ )
>> grid
>> title(’Grafik tiga buah fungsi Bessel’)
26
Secara sederhana, perintah plot mempunyai bentuk
>> plot(x,y,’pilihan’)
Pilihan di sini untuk memberikan warna, tanda (mark) dan jenis/ukuran garis. Untuk lebih
jelasnya dapat dilihat pada matlab dengan mengetikkan
>> Help Plot
Warna :
b biru
g hijau
r merah
c cyan
m magenta
y kuning
k hitam
Bentuk tanda (mark) :
. titik o lingkaran
x tanda silang x + tanda plus +
* tanda star * s tanda kotak
d diamond v segitiga (bawah)
^ segitiga (atas) < segitiga (kiri)
> segitiga (kanan) p pentagram
h heksagram
Jenis garis penghubung titik :
- garis padat (solid)
: garis titik-titik (dot)
-. garis putus dan titik
– garis putus-putus
Diperhatikan contoh berikut !
>> x=−6:0.2:6;
>> y=1/sqrt(pi) exp(−x.^2/2);
>> plot(x,y,’dr:’)
27
Pilihan ’dr:’ di dalam perintah >> plot(x,y,’dr:’) berarti titik-titik (x,y) ditandai
oleh diamond (d), warna merah r dan titik-titik tersebut dihubungkan oleh garis putus-
putus (:). Gambar yang terdapat pada jendela grafik akan hilang bila kita keluar dari
MATLAB. Bila gambar tersebut masih akan digunakan dikemudian hari maka kita perlu
menyimpannnya. Ada dua cara menyimpan grafik, yaitu dalam bentuk gambar MATLAB
yaitu dengan ekstensi g atau dieksport ke dalam bentuk lainnya seperti bmp, eps, jpeg dan
lain-lain. Untuk mudahnya, kita dapat menggunakan jendela grafik secara interaktif.
Untuk menyimpan dan mengeksport grafik kedalam bentuk eps, lakukan langkah-langkah
berikut :
1. Pada window grafik seperti tampak pada Gambar, klik File, kemudian pilih save atau
save as.
2. Pilih save as type yang diinginkan (dalam hal ini JPEG image dengan ekstensi jpg).
3. Berikan nama file yang akan disimpan. letakkan pada direktori yang di inginkan.
4. Bila pada langkah 2 kita memilih save maka grafik akan tersimpan dalam bentuk file
figure dengan ekstensi fig. Gambar ini daoat diperoleh kembali bila kita kembali
membuka MATLAB yaitu dengan mengklik double file yang bersangkutan.
5. Gambar tersebut dapat pula dipindah langsung pada program lainnya, seperti MS
word, corel, dan lain-lain dengan menggunakan teknik Copy-paste.
28
1. plot3
2. mesh, meshc
3. surf, surfc
4. contour
Untuk menjelaskan fungsi-fungsi tersebut, diperhatikan beberapa contoh berikut.
perintah plot3(x,y,z), bila x, y and z are tiga vector dengan panjang sama
menggambar lintasan garis dalam ruang 3-d yang melalui koordinat-koordinat x, y dan z.
Sedangkan plot3(X,Y,Z), bila X, Y dan Z adalah tiga matriks berukuran sama adalah
memplot be-berapa lintasan garis yang masing-masing melalui kolom-kolom matriks X, Y
dan Z.
29
Y =
10 10 10
12 12 12
14 14 14
Jadi perintah [X,Y]=meshgrid(x,y) menghasilkan dua matriks X yang baris-
barisnya adalah array x, dan matriks Y yang kolom-kolomnya adalah array y. Jadi
pasangan (X,Y) memuat semua pasangan nilai pada array x dan array y yang mungkin.
Perintah ini biasa digunakan untuk mengevaluasi fungsi multivariabel pada sejumlah titik
yang diambil pada domainnya.
pada kotak *( ) +
>> x=−1:0.05:1;
>> y=x;
>> [X,Y]=meshgrid(x,y);
>> Z=Y.^2−X.^2;
>> mesh(X,Y,Z)
>> title(’Grafik fungsi z = x^2−y^2’);
Perintah surf hampir sama seperti mesh tetapi di sini warna kurva lebih padat, seperti
terlihat pada Gambar berikut.
30
Figure 4.2.3: Contoh 2 menggunakan perintah surf
Contour kurva yang disebut juga level kurva adalah proyeksi kurva ( ) pada
sumbu yang mempunyai nilai fungsi yang sama, yaitu
* ( ) ( ) +
Bila kita ingin menampilkan level kurva secara lengkap, lakukan perintah berikut.
>> [c,h]=contourf(X,Y,Z,’k−’);
>> clabel(c,h)
31
Figure 4.2.5: Contoh 2 menggunakan perintah meshc
Masih banyak sekali fungsi-fungsi menarik yang berkaitan dengan grak dimensi tiga ini,
se-hingga tidak mungkin terangkum semuanya pada tutorial singkat ini. Untuk lebih
lengkap-nya, silahkan lihat pada MATLAB help dengan mengetik
>> help graph3d
Selain dari kemampuan untuk menghasilkan grafik tiga dimensi, MATLAB juga mampu
membaca citra baik gray-scale maupun full-color dengan menggunakan fungsi image dan
sejenisnya.
>> load durer
>> whos
Name Size Bytes Class
X 648x509 2638656 double array
Caption 2x28 112 char array
Map 128x3 3072 double array
Grand total is 330272 elements using 2641840 bytes
>>Image(X); colormap(map)
Keluarannya ditunjukan sebagai berikut :
32
Di sini file durer sudah tersimpan di dalam MATLAB. Variabel X berupa matriks persegi
panjang yang merep resentasikan itensitas keabuan (gray-scale) suatu citra. Masih ada lagi
fasilitas pada MATLAB untuk keperluan visualisasi yaitu untuk animasi. Fungsi yang
sering digunakan untuk animasi ini adalah movie atau menggunakan Erase- Mode. Bila
tertarik, lihat help navigator pada MATLAB.
Latihan
33
BAB 5
PEMROGRAMAN DENGAN MATLAB
Sebagaimana telah dijelaskan pada awal modul ini, MATLAB adalah program komputer
untuk melakukan komputasi numerik yang basis datanya berupa matriks. Untuk penggunaan
lebih luas, kita harus menulis bahasa dan kode khusus yang dapat dieksekusi oleh MATLAB.
Bahasa dan kode MATLAB ini ditulis pada jendela editor/debugger.
5.1. m-file
Bahasa pemrograman MATLAB yang ditulis pada jendela editor/debugger disebut m-file.
Ada tiga macam m-file yaitu :
1. script file, yaitu m-file yang tidak memerlukan variabel masukan dan variabel
keluaran. Program ini dapat dijalankan dari command window dengan cara mengetik
nama filenya.
2. input file, yaitu m-file yang variabel keluarannya didefinisikan langsung di dalam
file, sedangkan variabel masukkannya dimasukkan secara interaktif pada command
window.
3. function file, yaitu m-file yang terdiri dari variabel masukan dan variabel keluaran.
Bentuk umum function file adalah
function [out1,out2,....]=nama_fungsi(in1,in2,...)
1. Buka jendela editor/debugger dengan cara, pada desktop MATLAB klik File - pilih
New - klik M-le.
2. Tulis bahasa dan kode MATLAB yang telah dipersiapkan.
3. Simpan le dengan cara, pada jendela editor/debugger : klik File- pilih Save As - (beri
nama file) - klik Save.
4. Kembali ke command window, dan jalankan program dengan cara seperti yang telah
disampaikan di atas.
Contoh script file : Tulis kalimat berikut pada jendela editor/debugger:
x=pi/100:pi/100:10 pi;
y=sin(x)./x;
plot(x,y)
grid
Setelah selesai, simpan file ini dengan nama file1. Kemudian untuk memanggilnya pada
command window, diketik
>> file1
maka akan dihasilkan:
34
Figure 5.1.1: Keluaran script-file
Contoh function file : Misalkan kita ingin membuat suatu program untuk menghitung rata-
rata, standar deviasi, nilai maksimum dan nilai minimum untuk suatu data yang disajikan
dalam array x. Jadi dalam hal ini kita mempunyai :
function[mean,stdev,terkecil,terbesar]=stat(x)
n=length(x);mean=sum(x)/n;
stdev=sqrt(sum((x−mean).^2)/n);
terkecil=min(x);
terbesar=max(x);
Setelah file disimpan, katakan namanya stat.m maka kita dapat menjalankan program ini
untuk data x yang diberikan sebagai variabel masukan. Misalnya,
>> x=rand(1,6)
x =
0.4451 0.93181 0.46599 0.41865 0.84622 0.52515
>> [mean,stdev,terkecil,terbesar]=stat(x)
mean =
0.60549
stdev =
0.20453
terkecil =
0.41865
terbesar =
0.93181
Data x = rand(1,6) adalah bilangan random berukuran 1x6 yang dibangkitkan
dengan menggunakan fungsi MATLAB rand.
Contoh input file : Kita ingin menghitung akar-akar persamaan kuadrat dengan rumus abc.
35
%program untuk menghitung akar−akar persamaan kuadrat
%dengan rumus abc
a=input(‘masukkan nilai a= ’)
b=input(‘masukkan nilai b= ’)
c=input(‘masukkan nilai c= ’)
akar1=(−b+sqrt(b^2−4 a c))/(2 a);
akar2=(−b−sqrt(b^2−4 a c))/(2 a);
akarnya=[akar1;akar2]
Kemudian file disimpan dengan nama abc.m. Misalkan kita akan menghitung akar-akar
persamaan :
Dalam hal ini kita harus memberikan nilai a, b dan c yang bersesuaian setiap kali
MATLAB memintanya. Coba lakukan prosedur berikut.
>> abc
Masukkan nilai a= 1
a=
1
Masukkan nilai b= 7
b=
7
Masukkan nilai c= 4
c=
4
akarnya =
−0.6277
−6.3723
36
4. while
5. continue
6. break
if ekspresi logika1
sekelompok statemen dieksekusi
elseif ekspresi logika2
sekelompok statemen lainnya dieksekusi
dan seterusnya
else (ekspresi logika terakhir)
sekelompok statemen terakhir dieksekusi
end
Contoh penggunaan if : Misalkan kita akan membuat suatu klasikasi skor angka pada
range [0; 10] menjadi tiga kategori kurang, cukup dan baik. Bila nilai yang dimasukkan di
luar range tersebut akan diberi peringatan SALAH DATA.
x=input(’masukkan nilai x: ‘)
if x<=5 & x>=0
disp(’KURANG’)
elseif x>=5 & x<6.5
disp(‘CUKUP’)
elseif x>=6.5 & x<=10
disp(’BAIK’)
else
disp(’SALAH DATA, nilai x harus di dalam [0,10]’)
end
Perintah disp(’string’) digunakan untuk menampilkan kata string. Sekarang kita sim-pan
m-file ini dengan nama konversi.m. Selanjutnya, pada command window kita lakukan :
>> konversi
Masukkan nilai x: 2
KURANG
>> konversi
Masukkan nilai x: 5.7
CUKUP
>> konversi
Masukkan nilai x: 8.9
BAIK
>> konversi
Masukkan nilai x: 11
37
SALAH DATA, nilai x harus di dalam [0,10]
38
Perhatikan :
apa yang terjadi bila dimasukkan angka selain 1, 2, atau 3. Sesungguhnya, kendali alur
switch-case-otherwise-end mempunyai kemiripan dengan if-elseif-
else-end. Tetapi alur switch hanya bisa mengevaluasi kesamaan, sedangkan if bisa
untuk kesamaan maupun ketidaksamaan. Di lain pihak, switch dapat membandingkan
string dengan panjang berbeda, sedangkan if masih membutuhkan perintah strcmp untuk
untuk membandingkan string dengan panjang berbeda. File kasus.m di atas dapat pula
ditulis dengan menggunakan if sebagai berikut.
choice=input(’masukkan nilai 1, atau 2 atau 3: ’)
x=−pi:0.01:pi;
if choice == 1
plot(x,sin(x));
elseif choice == 2
plot(x,cos(x));
elseif choice == 3
plot(x,sin(x),x,cos(x));
else
disp(’SALAH MASUKAN’)
end
Tetapi alur switch tidak bisa digunakan untuk kasus dalam contoh pemakaian if
sebelumnya.
Contoh pemakaian for-end : Misalkan kita ingin membangun matriks Hilbert berukuran
dengan elemen ke ( ) nya didenisikan oleh :
function H=hilb(m,n)
for i=1:n
for j=1:m
H(i,j)=1/(i+j);
end
end
39
Contoh pemakaian gabungan for dan if Misalkan kita akan mendenisikan fungsi berikut
dan menggambar grafiknya.
( )
( ) {
kita gambarkan juga grafik fungsi dan pada bidang koordinat yang
sama.
function y=osilasi(x);
for i=1:length(x);
if x(i)~=0
y(i)=x(i) sin(1/x(i));
else
y(i)=0;
end
end
plot(x,y);
hold on
%tambahan
y1=x; y2=−x;
plot(x,y1,’k:’,x,y2,’k:’)
grid
hold off
Di sini variabel masukan berupa array x, sedangkan keluarannya berupa array y yang
didefinisikan secara berurutan (pengulangan) oleh ’for’ dan bersyarat oleh ’if’. Perintah
length(x) suatu bilangan bulat positip yang merupakan panjang vektor x. Perintah hold
on meminta MATLAB untuk tetap mengaktifkan jendela grafik, artinya apapun grafik
yang dibuat tetap digambarkan pada bidang yang sama sampai muncul perintah hold
off. Bila pada command window dilakukan :
>> x=−1/pi:0.0001:1/pi;
>> y=osilasi(x);
maka akan menghasilkan Gambar
40
5.2.4. while - end
Kontrol alur while melakukan pengulangan serangkaian statemen terus menerus di bawah
kondisi logika tertentu. Bila kondisi ini belum terpenuhi maka proses eksekusi terus
dijalankan. Jadi terdapat kemungkinan pengulangan (iterasi) sampai tak berhingga
(divergen).
Contoh penggunaan while : Misalkan kita akan membagi dengan dua bilangan , hasilnya
kita bagi lagi dengan dua, dan seterusnya sampai diperoleh hasil bagi kurang dari 0.0013.
Kemudian kita juga ingin mengetahui berapa banyak pengulangan yang dilakukan untuk
mencapai bilangan ini. Untuk mengerjakan ini, langsung saja dikerjakan pada command
window sebagai berikut :
>> q=pi;
>> it=0;
>> while q>=0.0013;
q=q/2;it=it+1;end
>> q
q =
7.669903939428206e−004
>> it
it =
12
Jadi adalah bilangan pertama yang lebih kecil dari
0.0013 yang diperoleh dengan proses di atas. Untuk mencapai hasil ini diperlukan 12 kali
iterasi (pengulangan).
Contoh penggunaan while - if : Misalkan kita ingin menghitung secara pendekatan akar
dari persamaan
yang berada pada suatu suatu interval [0, 3]. Metoda yang akan digunakan adalah metoda
biseksi, yaitu dengan cara membagi dua interval terus menerus sampai ditemukan akar.
Program berikut dilengkapi juga informasi jumlah iterasi yang diperlukan untuk mencapai
pendekatan akar tersebut.
function [akar,iterasi]=bisec(tol)
%m-file untuk menghitung akar persamaan x^3−2x−5 pada
%interval [0,3] dengan menggunakan toleransi tol.
a=0;b=3; fa=−5; it=0;
while b−a>tol
x=(a+b)/2;
fx=x^3−2 x−5;
if sign(fx)==sign(fa)% untuk mengetahui posisi akar
a=x; fa=fx;
else
b = x ;
end
it=it+1;
end
41
akar = x ;
iterasi=it;
Latihan
1. Buat function file untuk menghitung kar-akar persamaan kuadrat dengan rumus abc,
yang didefinisikan sebagai berikut :
√ √
dan
kemudian hitung akar-akar persamaan :
.
2. Buat function file untuk menghitung nilai a dan b pada fungsi regresi linear berikut :
dimana:
(∑ )(∑ ) (∑ )(∑ )
∑ (∑ )
∑ (∑ )(∑ )
∑ (∑ )
42