Anda di halaman 1dari 245

Supardi, M.

Si

BAB 1

Pendahuluan

Matlab merupakan sebuah singkatan dari Matrix Laboratory, yang

pertama kali dikenalkan oleh University of New Mexico dan University of

Stanford pada tahun 1970. software ini pertama kali memang digunakan

untuk keperluan analisis numerik, aljabar linier dan teori tentang matriks.

Saat ini, kemampuan dan fitur yang dimiliki oleh Matlab sudah jauh lebih

lengkap dengan ditambahkannya toolbox-toolbox yang sangat luar biasa.

Beberapa manfaat yang didapatkan dari Matlab antara lain:

 Perhitungan Matematika

 Komputasi numerik

 Simulasi dan pemodelan

 Visualisasi dan analisis data

 Pembuatan grafik untuk keperluan sains dan teknik

 Pengembangan aplikasi, misalnya dengan memanfaatkan GUI.

Matlab dapat dipadang sebagai sebuah kalkulator dengan fitur yang

lengkap. Kita pernah menggunakan kalkulator dengan degan fasilitas

minimal, misalnya hanya terdapat fasilitas penambahan, pengurangan

perkalian dan pembagian. Kalkulator yang lebih lengkap lagi adalah

kalkulator scientific dimana fasilitas yang diberikan tidak hanya yang

disebutkan di atas, melainkan sudah ada fungsi-fungsi trigonometri,

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 1


Supardi, M.Si

bilangan kompleks, akar kuadrat dan logaritma. Nah, Matlab mirip dengan

kalkulator tersebut, tetapi dengan fitur-fitur yang lengkap diantaranya

dapat digunakan untuk memprogram, aplikasi berbasis GUI dan lengkap

dengan toolbox yang dapat dimanfaatkan untuk memecahkan masalah

sains dan teknik.

Dokumentasi Matlab
Matlab memberikan kemudahan bagi para pengguna untuk

menemukan bantuan sehubungan dengan semua fasilitas yang diberikan

oleh Matlab. Misalnya, bantuan tentang bagaimana memulai Matlab

pertama kali, trik pemrograman, membuat grafik 2 dan 3 dimensi,

menggunakan tool akuisisi data, pengolahan sinyal, penyelesaian

persamaan diferensial parsial.

Untuk memperoleh bantuan tersebut, kita dapat memilih MATLAB

Menu dari menu Help. Untuk bantuan tentang Matlab sendiri, dibagi atas

beberapa bagian antara lain

 Development Environment, bagian ini akan memberikan informasi

yang lengkap mengenai desktop dari Matlab.

 Mathematics, bagian yang menjelaskan bagaimana menggunakan

fitur yang dimiliki oleh Matlab untuk dalam mengolah data

matematis dan statistik. Isi dalam bantuan ini dicakup antara lain:

Matrks dan aljabar linier, polinomial dan interpolasi, analisis data

dan statistik, fungsi function, matriks jarang (sparse matrix).

 Programming and data type, bagian ini menjelaskan bagaimana

membuat script dan fungsi dengan menggunakan Matlab. Bantuan

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 2


Supardi, M.Si

ini mencakup pemrograman M-File, larik, larik multidimensi,

optimalisai performance Matlab, tip pemrograman Matlab.

 Graphics, bagian ini menjelaskan tentang bagaimana membuat atau

mengeplot grafik dari data yang kita miliki. Yang termasuk dalam

bagian ini antara lain, dasar-dasar pengeplotan, format grafik,

membuat grafik khusus misalnya grafik dalam bentuk bar,

histogram, contour dan lain-lain

 3-D Visualization, bagian ini menjelaskan dengan tuntas bagaimana

menampilkan data yang kita miliki dalam grafik 3 dimensi, termasuk

didalamnya membuat grafik 3D, menentukan tampilan objek,

transparansi objek, lighting dan lain-lain.

 Creating Graphical User Interfaces, bagian ini menjelaskan

bagaimana kita dapat membuat GUI (Graphical User Interface)

berbasis Matlab.

Disamping bagian-bagian yang sudah disebutkan di atas, disini juga

disertakan beberapa bagian tambahan yang ikut melengkapi dokumentasi

penjelasan tentang Matlab, diantaranya function-By cattegory, function-

Alphabetical List, handle graphic property browser, external interfaces/API,

external interfaces/API references dan lain-lain. Dibawah ini diperlihatkan

bagian online-help yan dapat diakses dengan cara pilih Menu -> MATLAB

Help -> Matlab.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 3


Supardi, M.Si

Gambar 1.1 . Daftar bantuan yang disediakan Matlab

Desktop Matlab
Ketika kita pertama kali menjalankan Matlab, maka tampilan

pertama yang kita temui ini dikenal sebagai Desktop Matlab. Dalam

desktop ini terdapat tool-tool yang berfungsi untuk manajemen file,

variabel dan aplikasi yang berkaitan dengan Matlab. Dibawah ini

ditunjukkan desktop Matlab versi 6.5.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 4


Supardi, M.Si

7
5 3
6 4 1
2

10 8
11 9

Gambar 2. Tool yang disertakan pada Matlab 6.5

Keterangan

1. tool untuk browse direktori aktif. Dari tool ini kita dapat mengeset

direktori mana yang aktif. Direktori aktif berarti bahwa direktori

inilah yang siap untuk diakses file didalamnya atau tempat yang siap

untuk digunakan sebagai penyimpan data.

2. Tool yang menampilkan direktori aktif. Dari tool ini kita dapat

melihat direktori mana yang aktif. Sebagai default direktori aktif

Matlab adalah C:\MATLAB6p5\work, jika Matlab diinstal di

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 5


Supardi, M.Si

direktori C:\ , kalau disimpan di D:\ maka direktori aktif defaultnya

D:\MATLAB6p5\work, begitu juga di E:\ atau dimana saja.

3. Jendela ini disebut disebut sebagai Command Window. Dari jendela

ini kita dapat memasukkan perintah Matlab. Disamping itu kita juga

dapat menjalankan atau mengeksekusi program yang sudah kita

buat di editor window dan disimpan di direktori aktif.

4. Tool yang digunakan untuk mendisplay bantuan pada Matlab.

5. Tool yang dapat digunakan untuk menuju ke Simulink Library

Browser.

6. Tool untuk membuka file yang ada di direktori aktiv.

7. Tool untuk membuat file baru dengan format M-File.

8. Tool untuk mengatur ukuran jendela.

9. Tool untuk melihat perintah apa saja yang pernah kita jalankan

melalui command window. Tool ini diberi nama command history.

10. Tool untuk mendisplay isi file apa saja yang terdapat di direktori

aktif.

11. Tool untuk mendisplay nama variabel, ukuran, bytes dan classnya.

Tool-tool yang sudah disebutkan di atas dapat diatur

kemunculannya melalui menu View. Misalnya, kita tidak menginginkan

tampilnya jendela command history, maka kita kita harus menghilangkan

tanda cek yang ada pada submenu command hstory. Lihat gambar 3.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 6


Supardi, M.Si

Gambar 3. Menonaktifkan jendela command history

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 7


Supardi, M.Si

BAB 2

Dasar-Dasar Matlab

5.1) Memulai Matlab


Ketika kita pertama kali menjalankan Matlab, maka yang tampil

adalah Desktop Matlab seperti yang telah disinggung di atas. Diantara

jendela yang yang ada pada desktop Matlab adalah command window. Di

jendela inilah segala macam aktivitas berkaitan dengan perintah maupun

eksekusi program berada. Perintah atau eksekusi program dapat dilakukan

setelah prompt atau tanda “ >> “. Sebagai contoh

>> x=6;
>> y=7;
>> z=x*y
z=
42

5.2) Cara Program Matlab Bekerja


Sekarang kita akan menjelaskan bagaimana program komputer yang

ditulis dalam Matlab bekerja. Perlu diketahui bahwa Matlab secara teknis

disebut sebagai interpreter. Bandingkan dengan bahasa pemrograman tinggi

seperti Pascal, Fortran, C atau lainnya.

Sebagai interpreter, Matlab akan menterjemahkan pada setiap baris

perintah tanpa perlu mengkompile terlebih dahulu. Setelah dilakukan

penterjemahan setiap baris perintah, maka Matlab segera akan

menjalankannya dan hasilnya akan dapat kita lihat.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 8


Supardi, M.Si

Konsep dasar Matlab adalah menyimpan angka-angka di dalam

memori komputer (RAM). Apabila Matlab memerlukan penyimpanan

terhadap suatu angka tertentu, maka suatu ruangan telah diset untuk

menempatkan angka tersebut. Memori komputer dapat dibayangkan

sebagai bank kotak-kotak yang mana didalam kotak tersebut tersimpan

angka-angka yang sewaktu-waktu dapat diambil atau dipanggil. Kotak-

kotak yang berada dalam bank tersebut diberi nama simbolik tertentu.

Sebagai contoh tuliskan dalam command window seperti di bawah ini

>> gaya=80

Pernyataan di atas berarti bahwa Matlab menyimpan nilai 80 ke

dalam lokasi memori (kotak) bernama gaya. Nilai 80 ini dapat diubah

menjadi harga berapapun. Nama lokasi memori atau kotak dimana suatu

harga tersimpan di dalamnya disebut variabel.

Dibawah ini dituliskan program komputer sederhana sebagai

berikut:

gaya=10;
luas_permukaan=2;
tekanan=gaya*luas_permukaan;
disp(tekanan);

Program yang telah kita tuliskan di atas diterjemahkan oleh Matlab

sebagai berikut:

a) Letakkan (simpan) nilai 10 pada variabel bernama gaya dan harga

variabel tersebut tidak ditampilkan (dalam command window).

b) Letakkan nilai 2 pada variabel bernama luas_permukaan dan harga

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 9


Supardi, M.Si

variabel tidak ditampilkan.

c) Lakukan operasi perkalian antara variabel gaya dan luas_permukaan

dan harganya disimpan di dalam variabel tekanan.

d) Tampilkan isi dari variabel tekanan (dengan perintah disp).

5.3) Bantuan Matlab


Kadang-kadang, pada saat membuat program komputer kita lupa

akan satu perintah atau belum tahu deskripsi atau pengguanaan dari

perintah tersebut. Nah, disamping kita dapat meminta bantuan lewat tool

bantuan (Help), kita dapat pula meminta bantuan lewat command window,

caranya ketik help perintah_yang dimaksud. Misalnya, kita ingin tahu

bagaimana deskripsi dan cara menggunakan fungsi ode45. Caranya cukup

dengan mengetik

>> help ode45

Gambar 2.1. Mencari bantuan tentang ode45

Pada level dasar Matlab dapat dipandang sebagai sebuah kalkuklator

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 10


Supardi, M.Si

hitung yang canggih. Contoh

>> Nesya = 8*100;

>>NEsya= Nesya/5;

>> NESYA=exp(NEsya*3)

>> clc;

>> pwd;

>> who

>> whos

Pada contoh diatas, variabel Nesya, NEsya, NESYA dipandang

sebagai variabel berbeda. Variabel Nesya tidak sama dengan NEsya tidak

sama pula dengan variabel NESYA. Ini berarti bahwa antara huruf besar

dengan huruf kecil dibedakan. Oleh sebab itu, Matlab adalah case sensitive.

Gambar 2.2 Gambar grafik yang diaktifkan melalui perintah funtool

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 11


Supardi, M.Si

Gambar 2.2 ditampilkan grafik fungsi yang dapat diangani oleh

Matlab dengan perintah funtool. Dengan mengubah-ubah bentuk fungsi f

maupun g, konstanta a serta domain yang dinginkan, maka Matlab dapat

menampilkannya dalam bentuk grafik. Selanjutnya, kita juga dapat

melakukan fitting data dengan tool yang disediakan oleh Matlab. Sebagai

ilustrasi, sekarang ketiklah perintah di command window sebagai berikut

>> load census

>> cftool

Setelah anda tulis perintah seperti di atas maka akan muncul gambar

seperti terlihat pada gambar 2.3 sebagai berikut.

Gambar 2.4. Gambaran curva fitting dari cftool

Matlab juga menyediakan tool untuk memecahkan persamaan

diferensial parsial dengan pdetool. Untuk memberikan gambaran tentang

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 12


Supardi, M.Si

pdetool ini, maka ketiklah perintah di command window

>> pdetool

Gambar 2.6. pde tool untuk memecahkan masalah persamaan diferensial parsial.

Disamping beberapa tool yang sudah diberikan ilustrasi di atas,

Matlab masih banyak menyediakan tool-tool lain yang sangat berguna

untuk menyelesaikan masalah sains dan teknik.

5.4) Operator Dasar Aritmatika


Operator dasar aritmatika antara lain adalah penjumlahan (+),

pengurangan (-), perkalian (*), pembagian (/) dan pangkat (^). Simbol ^

digunakan untuk menyatakan pangkat, misalnya

>> a=10
a=
10

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 13


Supardi, M.Si

>> a^2
ans =
100
>> a^3
ans =
1000
>> 1+2*4/3

ans =
3.6667
>> 1+2/4*3
ans =
2.5000

Tetapi, coba kita lihat contoh ke-4 dan ke-5, yaitu bagaimana urutan

operasi pada angka-angka tersebut. Untuk bentuk yang lebih jelas operasi

1+2*4/3 dapat dituliskan sebagai

1+((2*4)/3) = 1+8/3

= 1+ 2.667

= 3.667

Sedangkan operasi 1+2/4*3 dapat dituliskan sebagai

1+2/4*3 = 1+(2/4)*3

= 1 + 0.5 *3

= 2.5000

Jadi, dalam mengeksekusi sebuah operasi matematika, Matlab mengikuti

aturan-aturan sebagai berikut:

 Matlab memprioritaskan operasi yang berada di dalam kurung

 Operasi yang melibatkan operator * dan / (dapat * / atau / *) bekerja

dari kiri ke kanan.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 14


Supardi, M.Si

 Operasi matematika yang melibatkan operator + dan – (dapat + - atau

- +) juga bekerja dari kiri ke kanan.

Contoh

Lakukan evaluasi terhadap pernyataan Matlab berikut ini dengan

perhitungan manual terlebih dahulu dan setelah itu dicek dengan Matlab

a) 1/3/2/4/5

b) 2*3/4+5

c) 2-3*4/6

d) (3-4*2)/4-6/2

e) 3-4/(2+3*5)

5.5) Cara membuat variable


Matlab tidak memerlukan deklarasi variabel atau pernyataan

dimensi pada setiap variabel yang akan digunakan dalam sebuah program

komputer. Variabel dalam Matlab secara otomatis akan dibuat dan

disimpan setiap kali Matlab menemukan nama variabel baru. Disamping

itu, hal yang sangat penting untuk diingat bahwa variabel Matlab bersifat

case sensitif, artinya antara huruf besar dengan huruf kecil dibedakan.

Dibawah ini diberikan beberapa aturan penulisan variabel dalam Matlab,

1. Variable tidak boleh diawali dengan angka, misalnya 2abc, 45y, 3ok43

2. Variabel dapat merupakan kombinasi antara huruf dan angka,

misalnya ok45, ok45ok, abc432 dsb

3. Variabel tidak boleh menggunakan karakter khusus Matlab,

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 15


Supardi, M.Si

misalnya %, #, - , +, = , dsb. Misalnya %ok, net-cost, %x, @sign dsb.

4. Hindari memberikan nama variabel dengan nama-nama khusus

yang ada di Matlab, misalnya hindari memberikan nama variabel

dengan nama pi, eps, i, j. Karena pi=22/7, eps= 2 − 54 , i dan j memiliki

harga − 1.
5. Disarankan pembuatan variabel singkat tetapi penuh makna

(informatif). Hal ini untuk menghindari kesalahan penulisan variabel

yang berulang-ulang.

5.6) Format penulisan angka


Di dalam Matlab dikenal beberapa format penulisan angka yang

kelak akan sangat berguna. Format penulisan angka dapat diatur melalui

desktop Matlab, caranya pilih menu File > Preferences > Command

Window , kemudian pilih format yang diinginkan.

Gambar 2.7. Mencari bantuan tentang ode45


Secara default, format penulisan angka di Matlab adalah format

short seperti yang dapat dilihat pada gambar 2.7. Untuk mengubah ke

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 16


Supardi, M.Si

bentuk format penulisan angka yang lain dapat dilakukan dengan

menuliskan perintah

>> format format_numerik_yang_diinginkan

misalnya

>> format long

Tabel 1 diberikan contoh perintah untuk mengubah format penulisan

angka yang diinginkan. Ada 8 (delapan) format penulisan angka yang

dikenal dalam Matlab ditambah dengan beberapa perintah untuk

mengubah bentuk real menjadi integer.

Tabel 2.1 Format penulisan angka.

No perintah Contoh keluaran


1 >> format short 3.1429 ( 4 angka di belakang
koma)
2 >> format long 3.14285714285714
3 >> format short e 3.1429e+000
4 >> format long e 3.142857142857143e+000
5 >> format rational 22/7
6 >> format short g 3.14286
7 >> format long g 3.14285714285714
8 >> format bank 3.14

5.7) Perintah Pembulatan Angka


Beberapa perintah Matlab untuk membulatkan angka antara lain

 ceil(x) : perintah untuk membulatkan angka ke bil integer di atasnya

(arah tak berhingga)

 floor(x): perintah untuk membulatkan angka ke bil integer di

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 17


Supardi, M.Si

bawahnya (arah minus tak berhingga)

 fix(x) : perintah untuk membulatkan angka ke bil integer ke atas

atau ke bawah menuju arah nol

 round(x): perintah untuk membulatkan angka ke bil integer ke arah

lebih dekat.

 rem(x,y): sisa yang ditinggalkan setelah operasi pembagian dengan

definisi x-n*y dimana n=fix(x./y). Hasil dari perintah rem(x,y)

bertanda sama dengan x.

 mod(x,y): sisa yang ditinggalkan setelah operasi pembagian dengan

definisi x-n*y dimana n=floor(x./y). Hasil dari perintah mod(x,y)

sama tandanya dengan y. Harga dari mod(x,y) akan bernilai sama

dengan rem(x,y) jika x dan y bertanda sama dan akan berharga beda

jika x dan y bertanda beda.

 abs(x): harga mutlak dari x.

 sign(x): tanda dari x.

 factor(x): faktor utama dari x.

Sebagai contoh penggunaan fungsi tambahan tersebut dapat dilihat

di bawah ini.

>> x=22/3

x=

7.3333

>> ceil(x)

ans =

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 18


Supardi, M.Si

>> floor(x)

ans =

>> fix(x)

ans =

>> round(x)

ans =

>> rem(4,3)

ans =

>> rem(-4,3)

ans =

-1

>> mod(4,3)

ans =

>> mod(-4,3)

ans =

>> abs(-2.3)

ans =

2.3000

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 19


Supardi, M.Si

>> abs(2+3i)

ans =

3.6056

>> sign(-2.3)

ans =

-1

>> sign(2.3)

ans =

>> factor(18)

ans =

2 3 3

5.8) Perintah Tambahan Matlab


Perintah tambahan yang berguna untuk pemrograman

1. clc : menghapus layar di command window

2. close all : menghapus semua gambar yang tampil

sebelumnya.

3. clear : perintah untuk menghapus data di memori

Matlab

4. cd : perintah untuk mengubah direktori

5. pwd : perintah untuk mengetahui kita berada di

direktori mana pada saat ini.

6. dir : perintah untuk mengetahui file apa saja yang

ada di current directory

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 20


Supardi, M.Si

7. mkdir : perintah untuk membuat direktori dibawah

current direktori

8. delete : perintah untuk menghapus file

9. who : menampilkan semua variabel saat ini.

10. whos : menampilkan semua variabel saat ini bersama

dengan informasi tentang ukuran, bytes, class dll

11. what : menampilkan semua file dengan ekstensi .M (M-File)

12. lookfor : perintah untuk mencari file dengan katakunci.

Untuk memberikan gambaran penggunaan beberapa perintah

tersebut maka diberikan contoh seperti di bawah ini

>> pi=5;

>> sqrt(pi)

ans =

2.2361

>> mkdir latihan;

>> who

Your variables are:

ans pi

>> whos

Name Size Bytes Class

ans 1x1 8 double array

pi 1x1 8 double array

Grand total is 2 elements using 16 bytes

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 21


Supardi, M.Si

>> clear

>> whos

>> sqrt(pi)

ans =

1.7725

5.9) Menampilkan/Menyembunyikan Output


Kadang-kadang ada alasan tertentu kita ingin menampilkan harga

dari sebuah variabel atau mungkin menyembunyikan saja. Untuk tujuan

itu, kita dapat menggunakan notasi titik koma (semi colon) , contoh

>> x=2.1; y=3*x, z=x*y

y=
6.3000
z=
13.2300

Perhatikan contoh di atas, bahwa harga variabel x tidak ditampilkan,

sedangkan variabel y dan z ditampilkan. Tentunya kita dapat memahami,

karena setelah variabel x diikuti tanda titik koma, sedangkan y dan z tidak

diikuti titik koma.

5.10) Fungsi Bawaan Matlab (Built-In Functios)

5.10.1. Fungsi Trigonometri

Ada beberapa fungsi trigonometri yang kita kenal dalam

matematika. Fungsi-fungsi tersebut masuk ke dalam fungsi bawaan Matlab.

Fungsi-fungsi trigonometri tersebut antara lain: sin(), cos(), tan(), sinh(),

cosh(), tanh(), asin(), acos(), atan(), asinh(), acosh()dan atanh(). Yang penting

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 22


Supardi, M.Si

untuk diingat bahwa argumen untuk fungsi trigonometri ini adalah mode

radian. Contoh

>> sin(pi/3),cos(pi/3),tan(pi/3)
ans =
0.8660
ans =
0.5000
ans =
1.7321
>> asin(0.88),acos(0.88),atan(0.88)
ans =
1.0759
ans =
0.4949
ans =
0.7217
>> sinh(pi/3),cosh(pi/3),tanh(pi/3)
ans =
1.2494
ans =
1.6003
ans =
0.7807
>> asinh(1.22),acosh(1.22),atanh(1.22)
ans =
1.0287
ans =
0.6517
ans =
1.1558 + 1.5708i

5.11) Fungsi Dasar Matlab


Disamping fungsi trigonometri, fungsi-fungsi dasar juga penting.

Beberapa fungsi dasar tersebut antara abs(), sqrt(), exp(), log(), log10(),

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 23


Supardi, M.Si

log2(). Untuk lebih jelasnya, lihat tabel dibawah ini

Tabel 2.2 Fungsi dasar Matlab

No Nama variabel Keterangan


1 abs() Menyatakan harga mutlak, misal ∣x∣
2 sqrt() Menyatakan akar pangkat dua, misal x
3 exp() Menyatakan harga eksponensial, misal e x
4 log() Menyatakan harga ln, misal ln(x)
5 log10() Menyatakan harga logaritma basis 10, misal log(x)
6 log2() Menyatakan harga logaritma basis 2, misal
2
log  x 

Contoh

>> z = 3+4i;

>> abs(z)

ans =

>> a=100;

>> sqrt(a)

ans =

10

>> log(a)

ans =

4.6052

>> log10(a)

ans =

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 24


Supardi, M.Si

>> log2(a)

ans =

6.6439

>> exp(log10(a))

ans =

7.3891

5.12) Konstanta Khusus Matlab


Di pasal terdahulu kita sudah menyinggung beberapa konstanta

khusus yang mana sebaiknya dihindari untuk didefinisikan kembali sebagai

konstanta. Beberapa konstanta khusus tersebut antara lain

Tabel 2.3 Konstanta khusus

No Konstanta Keterangan
1 pi 3.14159265...
2 i Unit imajiner, −1
3 j Sama dengan i
4 eps Ketelitian relatif floating-point
5 realmin Bilangan floating-point terkecil
6 realmax Bilangan floating-point terbesar
7 inf Bilangan tak hingga
8 NaN Not-a-Number

>> pi

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 25


Supardi, M.Si

ans =

3.1416

>> i

ans =

0 + 1.0000i

>> j

ans =

0 + 1.0000i

>> realmin

ans =

2.2251e-308

>> realmax

ans =

1.7977e+308

>> eps

ans =

2.2204e-016

>> 1/0

Warning: Divide by zero.

ans =

Inf

>> 0/0

Warning: Divide by zero.

ans =

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 26


Supardi, M.Si

NaN

5.13) Menggunakan Fungsi Meshgrid


Fungsi meshgrid digunakan untuk membuat jaring-jaring (grid)

pada bidang x-y yang diatasnya terdapat permukaan fungsi. Perintah ini

akan mentransformasi vektor x dan y pada domain tertentu menjadi bentuk

array X dan Y yang dapat digunakan untuk mengevaluasi fungsi dengan

dua variabel dan plot permukaan 3-D.

Contoh

Tentukan grafik fungsi z =x 2− y 2 pada domain 0x5 dan


0 y0

Penyelesaian

Langkah pertama adalah menentukan jaring-jaring pada bidang x-y dengan

menggunakan meshgrid.

>> x=0:5;

>> y=0:5;

>> [X Y]=meshgrid(x,y)

X=

0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5

Y=

0 0 0 0 0 0
1 1 1 1 1 1

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 27


Supardi, M.Si

2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5

Efek dari penggunaan meshgrid ini adalah kolom dari matriks X

memiliki elemen yang bergerak sesuai sumbu x. Sedangkan, matriks Y

memiliki elemen yang bergerak sesuai sumbu y. Selanjutnya harga z nya

adalah

>> z=X.^2-Y.^2

z=

0 1 4 9 16 25
-1 0 3 8 15 24
-4 -3 0 5 12 21
-9 -8 -5 0 7 16
-16 -15 -12 -7 0 9
-25 -24 -21 -16 -9 0

Sebagai contoh pada titik jaring (3,4) harga z =32−2 2=5 . Dengan

demikian kita tidak usah khawatir dengan penggunaan meshgrid. Untuk

menampilkan grafiknya

>> mesh(X,Y,z)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 28


Supardi, M.Si

Illustration 1:

5.14) Fungsi Khusus Matlab


Matlab memiliki fungsi khusus yang sangat berguna untuk

perhitungan numerik. Dalam bab ini kita akan membahas beberapa fungsi

khusus yang biasa digunakan dalam bidang sains maupun teknik.

5.14.1. Fungsi feval()

Fungsi feval() dapat digunakan untuk mengevaluasi sebuah fungsi.

Untuk itu, pertama kali yang harus dipersiapkan adalah membuat fungsi

yang akan dievaluasi. Kali ini, kita menggunakan fungsi yang sudah

disediakan oleh Matlab bernama humps.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 29


Supardi, M.Si

Gambar 2.1 Fungsi humps

Untuk mengevaluasi fungsi humps tersebut, kita harus membuat

fungsi handle dengan menggunakan tanda @ (baca et).

>> fhandle=@humps;

>> feval(fhandle,1)

ans =

16

5.14.2. Fungsi Polyval

Fungsi polyval digunakan untuk menentukan nilai sebuah

polinomial dalam bentuk


1 2 3 4 n−1 n
p x =a 0a 1 x a 2 x a3 x a 4 x ...an−1 x a n x

Matlab memiliki cara sederhana untuk menyatakan polinomial seperti dia

tas dengan cara

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 30


Supardi, M.Si

p=[ an an−1 ... a 3 a 2 a1 a0 ]


Contoh

Diketahui sebuah polinomial berbentuk p x =x 43 x 24 x 5


akan dievaluasi pada x=2, −3 dan 4.

Jawab

● Pertama, kita nyatakan polinomial yang akan dievaluasi berbentuk

p=[1 0 3 4 5].

● Kedua, kita nyatakan titik evaluasi yaitu x=[2,-3,4]

● Ketiga, mengevaluai polinomial pada x, yaitu polyval(p,x)

Jika ditulis dalam command window

>> p=[1 0 3 4 5];

>> x=[2,-3,4];

>> polyval(p,x)

ans =

41 101 325

5.14.3. Fungsi Polyfit

Jika kita telah memperoleh hasil dari sebuah eksperimen, maka

kadang kita perlu mencocokan dengan bentuk fungsi apa data yang telah

diperoleh. Mungkin saja cocok dengan fungsi yang berbentuk linier,

kuadratis, polinomial tiga atau polinomial lainnya. Dengan menggunakan

fungsi ini, kita dapat mencocokan data kita. Bentuk umum fungsi ini adalah

p = polyfit(x,y,n)

dengan n adalah polinomial orde n, yaitu polinomial yang digunakan untuk

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 31


Supardi, M.Si

mencocokan data.

Contoh

Dari hasil eksperimen diperoleh data sebagai berikut

x 1 2 3 4 5 6 7 8 9 10
y 1.3 3.2 11.3 15.1 25.5 38.2 47.1 68.2 81.3 98.2

Dari data eksperimen yang diperoleh, kita akan melakukan

pencocokan ke bentuk polinomial tertentu. Tetapi, kalau kita lihat dari

trend data y, kita bisa menduga bahwa data kita mendekati polinomial orde

2 (kuadratis).

x=[1:10];

y=[1.3,3.2,11.3,15.1,25.5,38.2,47.1,68.2,81.3,98.2];

p=polyfit(x,y,2)

Akhirnya diperoleh p berbentuk

p=

0.9284 0.7693 -1.0350

yang merupakan koefisien polinomial p. Sekarang kita memiliki polinomial

hasil pencocokan berbentuk

p=0.9284 x 2 0.7693 x−1.0350


Untuk melihat seberapa bagus hasil pencocokan yang kita lakukan, marilah

kita lakukan evaluasi pada titik-titik data yang kita miliki.

f=polyval(p,x);

tabel=[x' y' f' (y-f)']

tabel =

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 32


Supardi, M.Si

1.0000 1.3000 0.6627 0.6373

2.0000 3.2000 4.2173 -1.0173

3.0000 11.3000 9.6286 1.6714

4.0000 15.1000 16.8968 -1.7968

5.0000 25.5000 26.0218 -0.5218

6.0000 38.2000 37.0036 1.1964

7.0000 47.1000 49.8423 -2.7423

8.0000 68.2000 64.5377 3.6623

9.0000 81.3000 81.0900 0.2100

10.0000 98.2000 99.4991 -1.2991

Sekarang, marilah kita tampilkan selengkapnya dalam bentuk grafik

dengan menuliskan code melalui jendela editor.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 33


Supardi, M.Si

Gambar 2.1 Pencocokan data dengan polinomial orde 2

5.14.4. Fungsi polyder

Fungsi polyder digunakan untuk menurunkan polinomial yang kita

miliki. Bentuk umum penggunaan fungsi polyder adalah

k = polyder(p)

atau

k = polyder(a,b)

Contoh

Turunkan polinomial di bawah ini

p x =4 x 4 3 x 24 x 5

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 34


Supardi, M.Si

Jawab

p=[4 0 3 4 5];

polyder(p)

ans =

16 0 6 4

Hasilnya jika dituliskan dalam bentuk ungkapan matematis

16 x 36 x 4
Contoh

Turunkan polinomial di bawah ini

p x = x 4 3 x 2 4 x 5 2 x 3 x 23 x1


Jawab

a=[4 0 3 4 5];

b=[2 1 3 1];

p=polyder(a,b)

p=

56 24 90 60 69 40 19

atau

p x =56 x 6 24 x 5 90 x 460 x 3 69 x 2 40 x 19

5.14.5. Fungsi roots

Fungsi roots digunakan untuk memperoleh akar dari sebuah

polinomial orde n. Bentuk umum dari fungsi ini adalah

r = roots(c)

Contoh

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 35


Supardi, M.Si

Diketahui sebuah polinomial p x =4 x 3 x 4 x 5 . Dapatkan


4 2

akar-akar polinomial tersebut dengan menggunakan fungsi roots.

Jawab

Polinomial p x =4 x 3 x 4 x 5 dapat


4 2
dituliskan dalam

Matlab berbentuk

p=[ 4 0 3 4 5]

Akar polinomial tersebut adalah

roots(p)

ans =

0.6364 + 1.0830i

0.6364 - 1.0830i

-0.6364 + 0.6222i

-0.6364 - 0.6222i

5.14.6. Fungsi poly

Fungsi poly digunakan untuk menentukan bentuk polinomial

setelah akar-akar polinomial tersebut diketahui. Bentuk umum fungsi poly

adalah

p = poly(r)

Contoh

Diketahui akar polinomial p adalah 1,2,3,4 dan 5. Tentukan bentuk

polinomialnya.

Jawab

>> r=[1 2 3 4 5];

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 36


Supardi, M.Si

>> poly(r)

ans =

1 -15 85 -225 274 -120

atau
5 4 3 2
p x =x −15 x 85 x −225 x 274 x −120

5.14.7. Fungsi conv

Fungsi conv digunakan untuk mengalikan polinomial. Bentuk

umumnya adalah

w = conv(u,v)

Contoh

Diketahui dua buah polinomial u  x =x 2 3 x 2 dan

v  x =x 3 2 x 2 3 x 1 . Tentukan hasil perkalian dua polinomial

tersebut.

Jawab

>> u=[1 3 2];

>> v=[1 2 3 1];

>> conv(u,v)

ans =

1 5 11 14 9 2

atau

x 5 5 x 4 11 x 314 x 2 9 x 2

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 37


Supardi, M.Si

5.14.8. Fungsi deconv

Fungsi deconv berkebalikan dengan conv. Fungsi ini akan

melakukan pembagian dua buah polinomial. Bentuk umumnya adalah

[q,r] = deconv(v,u)

dengan q dan r masing-masing adalah hasil bagi dan residu.

Contoh

Diketahui dua buah polinomial yaitu


4 3 2 2
p1 x =2 x 3 x x 4 x 5 dan p2  x =x 3 x 4 , maka carilah

hasil bagi antara p1 dengan p2 beserta residunya.

Jawab

Dengan menggunakan fungsi deconv, maka kita dapat memperoleh

hasil bagi dan residunya.

>> p1=[2 3 1 4 5];

>> p2=[1 3 4];

>> [q r]=deconv(p1,p2)

q=

2 -3 2

r=

0 0 0 10 -3

atau jika dinyatakan dalam bentuk matematis

q=2 x 2 −3 x 2 dan r =10 x −3

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 38


Supardi, M.Si

SOAL LATIHAN

1. Evaluasi pernyataan Matlab berikut ini. Hitunglah secara manual

terlebih dahulu, setelah itu cek jawabanmu dengan menggunakan

Matlab

a) 2-3 g) (2-3)/3*4

b) 2-5/2 h) (3+4/3)/(3-4/3)/3

c) 3+4*3 i) (3+4/3)/(3-4/3)*3

d) 3+4/3*3 j) (3+4/3)/(3-4/3)+3

e) 3+4*3/4 k) 3*4-4/5+2

f) (2-3/4)/2+3*4

2. Jelaskan dengan alasan yang masuk akal manakah penulisan variabel

yang tidak benar berikut ini

a) b32 g) kecepatan&

b) 2d h) laju sepeda

c) s34d i) 'a'nu

d) laju_sepeda j) pi

e) _laju k) realmax

f) %kecepatan l) a^3

3. Tentukan manakah bilangan-bilangan berikut ini yang tidak diterima

oleh Matlab

a) 2,34 c) 0.32

b) 2.32 d) -3214

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 39


Supardi, M.Si

e) 2.3e-4 h) 3.43e5.3

f) 5.2e+2 i) 34.2*e^2

g) 5e^3

4. Terjemahkan pernyataan-pernyataan berikut ini dalam Matlab

a) abc −b b 2−4 a c


e)
2a
a
b) −c
b f) x y z
w b
c) p a−
u−v c−d
g)
d) xyz b
a
cd
5. Bagaimanakah nilai x dan y setelah pernyataan berikut ini dieksekusi

y=0;

i=1;

x=x+i;

y=y+i/x;

x=x+i;

y=y+i/x;

x=x+i;

y=y+i/x;

x=x+i;

y=y+i/x;

6. Cobalah untuk membuat program komputer seperti pada perintah

berikut ini.

(a) Letakkan nilai 4 pada variabel bernama panjang dan tidak

ditampilkan.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 40


Supardi, M.Si

(b) Letakkan nilai 2 pada variabel bernama lebar dan tidak

ditampilkan.

(c) Letakkan nilai 5 pada variabel bernama tinggi dan tidak

ditampilkan.

(d) Tentukan variabel volume sebagai hasil perkalian antara variabel

panjang, lebar dan tinggi.

(e) Tentukan variabel luas_permukaan sebagai duakali panjang kali

lebar ditambah duakali panjang kali tinggi ditambah duakali

lebar kali tinggi.

(f) Tampilkan harga yang tersimpan di dalam variabel volume dan

luas_permukaan

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 41


Supardi, M.Si

BAB 3

Vektor dan Matriks

5.1) Vektor
Salah satu fitur yang dimiliki oleh Matlab adalah penggunaan vektor

(array) sebagai objek. Vektor adalah sebuah larik satu-dimensi dari

bilangan-bilangan yang tersusun dalam baris atau kolom. Vektor kolom

dapat dibuat dengan cara menyusun bilangan-bilangan dalam sebuah

kurung kotak yang mana setiap elemen dibatasi titik koma.

>> A=[1;2;3]

A=

Sedangkan untuk membuat vektor yang berbentuk baris adalah

dengan menyusun bilangan-bilangan yang dibatasi dalam kurung kotak

dan setiap elemen dipisahkan oleh spasi atau tanda titik koma.

>> A=[1,2,3,4]

A=

1 2 3 4

Untuk menyatakan vektor baris dengan elemen-elemen dengan pola

tertentu juga dapat dibuat

>> x=1:5

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 42


Supardi, M.Si

x=

1 2 3 4 5

Perhatikan bahwa untuk menyatakan vektor dengan elemen-elemen

dari 1 hingga 5 dengan panjang langkah 1 dapat dilakukan dengan perintah

yang sangat sederhana. Vektor tersebut juga dapat dinyatakan sebagai


x=[1 2 3 4 5]

Sekarang cobalah dengan pernyataan Matlab berikut ini

>> y=0:2:10

y=

0 2 4 6 8 10

Dengan demikian vektor yang berurutan dengan pola tertentu dapat

dinyatakan secara umum sebagai

nama_vektor= bawah : panjang_langkah : atas

Untuk mengakses elemen pada vektor x maka kita dapat melakukannya

dengan cara

nama_vektor(indeks_elemen)

Contoh:

>>y(2)
ans =
2
>> 4*y(3)
ans =
16

Cara lain yang dapat digunakan untuk menyatakan vektor berurutan

dengan pola tertentu adalah dengan perintah linspace. Dengan perintah ini

kita dapat dengan mudah menentukan seberapa banyak elemen yang

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 43


Supardi, M.Si

diinginkan pada jangkauan tertentu. Sebagai contoh

>> z=linspace(0,10,5)

z=

0 2.5000 5.0000 7.5000 10.0000

Pada contoh di atas kita menginginkan vektor dengan pola tertentu

dengan jangkauan dari 0 hingga 10 dengan jumlah elemen 5. Ini berarti

bahwa panjang langkah untuk dua elemen yang berurutan adalah


10−0
=2
5
Jadi, dengan menggunakan linspace dapat ditentukan berapa

banyaknya elemen vektor pada jangkauan tertentu. Secara umum dapat

dituliskan sebagai

nama_vektor=linspace(bawah,atas,jmlh_elemen)

5.2) Manipulasi Vektor


Pada pasal ini kita akan membahas mengenai perhitungan sederhana

yang melibatkan vektor, termasuk pengenalan pada operasi dot (.). Untuk

lebih jelasnya, marilah kita perhatikan contoh berikut.

>> v=[1,2,3,4,5];

>> 2*v

ans =

2 4 6 8 10

Contoh di atas menjelaskan bahwa untuk mengalikan 2 pada setiap elemen

vektor dapat dilakukan dengan cara seperti di atas.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 44


Supardi, M.Si

5.3) Operasi Pada Elemen Vektor dengan dot (.)


Sekarang, misalnya diketahui dua buah vektor a dan b dan kita ingin

melakukan perkalian pada elemen-elemen yang seletak, maka dapat

dilakukan dengan cara memberikan tanda dot (.) sebelum operator pengali

(*).

>> v=[1,2,3,4,5];

>> w=[2,3,4,5,6];

>> v.*w

ans =

2 6 12 20 30

Hasil di atas dapat dinyatakan secara umum sebagai

[ v 1 w 1 ,v 2 w 2 , v 3 w 3 ,v 4 w 4 ,v 5 w 5 ]
Selanjutnya jika v dan w dilakukan operasi pembagian pada setiap elemen

seletak, maka digunakan operasi v./w.

>> v=[1,2,3,4,5];

>> w=[2,3,4,5,6];

>> y=v./w

y=

0.5000 0.6667 0.7500 0.8000 0.8333

atau dapat dinyatakan sebagai

y=
[ v1 v2 v3 v4 v5
, , , ,
w1 w 2 w 3 w 4 w5
,
]
Agar lebih jelas mengenai operasi antar elemen pada vektor, maka marilah

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 45


Supardi, M.Si

kita kerjakan latihan berikut ini. Jika diketahui dua buah vektor masing-

masing v =linspace 1,2,5 dan w=linscape[2,4,5] , tunjukkan

hasilnya jika dilakukan operasi berikut ini.

a) v+w

b) w-v

c) v.*w

d) v.^2

e) w./v

f) 1./w

g) w/2

h) v+1

Hasilnya adalah

>> v=linspace(1,2,5);
>> w=linspace(2,4,5);
>> v+w
ans =
3.0000 3.7500 4.5000 5.2500 6.0000
>> w-v
ans =
1.0000 1.2500 1.5000 1.7500 2.0000
>> v.*w
ans =
2.0000 3.1250 4.5000 6.1250 8.0000
>> v.^2
ans =
1.0000 1.5625 2.2500 3.0625 4.0000
>> w./v
ans =
2 2 2 2 2
>> 1./w

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 46


Supardi, M.Si

ans =
0.5000 0.4000 0.3333 0.2857 0.2500
>> w/2
ans =
1.0000 1.2500 1.5000 1.7500 2.0000
>> v+1
ans =
2.0000 2.2500 2.5000 2.7500 3.0000

Contoh

x3
Dapatkan nilai fungsi dari f x = untuk domain 0x 2
1x 2
dengan panjang langkah 0.2.

Jawab

x=0:0.2:2;
f=x.^3;
g=x.^2+1;
y=f./g;
disp([y'])

Hasilnya adalah

0
0.0077
0.0552
0.1588
0.3122
0.5000
0.7082
0.9270
1.1506
1.3755
1.6000

Vektor yang telah kita bahas di atas semuanya berbentuk baris.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 47


Supardi, M.Si

Untuk membuat vektor yang berbentuk kolom, dapat dibuat dengan

memberikan tanda titik koma (semicolon) pada elemen-elemennya.

>> v=[1;2;3;4;5]
v=
1
2
3
4

Subscript

Kita dapat mengakses salah satu elemen vektor v untuk dilakukan

operasi khusus. Letak setiap elemen vektor tersebut ditandai dengan

dengan subscript. Sebagai contoh

>> v=[2,4,6,8,10];

>> 2*v(2)

ans =

Pada contoh di atas kita dapat mengakses elemen nomor dua dari

vektor v dengan memberikan subscrip 2 pada vektor v.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 48


Supardi, M.Si

Transpose Vektor

Kalau kita sudah memiliki vektor w yang berbentuk baris, maka kita

dapat membuatnya menjadi vektor kolom dengan cara mentranspose

vektor tersebut. Transpose dapat dilakukan dengan cara memberikan tanda

aksen tunggal pada pada vektor w tersebut. Misalnya kita memiliki vektor

kolom v dengan n jumlah elemen.

[]
v1
v2
v= v 3

vn

Transpose dari vektor v adalah

v T =[ v 1, v 2, v 3, ⋯, v n ]

Contoh

Jika kita memiliki vektor berupa baris maka trsenposenya berupa

vektor kolom

>> w=[1,2,3,4,5];

>> w'

ans =
1
2
3
4
5

Contoh

Jika kita memiliki vektor kolom, maka transposenya berupa vektor

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 49


Supardi, M.Si

baris

>> B=[1;2;3;4;5];

>> B'

ans =
1 2 3 4 5

5.4) Operasi Vektor


Di bawah ini disajikan operasi array (vektor) beserta keterangannya,

sebagaimana yang telah dijelaskan di atas.

No Simbol Keterangan
1 [ ] Konstruktur untuk array (vektor)
2 , Tanda pemisah kolom elemen vektor
3 ; Tanda pemisah baris elemen vektor
4 : Untuk menentukan range elemen
5 + Operasi penambahan vektor
6 - Operasi pengurangan vektor
7 .* Operasi perkalian elemen vektor
8 .^ Pangkat setiap elemen vektor
9 ./ Operasi bagi kanan
10 .\ Operasi bagi kiri

5.4.1. Operasi Penambahan dan Pengurangan

Untuk melakukan operasi penambahan atau pengurangan vektor,

maka syaratnya kedua jenis vektor adalah sejenis. Misalnya untuk

penambahan dua buah vektor baris A dan B

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 50


Supardi, M.Si

>> A=[1,2,3];

>> B=[3,4,5];

>> C=A+B

C=
4 6 8

Kemudian untuk pengurangan dua buah vektor kolom P dan Q

>> A=[1;2;3];

>> B=[3;4;5];

>> C=A+B

C=
4
6
8

5.4.2. Operasi elemen vektor

Pembagian antar elemen vektor

Matlab memiliki kemampuan untuk melakukan operasi antar elemen

vektor seletak. Apabila kita memiliki dua buah vektor sejenis, kemudian

elemen pada matriks pertama akan dibagi dengan elemen seletak pada

vektor kedua.

>> P=[8,6,4];

>> Q=[4,3,2];

>> P./Q

ans =

2 2 2

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 51


Supardi, M.Si

>> P.\Q

ans =

0.5000 0.5000 0.5000

Perkalian antar elemen vektor

Matlab juga memiliki fitur untuk mengalikan antar elemen vektor

yang seletak

>> A=[1,2,3,4];
>> B=[2,3,4,5];
>> C=A.*B
C=
2 6 12 20

Pangkat untuk elemen vektor

Jika memiliki sebuah vektor, maka elemen-elemennya dapat

dipangkatkan seperti contoh di bawah ini

>> A=[1,2,3,4];

>> A.^2

ans =

1 4 9 16

5.4.3. Membuat Vektor Lebih Besar dengan Variabel yang Sudah Ada

Apabila kita memiliki dua buah vektor A dan B, maka dengan

bermodal pada vektor tersebut kita dapat membuat vektor baru lagi

berdasarkan pada vektor tersebut dengan ukuran yang lebih besar.

d.1. Vektor A dan B adalah vektor kolom

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 52


Supardi, M.Si

>> A=[1;2;3];

>> B=[6;7];

>> C=[A;B]

C=
1
2
3
6
7

d.2. Vektor A dan B adalah vektor baris

>> A=[1,2,3];

>> B=[6,7];

>> C=[A,B]

C=
1 2 3 6 7

5.5) Sifat-Sifat Vektor

5.5.1. Perintah length()

Perintah length menyatakan jumlah elemen yang terkandung dalam

sebuah vektor. Perintah ini bisa digunakan untuk vektor baris maupun

kolom. Sebagai contoh

>> P=[1,2,3,4,5,6,7,8,10];

>> length(P)
ans =
9

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 53


Supardi, M.Si

5.5.2. Perintah max dan min

Kita juga dapat memperoleh informasi mengenai mana elemen yang

terbesar (dengan perintah max ) maupun yang terkecil (dengan min ).

>> P=[1,2,3,4,5,6,7,8,10];

>> max(P)

ans =
10
>> min(P)

ans =
1

5.5.3. Mencari Magnitud vektor

Sebelum kita memberikan contoh Matlab untuk memperoleh

magnitud dari sebuah vektor, kita ingatkan kembali jika kita memiliki

sebuah vektor kolom v.

[]
v1
v2
v= v
3

vn

maka magnitud vektor v adalah

∣v∣= v12v 22 v 23⋯v 2n

Jika kita memiliki sebuah vektor Q, kemudian vektor tersebut akan

dicari magnitudnya

>> Q=[4,3,2];

>> Q.*Q

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 54


Supardi, M.Si

ans =

16 9 4

>> y=sum(Q.*Q)
y=

29

>> magnitude=sqrt(y)
magnitude =

5.3852

Bagaimana kalau elemen-elemen vektornya ada merupakan bilangan

kompleks. Jika kita memiliki vektor Q yang mana elemennya ada

merupakan bilangan kompleks, maka pertama yang harus dilakukan

adalah mencari konjugat (sekawan) dari vektor Q. Lihat contoh berikut ini

>> Q=[4;3+2i;2]

Q=
4.0000
3.0000 + 2.0000i
2.0000

>> P=conj(Q)

P=
4.0000
3.0000 - 2.0000i
2.0000

>> W=Q.*P;

>> y=sum(W)
y=
33

>> sqrt(y)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 55


Supardi, M.Si

ans =
5.7446

Kalau kita perhatikan langkah untuk memperoleh magnitud

bilangan kompleks tersebut terlampau panjang, maka lebih singkat dengan

cara

>> Q=[4;3+2i;2];

>> magnitud=sqrt(sum(conj(Q).*Q))

magnitud =

5.7446

Kita dapat menggunakan perintah abs() untuk menentukan harga

absolut dari vektor, artinya bahwa dengan perintah ini elemen-elemen

vektor tersebut dibuat menjadi harga absolutnya.

>> Q=[4;3+2i;2];

>> abs(Q)

ans =

4.0000
3.6056
2.0000

5.6) Perkalian Dot dan Cross


Perkalian dot pada dua vektor A=[ a 1, a 2, a 3, ⋯, a n ] dan

B=[ b 1, b2, b3, ⋯, bn ] didefinisikan

A⋅B=∑ ai bi
i

Dalam Matlab operasi perkalian dot dapat dilakukan dengan cara

dot(a,b).

>> A=[1,2,3,4];

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 56


Supardi, M.Si

>> B=[2,3,4,5];

>> dot(A,B)

ans =
40

Dengan menggunakan perkalian dot ini, maka kita dapat

menentukan harga magnitud dengan lebih mudah

>> A=[1,2,3,4];

>> dot(A,A)

ans =
30

>> magnitud=sqrt(dot(A,A))

magnitud =
5.4772
Operasi dot juga dapat bekerja pada vektor kompleks, seperti di

bawah ini

>> A=[4;3+2i;2];
>> dot(A,A)
ans =
33

Operasi lain pada vektor selain dot adalah perkalian cross. Syarat

agar dapat dilakukan operasi perkalian cross adalah jumlah elemen vektor

harus sama dengan tiga.

>> A=[1,2,3];

>> B=[2,3,4];

>> C=cross(A,B)

C=

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 57


Supardi, M.Si

-1 2 -1

5.7) Dasar-dasar Vektor


Dibawah ini akan dibahas tentang berbagai macam pembangkitan

dan pembangunan vektor (array) yang disediakan oleh Matlab. Sebelum

dibahas kita sajikan terlebih dahulu rangkumannya dalam tabel di bawah

ini.

No Perintah Keterangan
Membangkitkan vektor dengan panjang
1 :
langkah sama.
Membangkitkan vektor pada jangkauan

tertentu dengan jumlah langkah dapat


2 linspace
diambilsesuai kebutuhan. Panjang langkah

yang dibangkitkan memiliki lebar sama.


Membangkitkan secara logaritmik vektor

3 logspace dalam jangkauan tertentu dengan jumlah

langkah dapat diambil sesuai keiinginan.


Membangun sebuah matriks diagonal
4 blkdiag
dengan argumen masukan.
5 eye Membangun matriks identitas.
Membangun matriks dengan elemen sama
6 ones
dengan 1.
Membangun matriks dengan elemen sama
7 zeros
dengan 0

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 58


Supardi, M.Si

Membangun matriks dengan elemen


8 rand
random yang terdistribusi secara uniform
Membangun matriks dengan elemen
9 randn
random yang terdistribusi secara normal
Membangkitkan array (vektor) untuk fungsi
10 ndgrid
multidimensi dan interpolasi.
Membangkitkan matriks X dan Y untuk
11 meshgrid
tujuan plot 3 dimensi.

Pembangkitan vektor dengan menggunakan linspace dan titik dua (:)

sudah diberikan di awal pembahasan tentang vektor. Sekarang kita akan

membahas beberapa yang belum dijelaskan di atas.

5.8) Membangkitkan Vektor dengan Logspace


Fungsi logspace dapat membangkitkan secara logaritmik vektor

dalam jangkauan yang dapat diatur. Bentuk umum dari fuungsi ini adalah

y = logspace(a,b)

y = logspace(a,b,n)

y = logspace(a,pi)

Dengan perintah y=logspace(a,b) maka akan dibangkitkan secara

logaritmik vektor baris x sebanyak 50 titik yang terbentang dari 10


a

hingga 10b .

>> x=logspace(0,1);

>> y=x;

>> stem(x,y)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 59


Supardi, M.Si

Gambar. Deskripsi penggunaan logspace(a,b

Kalau kita menginginkan vektor dalam rentang a dan b dengan

jumlah tertentu, maka kita dapat menggunakan fungsi y=logspace(a,b,n).

>> x=logspace(0,1,10);

>> y=x;

>> stem(x,y)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 60


Supardi, M.Si

Gambar. Deskripsi penggunaan y=logspace(a,b,n)

5.9) Matriks

5.9.1. Macam-Macam Matriks dan Operasi Elementer

Matriks adalah susunan angka-angka yang membentuk baris dan

kolom hingga bentuknya menjadi dua dimensi, seperti

[ ]
a11 a12 a 13
A= a21 a22 a 23
a31 a32 a 33

Sedangkan array merupakan bentuk khusus dari matriks karena

bentuknya berupa larik membentuk baris atau kolom, dengan kata lain

array merupakan matriks satu dimensi. Array sering juga disebut vektor

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 61


Supardi, M.Si

seperti yang telah dibahas di depan.

Kemudahan yang luar biasa diberikan oleh Matlab diantaranya

adalah penulisan dan operasi Matlab yang sangat mudah. Lain halnya

dengan bahasa pemrograman murni seperti halnya bahasa C, fortran atau

lainnya yang begitu sulitya melakukan operasi antar matriks. Sekarang

marilah kita menulis matriks misalnya

[
2 1 12
A= 4 2 −1
5 12 4 ]
Matriks seperti di atas dapat kita tuliskan dengan cara

>> A=[ 2 1 12; 4 2 -1; 5 12 4]

>> A=[ 2 1 12; 4 2 -1; 5 12 4]

A=

2 1 12
4 2 -1
5 12 4

atau

>> A=[ 2, 1, 12; 4, 2, -1; 5, 12, 4]

A=

2 1 12
4 2 -1
5 12 4

Jadi, antara elemen satu dengan elemen yang lain dalam satu baris

dapat dipisahkan dengan spasi atau tanda koma (, ). Sedangkan tanda

semikolon (titik koma) digunakan untuk memisahkan antara baris satu

dengan baris lainnya.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 62


Supardi, M.Si

Untuk mengakses salah satu elemen dalam matriks A dapat

dilakukan dengan perintah A(elemen_baris_ke, elemen_kolom_ke).

Contoh, misalnya elemen pada baris pertama dan kolom ketiga yang

berharga 12 akan dikalikan dengan 11, maka perintah yang dapat dilakukan

adalah

>> A(1,3)*11

5.10) Operasi Dasar Matriks

5.10.1. Penambahan dan Pengurangan

Operasi penambahan dan pengurangan dua buah matrik atau lebih

dapat dilakukan apabila matriks pesertanya adalah seorde.

>> B=[2,3,4,5;1,2,3,4;4,2,1,3;4,5,2,3];

>> A+B

ans =

3 5 7 9

3 5 7 9

7 6 6 9

8 10 8 10

>> A-B

ans =

-1 -1 -1 -1
1 1 1 1
-1 2 4 3
0 0 4 4

Apabila matriks pesertanya tidak seorde, maka akan terjadi pesan

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 63


Supardi, M.Si

kesalahan

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

>> B=[2,3,4;1,2,3;4,2,1;4,5,2];

>> A+B

??? Error using ==> +

Matrix dimensions must agree.

Contoh Program

Hitunglah 2A-3B, jika diketahui matriks A dan matriks B masing-

masing adalah

A=  
3 5
1 2
,  
B= 4 10
6 5

Penyelesaian

A=[3,5;1,2]

B=[4,10;6,5];

C=2*A-3*B;

disp(C)

5.10.2. Transpose matriks

Transpose matriks berarti menukarkan elemen-elemen matriks yang

berada pada baris i ke kolom j atau dapat dinyatakan dalam notasi Aij = A ji .
T

Matlab hanya membutuhkan tanda apostrop (') untuk melakukan transpose

matriks A.

>> z=v*u

z=
2 4 6

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 64


Supardi, M.Si

3 6 9
4 8 12
>> z'

ans =
2 3 4
4 6 8
6 9 12

Tetapi hati-hati apabila vektor atau matriks yang kita miliki adalah

kompleks artinya bahwa elemen-elemennya bahwa elemen-elemennya

merupkan bilangan kompleks. Hal ini karena penambahan apostrop saja

berarti kita melakukan transpose konjugat kompleks matriks tersebut.

Sedangkan, kalau kita hanya ingin melakukan transpose saja, maka perlu

digunakan tanda titik dikuti tanda apostrop ( .' )

>> A=[2i+1,3i-2,2+3i;i+2,3+2i,3i-5;2+4i,3i+1,5i+1]

A=

1.0000 + 2.0000i -2.0000 + 3.0000i 2.0000 + 3.0000i

2.0000 + 1.0000i 3.0000 + 2.0000i -5.0000 + 3.0000i

2.0000 + 4.0000i 1.0000 + 3.0000i 1.0000 + 5.0000i

>> A'

ans =

1.0000 - 2.0000i 2.0000 - 1.0000i 2.0000 - 4.0000i

-2.0000 - 3.0000i 3.0000 - 2.0000i 1.0000 - 3.0000i

2.0000 - 3.0000i -5.0000 - 3.0000i 1.0000 - 5.0000i

>> A.'

ans =

1.0000 + 2.0000i 2.0000 + 1.0000i 2.0000 + 4.0000i

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 65


Supardi, M.Si

-2.0000 + 3.0000i 3.0000 + 2.0000i 1.0000 + 3.0000i

2.0000 + 3.0000i -5.0000 + 3.0000i 1.0000 + 5.0000i

5.10.3. Perkalian Matriks

Masalah matriks memang banyak digunakan dalam penyelesaian

kasus matematika. Persamaan linier simultan merupakan salah satu

masalah yang dapat dipecahkan dengan matriks. Perkalian matriks sendiri

membutuhkan syarat yakni jumlah kolom matriks kiri harus sama dengan

jumlah baris matriks kanan. Oleh sebab itu, perkalian matriks tidak bersifat

komutatif atau AB≠BA .

>> A=[1,2,3;2,3,4;3,4,5]

A=

1 2 3
2 3 4
3 4 5

>> B=[3,2,1;4,3,2;6,5,4]

B=

3 2 1
4 3 2
6 5 4

>> A*B

ans =

29 23 17
42 33 24
55 43 31

>> B*A

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 66


Supardi, M.Si

ans =

10 16 22
16 25 34
28 43 58

Lihatlah bahwa A*B memang tidak sama dengan B*A. Sekarang,

kalau aturan di atas tidak terpenuhi seperti pada contoh di bawah, maka

akan ada pesan kesalahan

>> P=[1,2,3;2,3,4;3,4,5];

>> Q=[3,2,1;4,3,2];

>> P*Q

??? Error using ==> *

Inner matrix dimensions must agree.

Akan tetapi jika terpenuhi maka operasi akan dijalankan

>> P=[1,2,3;2,3,4;3,4,5];

>> Q=[3,2;1,4;3,2];

>> P*Q

ans =

14 16
21 24
28 32

5.10.4. Perkalian Antar Elemen Matriks

Seperti halnya pada vektor, Matlab juga mampu melalukan antar

elemen seletak. Matriks A dan B dapat dilakukan operasi perkalian elemen

jika keduanya merupakan matriks yang sejenis. Lihat contoh dibawah ini

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 67


Supardi, M.Si

>> A=[1,2,3;2,3,4;3,4,5];

>> B=[3,2,1;4,3,2;6,5,4];

>> A.*B

ans =

3 4 3
8 9 8
18 20 20

Jika matriks P dan Q tidak sejenis maka operasi perkalian antar

elemen tidak akan terjadi

>> P=[1,2,3;2,3,4;3,4,5];

>> Q=[3,2,1;4,3,2];

>> P.*Q

??? Error using ==> .*

Matrix dimensions must agree.

5.10.5. Pembagian Elemen Matriks

Kita juga dapat melakukan operasi pembagian kanan (./) maupun

pembagian kiri (.\) matriks. Agar dapat melakukan operasi pembagian

antar elemen matriks maka kedua matriks harus sejenis.

>> A=[1,2,3;2,3,4;3,4,5];

>> B=[2,4,6;4,6,8;6,8,10];

>> A./B

ans =

0.5000 0.5000 0.5000


0.5000 0.5000 0.5000

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 68


Supardi, M.Si

0.5000 0.5000 0.5000

>> A.\B

ans =

2 2 2
2 2 2
2 2 2

Disamping pembagian kanan dan pembagian kiri, Matlab juga bisa

melakukan pemangkatan pada elemen-elemennya.

>> A=[1,2,3;2,3,4;3,4,5];

>> A.^3

ans =

1 8 27

8 27 64

27 64 125

5.11) Matriks Bawaan Matlab


Matlab memiliki banyak fungsi untuk mencreate matriks, antara lain

1. Untuk membuat matriks simetri secara otomatis, Matlab memiliki

fungsi pascal()

>> pascal(4)

ans =

1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20

(1) Untuk membuat matriks tak simetri, Matlab memiliki fungsi magic().

>> magic(4)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 69


Supardi, M.Si

ans =

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

3. Untuk membuat matriks yang mana elemen-elemennya bilangan

random dalam ranah 0x1 dapat dibuat dengan fungsi

rand(baris,kolom). Sedangkan apabila kita menginginkan elemen-

elemennya berada dalam ranah 0xa , maka fungsi

pembangkitannya berbentuk a*rand(baris,kolom). Satu lagi, elemen-

elemen fungsi tadi semuanya bertipe real, kalau kita menginginkan

bertipe integer maka haru ditambahi fungsi round(), ceil(), fix() atau

floor(). Lihat contoh

 >> rand(3,4)

ans =

0.0153 0.9318 0.8462 0.6721


0.7468 0.4660 0.5252 0.8381
0.4451 0.4186 0.2026 0.0196

 >> 10*rand(3,4)

ans =

6.8128 5.0281 3.0462 6.8222


3.7948 7.0947 1.8965 3.0276
8.3180 4.2889 1.9343 5.4167

 >> round(10*rand(3,4))

ans =

2 9 5 6
7 9 9 8

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 70


Supardi, M.Si

4 6 8 7

 >> ceil(10*rand(3,4))

ans =

4 6 9 8
3 8 6 6
4 4 4 5

4. Matriks identitas. Matriks identitas disebut pula matriks satuan.

Sebagaimana operasi perkalian memiliki angka satuan 1, sedemikian

hingga a×1=a , operasi penambahan/ pengurangan memiliki angka

identitas 0, hingga a0=a atau a−0=a . Matriks juga memiliki

identitas matriks yang biasa disimbulkan dengan I, sehingga


AI=IA =A . Dalam Matlab, untuk membuat matriks identitas cukup

menggunakan fungsi eye(m,n)

>> A=[1,2,3;2,3,4;3,4,5]

A=

1 2 3

2 3 4

3 4 5

>> I=eye(3)

I=

1 0 0
0 1 0
0 0 1

>> A*I

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 71


Supardi, M.Si

ans =

1 2 3
2 3 4
3 4 5

>> I*A

ans =

1 2 3
2 3 4
3 4 5

5. Matriks–matriks khusus. Matlab memiliki matriks khusus, yang

mana dua diantaraya sudah disebutkan di atas yaitu rand(m,n) dan

eye(m,n). Disamping kedua matriks tersebut ada lagi matriks khsuus

lainnya yaitu ones(m,n), zeros(m,n) dan randn(m,n)

>> ones(3,4)

ans =

1 1 1 1
1 1 1 1
1 1 1 1

>> zeros(3,4)

ans =

0 0 0 0
0 0 0 0
0 0 0 0

>> randn(3,4)

ans =

-0.4326 0.2877 1.1892 0.1746


-1.6656 -1.1465 -0.0376 -0.1867

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 72


Supardi, M.Si

0.1253 1.1909 0.3273 0.7258

Contoh

Buatlah sebuah matriks dengan bentuk seperti di bawah ini

 
1 2 3 4
2 0 0 0
3 0 0 0
4 0 0 0

Penyelesaian

Untuk membuat bentuk matriks tersebut tentunya tidak sulit sama

sekali, apalagi jumlah elemennya tidak banyak. Tapi bayangkan kalau

jumlah elemennya sangat banyak, maka apa yang dapat kita perbuat?? Kita

langsung menyelesaikan

x=zeros(4);

r=1:4;

x(:,1)=r';

x(1,:)=r

Program menampilkan matriks seperti di atas dapat pula dibuat

dengan prgram seperti di bawah ini

>> a=[1,2,3,4;2,zeros(1,3);3,zeros(1,3);4,zeros(1,3)]

a=

1 2 3 4
2 0 0 0
3 0 0 0
4 0 0 0

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 73


Supardi, M.Si

Contoh

Buatlah matriks yang berbentuk seperti di bawah ini

1 2 0 0 0 0 0 0 0 0

2 1 2 0 0 0 0 0 0 0

0 2 1 2 0 0 0 0 0 0

0 0 2 1 2 0 0 0 0 0

0 0 0 2 1 2 0 0 0 0

0 0 0 0 2 1 2 0 0 0

0 0 0 0 0 2 1 2 0 0

0 0 0 0 0 0 2 1 2 0

0 0 0 0 0 0 0 2 1 2

0 0 0 0 0 0 0 0 2 1

Penyelesaian

Matriks di atas hanyalah matriks dengan ukuran 10 x 10. Dengan

Matlab kita dapat menanganinya dengan mudah meskipun ukurannya jauh

lebih besar. Untuk menyelesaikannya coba lihat program di bawah ini.

y=eye(10);

i=1;

for j=1:9;

i=i+1;

y(i,j)=2;

y(j,i)=2

end

5.12) Determinan dan Sistem Persamaan Linier

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 74


Supardi, M.Si

Determinan sebuah matriks A yang berorde 2 x 2 didefinisikan

sebagai

A=
∣a 11 a12
a 21 a 22 ∣
=a 11 a 22−a 12 a 21

Untuk menentukan determinan A dalam Matlab sangat mudah yaitu

cukup dengan perintah det(A). Coba lihatlah contoh di bawah ini

>> A=[1,2;3,1]

A=

1 2
3 1

>> det(A)

ans =

-5

>> B=[1,2,4;2,1,5;8,3,1];

>> det(B)

ans =

54

Dengan memahami tentang determinan, maka kita dapat

menemukan satu set persamaan simultan linier. Sebagai contoh jika kita

memilki satu set persamaan linier


3 x2 y− z=3

x3 y2 z=5

−4 x3 y−5z=1

Untuk memperoleh harga x, y dan z yang memenuhi persamaan tersebut

maka

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 75


Supardi, M.Si

• Tentukan matriks A yaitu

 
3 2 −1
◦ A= 1 3 2
−4 3 −5
• Tentukan matriks b yaitu


3
◦ b= 5
1
• Gunakan operasi bagi kiri untuk memperoleh harga x,y dan z yang

memenuhi persamaan tersebut.

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

>> b=[3;5;1];

>> A\b

ans =

0.2500

1.3214

0.3929

Ini berarti bahwa x,y dan z masing-masing berharga 0.2500, 1.3214

dan 0.3929.

5.13) Invers Matriks


Invers matriks A dinotasikan dengan A -1. Hubungan antara

keduanya dapat dinyatkan

AA−1= A−1 A= I

dimana I merupakan matriks identitas. Misalnya kita memiliki tiga

persamaan linier simultan

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 76


Supardi, M.Si

a11 xa12 ya 13 z =b1


a 21 xa 22 y a 23 z =b 2
a31 xa 32 ya 33 z =b3

maka kita dapat menyederhanakan dalam bentuk matriks

    
a11 a 12 a 13 x b1
a 21 a 22 a 23 y = b2
a 31 a 32 a 33 z b3

atau disingkat menjadi


A X =b

Untuk memperoleh harga X

A−1 A X =A−1 b
X = A−1 b
dimana A-1A=I

Contoh

Selesaikan sistem persamaan linier berikut ini.


3 x2 y− z=3
x3 y2 z=5

−4 x3 y−5z=1

Penyelesaian

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

A=

3 2 -1
1 3 2
-4 3 -5

>> b=[3;5;1]

b=

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 77


Supardi, M.Si

3
5
1

>> X=inv(A)*b

X=

0.2500
1.3214
0.3929

Kita dapat lihat bahwa penyelesaian ini persis sama dengan penyelesaian

sebelumnya. Dalam contoh di atas memang benar bahwa A-1A=I.

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

>> inv(A)

ans =

0.2500 -0.0833 -0.0833


0.0357 0.2262 0.0833
-0.1786 0.2024 -0.0833

>> inv(A)*A

ans =

1.0000 -0.0000 0
0 1.0000 -0.0000
0 0.0000 1.0000

Kalau kita perhatikan hasil perkalian A-1A mengandung suku -0.000.

Apa yang terjadi sebenarnya? Dalam hal ini kita hasrus ingat bahwa

didalam perhitungan numerik terdapat beberapa kesalahan hasil

perhitungan diantaranya adalah kesalahan pembulatan. Oleh sebab itu, hasil

yang diperoleh merupakan pendekatan, namun begitu akurasi dapat

diandalkan.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 78


Supardi, M.Si

5.14) Dekomposisi Matriks


Matlab mampu dengan cepat melakukan dekomposisi matriks

LU,QR maupun SVD. Dalam pasal ini kita akan lihat bagaimana

dekomposisi LU (Lower Upper) dapat digunakan untuk menyelesaikan

persamaan simultan linier. Untuk mendapatkan hasil dekomposisi matriks

dengan Matlab perintahnya adalah

[L,U]=lu(A),

dimana L adalah matriks Lower (bawah) dan U adalah matriks Upper

(atas). Sebagai contoh kita akan melakukan dekomposisi terhadap matriks

 
3 2 −1
A= 1 3 2
−4 3 −5

Penyelesaian

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

>> [L,U]=lu(A)

L=

-0.7500 1.0000 0
-0.2500 0.8824 1.0000
1.0000 0 0
U=

-4.0000 3.0000 -5.0000


0 4.2500 -4.7500
0 0 4.9412

Setelah kita peroleh matriks L dan U, selanjutnya akan kita gunakan untuk

menyelesaikan persamaan simultan linier seperti contoh di pasal

sebelumnya. Jika

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 79


Supardi, M.Si


3
b= 5
1

maka penyelesaian dapat diperoleh dengan dua kali bagi kiri, yaitu

X=L\(U\b)

Kita dapatkan

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

>> b=[3;5;1];

>> [L,U]=lu(A);

>> X=U\(L\b)

X=

0.2500
1.3214
0.3929

5.15) Operator Colon (titik dua)


Operator colon merupakan operator yang powerful dalam Matlab

dan memberikan cara yang efisien dalam menghendel matriks.

5.15.1. Menyederhanakan ungkapan matriks.

Untuk menyatakan metriks a

a=

1 2 3 4

3 4 5 6

5 6 7 8

7 8 9 10

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 80


Supardi, M.Si

dapat dinyatkan dengan cara sederhana dengan

>> a=[1:4;3:6;5:8;7:10]

a=

1 2 3 4

3 4 5 6

5 6 7 8

7 8 9 10

5.15.2. Mengakses elemen matriks

 Untuk menampilkan seluruh elemen pada baris ketiga, dapat

dinyatakan

>> a(3,:)

ans =

5 6 7 8

 Untuk menampilkan elemen mariks pada seluruh kolom pertama

dan kedua saja, misalnya dapat dinyatakan dengan

>> a(:,[1 2])

ans =

1 2

3 4

5 6

7 8

 Untuk menampilkan seluruh elemen pada baris ketiga dan keempat

saja dapat dinyatakan

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 81


Supardi, M.Si

>> a([3 4],:)

ans =

5 6 7 8

7 8 9 10

 Untuk mengakses elemen matriks a yang berada pada baris ke 1 dan

2 dan kolom 3 dan 4 dapat dinyatakan dengan

>> a(1:2,3:4)

ans =

3 4

5 6

 Jika kita menginginkan mengganti seluruh elemen matriks pada

baris ke 2,3 dan4 dan kolom 1,2 dan 3 dengan elemen-elemen

berharga 1.

>> a(2:4,1:3)=ones(3)

a=

1 2 3 4

1 1 1 6

1 1 1 8

1 1 1 10

 Kita dapat membuat tabel dengan menggunkan operator colon.

Contoh, kita ingin membuat tabel sinus dan cosinus dari sudut

tertentu, misalnya dibuat kelipatan 30o

>> x=[0:30:180]';

>> trig(:,1)=x;

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 82


Supardi, M.Si

>> trig(:,2)=sin(pi/180*x);

>> trig(:,3)=cos(pi/180*x);

>> trig

trig =

0 0 1.0000

30.0000 0.5000 0.8660

60.0000 0.8660 0.5000

90.0000 1.0000 0.0000

120.0000 0.8660 -0.5000

150.0000 0.5000 -0.8660

180.0000 0.0000 -1.0000

 Operator colon dapat digunakan untuk operasi elemen-elemen pada

metode eliminasi Gauss.

>> a=[-1,1,2,2;8,2,5,3;10,-4,5,3;7,4,1,-5];

>> a(2,:)=a(2,:)-a(2,1)/a(1,1)*a(1,:)

a=

-1.00 1.00 2.00 2.00

0 10.00 21.00 19.00

10.00 -4.00 5.00 3.00

7.00 4.00 1.00 -5.00

>> a(3,:)=a(3,:)-a(3,1)/a(1,1)*a(1,:)

a=

-1.00 1.00 2.00 2.00

0 10.00 21.00 19.00

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 83


Supardi, M.Si

0 6.00 25.00 23.00

7.00 4.00 1.00 -5.00

>> a(4,:)=a(4,:)-a(4,1)/a(1,1)*a(1,:)

a=

-1.00 1.00 2.00 2.00

0 10.00 21.00 19.00

0 6.00 25.00 23.00

0 11.00 15.00 9.00

>> a(3,:)=a(3,:)-a(3,2)/a(2,2)*a(2,:)

a=

-1.00 1.00 2.00 2.00

0 10.00 21.00 19.00

0 0 12.40 11.60

0 11.00 15.00 9.00

>> a(4,:)=a(4,:)-a(4,2)/a(2,2)*a(2,:)

a=

-1.00 1.00 2.00 2.00

0 10.00 21.00 19.00

0 0 12.40 11.60

0 0 -8.10 -11.90

>> a(4,:)=a(4,:)-a(4,3)/a(3,3)*a(3,:)

a=

-1.00 1.00 2.00 2.00

0 10.00 21.00 19.00

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 84


Supardi, M.Si

0 0 12.40 11.60

0 0 0 -4.32

 Kata kunci end dapat menyatakan elemen paling akhir dari sebuah

matriks. Misal, kita memiliki sebuah vektor

>> a=[1:6]

a=

1 2 3 4 5 6

>> a(end)

ans =

>> sum(a(2:end))

ans =

20

 Operator colon juga dapat berfungsi sebagai subscript tunggal.

Dalam kasus ini, operator ini akan berperilaku lain ketika berada di

ruas kiri dan ruas kanan. Ketika berada di ruas kanan, operator colon

akan menampilkan seluruh elemen dalam format kolom.

>> a=[1,2,3;2,3,4];

>> b=a(:)

b=

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 85


Supardi, M.Si

Sedangkan, ketika berada di ruas kiri operator colon akan mereshapes

matriks a yang sebeleumnya sudah ada. a(:) menyatakan matriks

dengan dimensi (orde) yang sama dengan a tetapi konten elemen

diambil dari matriks pada ruas kanan.

>> b=[1,2,3,3;4,5,6,7]

b=

1 2 3 3

4 5 6 7

>> a=zeros(4,2)

a=

0 0

0 0

0 0

0 0

>> a(:)=b

a=

1 3

4 6

2 3

5 7

 Sebagai kasus khusus, operator colon dapat digunakan untuk

mengganti seluruh elemen matriks.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 86


Supardi, M.Si

>> a=[1:4;5:8]

a=

1 2 3 4

5 6 7 8

>> a(:)=-1

a=

-1 -1 -1 -1

-1 -1 -1 -1

5.15.3. Menggandakan baris dan kolom

Kadang-kadang kita perlu membangkitkan kembali elemen-elemen

yang ada pada baris atau kolom karena kebetulan elemen-elemen yang

pada baris/kolom berikutnya sama. Kita dapat menggunakan perintah

repmat untuk menggandakan baris/kolom tersebut.

>> a=[1;2;3];

>> b=repmat(a,[1 3])

b=

1 1 1

2 2 2

3 3 3

Hasil di atas (matriks b) dibangkitkan dari vektor a yang berdimensi

3 x 1 menjadi matriks b yang berdimensi 3 x 3. Perintah repmat(a,[1 3])

berarti gandakan sebanyak 1 baris dan 3 kolom dari matriks a.

>> c=repmat(a,[2 1])

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 87


Supardi, M.Si

c=

Perintah repmat(a,[2 1]) berarti gandakan sebanyak 2 baris dan 1

kolom dari matriks a.

Perintah alternatif yang dapat digunakan, misalnya repmat (a,[1 3])

dapat dinyatakan dengan repmat(a,1,3) dan repmat (a,[2 1]) bisa dinyatakan

dengan repmat(a,2,1).

5.15.4. Menghapus baris dan kolom matriks

Kita dapat menggunakan operator colon dan larik kosong [ ] untuk

menghapus elemen matriks di kolom maupun di baris.

>> b=[1,2,3;3,4,5;6,7,8]

b=

1 2 3

3 4 5

6 7 8

>> b(:,2)=[]

b=

1 3

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 88


Supardi, M.Si

3 5

6 8

Kalau yang akan dihapus adalah elemen matriks b pada kolom 2 dan

3, maka

>> b=[1,2,3;3,4,5;6,7,8];

>> b(:,[2 3])=[]

b=

Demikian pula, jika kita akan menghapus elemen matriks b pada

kolom 2 dan 3, maka

>> b=[1,2,3;3,4,5;6,7,8];

>> b([2 3],:)=[]

b=

1 2 3

5.15.5. Manipulasi matriks

Di bawah ini diberikan beberapa fungsi untuk manipulasi matriks,

antara lain

 diag, fungsi ini digunakan untuk membuat matriks diagonal. Jika kita

memiliki sebuah vektor v, maka diag(v) akan menghasilkan matriks

diagonal dengan elemen diagonal adalah elemen-elemen pada v.

>> v=[1:4];

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 89


Supardi, M.Si

>> diag(v)

ans =

1 0 0 0

0 2 0 0

0 0 3 0

0 0 0 4

Untuk menggeser diagonal ke kanan atau ke bawah, digunakan

perintah diag(v,b) yang akan menggeser kekanan atau ke bawah

sebesar b kolom.

>> diag(v,2)

ans =

0 0 1 0 0 0
0 0 0 2 0 0
0 0 0 0 3 0
0 0 0 0 0 4
0 0 0 0 0 0
0 0 0 0 0 0

>> diag(v,-2)

ans =

0 0 0 0 0 0
0 0 0 0 0 0
1 0 0 0 0 0
0 2 0 0 0 0
0 0 3 0 0 0
0 0 0 4 0 0

 fliplr, perintah ini digunakan untuk mempertukarkan elemen-elemen

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 90


Supardi, M.Si

matriks yang berada di sebelah kanan dengan elemen-elemen yang

berada di sisi kiri.

>> a=[1,2,3;4,5,6]'

a=

1 4

2 5

3 6

>> fliplr(a)

ans =

4 1

5 2

6 3

Kalau a berupa vektor, maka seperti terlihat di bawah ini

>> a=[1,2,3,4,5,6]

a=

1 2 3 4 5 6

>> fliplr(a)

ans =

6 5 4 3 2 1

 flipud, fungsi ini digunakan untuk mempertukarkan elemen matriks

yang berada di atas dengan yang ada di bawah.

>> a=[1,2,3;4,5,6]

a=

1 2 3

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 91


Supardi, M.Si

4 5 6

>> flipud(a)

ans =

4 5 6

1 2 3

 rot90, fungsi ini digunakan untuk merotasikan matriks A sebesar 90 o

menentang arah dengan arah jarum jam.

>> a=[1,2,3;4,5,6]

a=

1 2 3

4 5 6

>> rot90(a)

ans =

3 6

2 5

1 4

 tril, fungsi ini digunakan untuk menentukan elemen segitiga bawah

dari matriks tertentu. Sedankan triu, untuk menentukan elemen

segitiga atas matriks.

>> a=[1,2,3;4,5,6]

a=

1 2 3

4 5 6

>> tril(a)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 92


Supardi, M.Si

ans =

1 0 0

4 5 0

>> triu(a)

ans =

1 2 3

0 5 6

5.15.6. Fungsi matriks lainnya

Masih ada banyak fungsi yang dapat digunakan untuk manipulasi

matriks. Beberapa diantaranya

 det,fungsi ini digunakan untuk menentukan determinan matriks.

Ingat, bahwa matriks yang memimiliki determinan hanyalah matriks

bujur sangkar.

>> a=[1,2,3;4,3,-2;-1,5,2];

>> det(a)

ans =

73

 eig, ini digunakan untuk menentukan nilai eigen.

>> a=[1,2,3;4,3,-2;-1,5,2];

>> eig(a)

ans =

5.5031

0.2485 + 3.6337i

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 93


Supardi, M.Si

0.2485 – 3.6337i

 inv, fungsi ini digunakan untuk melakukan invers matriks seperti

telah dijelaskan di atas.

 lu, adalah fungsi untuk melakukan dekomposisi matriks menjadi

matriks segitiga bawah dan matriks segitiga atas.

>> a=[1,2,3;4,3,-2;-1,5,2];

>> [L,U]=lu(a)

L=

0.25 0.22 1.00

1.00 0 0

-0.25 1.00 0

U=

4.00 3.00 -2.00

0 5.75 1.50

0 0 3.17

5.15.7. Matriks jarang (sparse)

Dalam masalah sains dan teknik kita sering menemui permasalahan

yang melibatkan ukuran matriks yang sangat besar. Sedangkan elemen-

elemen yang berharga tidak sama dengan nol dari matriks tersebut jarang.

Bayangkan kalau ukuran matriks sangat besar, misalnya 1000 x 1000 dengan

diagonal berharga 2 dan diapit oleh elemen berharga -1.

Matlab memberikan cara yang mudah untuk menyatakan jenis

matriks semacam ini yaitu dengan menggunakan fungsi sparse. Bentuk

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 94


Supardi, M.Si

umum penggunaan fungsi sparse adalah

sparse(baris,kolom,masukan,m,n)

Contoh kasus sederhana, jika kita ingin menyatakan matriks ukuran

5 x 5 dengan elemen-elemen seperti di bawah ini

[ ]
2 −1 0 0 0
−1 2 −1 0 0
0 −1 2 −1 0
0 0 −1 2 −1
0 0 0 −1 2

maka caranya

>> p=sparse(1:5,1:5,2,5,5);

>> p=p+sparse(2:5,1:4,-1,5,5);

>> p=p+sparse(1:4,2:5,-1,5,5);

>> full(p)

ans =

2.00 -1.00 0 0 0

-1.00 2.00 -1.00 0 0

0 -1.00 2.00 -1.00 0

0 0 -1.00 2.00 -1.00

0 0 0 -1.00 2.00

Keterangan

 Pertama dibuat matriks ukuran 5 x 5 dengan diagonal berharga 2.

 kedua ditambahkan pada baris 2 hingga n dan kolom 1 hingga n-1

dengan harga -1.

 ketiga, ditambahkan pada kolom 2 hingga n dan baris 1 hingga n-1

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 95


Supardi, M.Si

dengan -1.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 96


Supardi, M.Si

SOAL LATIHAN

1. Diketahui dua buah vektor yaitu A=(1 -3 2 5 6) dan B=(4 1 3 5 1)

tentukan

(a) magnitud dari masing-masing vektor

(b) hasil perkalian antar elemen yang seletak

(c) hasil bagi antar elemen yang seletak.

2. Diketahui vektor A=(2+i -3+5i 5 1-3i 2).

(a) tentukan transpose matriks A.

(b) tentukan transpose konjugat dari matriks A.

(c) tentukan magnitud matriks A.

3. Anggaplah kita memiliki bilangan 3,2,3,1 dan 6. Buatlah vektor

kolom A dan vektor baris dengan elemen-elemen tersebut.

4. Bagaimanakah untuk memerintahkan Matlab untuk membuat

matriks dengan orde 7 x 7 dengan seperti di bawah ini

 
3 0 0 0 0 0 0
0 3 0 0 0 0 0
0 0 3 0 0 0 0
(a) A= 0 0 0 3 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 3 0
0 0 0 0 0 0 3

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 97


Supardi, M.Si

 
3 4 5 6 7 8 9
4 3 0 0 0 0 0
5 0 3 0 0 0 0
(b) A= 6 0 0 3 0 0 0
7 0 0 0 0 0 0
8 0 0 0 0 3 0
9 0 0 0 0 0 3

5. Jika diketahui A=[1,2,3,5,3] dan B=[ 4;3;2;5;2]. Tentukan

(a) hasil kasil cross vektor A dengan vektor B

(b) transpose dari ketor B

(c) hasil kali dot vektor A dengan vektor B'.

6. Diketahui dua buah matriks


3 2 −1 2 4
A= −2 1 1 3 2
8 2 −4 3 −5   4 1 −1 2 7
B= 6 3 0 3 6
1 −2 14 2 −5
(a) tentukan hasil perkalian matriks A dengan B.

(b) tentukan invers dari matriks A dan invers matriks B.

(c) tentukan AA-1 , AB, BB-1 dan A-1B-1.

6. Diketahui empat buah persamaan linier

2p + 3p + 4q -5s =10

p - 5p + 6q – 10s =-2

4p + 2q – 7r – 10s = 9

-2p + 10q + 2r – 4s = 6

(a) tentukan determinan dari matriks koefisien A.

(b) tentukan invers matriks koefisien.

(c) dapatkan nilai p, q, r dan s.

7. Diketahui satu set persamaan linier sebagai berikut

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 98


Supardi, M.Si

 
2 x5 y6 z =7
5 x−6 y2 z=1
−5 x−2 y8 z =−2

(a) gunakan bagi kiri untuk memperoleh x, y dan z.

(b) tentukan matriks L dan U dengan mendekomposisi matriks

koefisien A.

(c) dapatkan hasilnya setelah matriks L an U diperoleh.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 99


Supardi, M.Si

BAB 4

Menggambar Grafik Fungsi

5.1) Membuat Grafik Garis


Peranan grafik dalam bidang sains dan teknik adalah sangat penting.

Grafik dapat digunakan untuk menampilkan hasil suatu hasil penelitian

maupun observasi lapangan. Dengan menampilkan dalam sebuah grafik,

pembaca akan dengan mudah memahami atau masalah tertentu. Dapat

dibayangkan, misalnya kita memiliki data penelitan sebanyak 10.000 titik

data dan semua data disajikan dalam bentuk tabel, sudah tentu kita akan

pusing dibuatnya. Lain halnya, jika data tersebut disajikan dalam bentuk

grafik, maka dengan mudah kita dapat memahami hasil penelitian tersebut.

Untuk membuat sebuah grafik garis, fungsi yang kita gunakan

adalah plot. Fungsi ini memiliki bentuk berbeda tergantung pada argumen

input yang kita berikan. Sebagai contoh, misalnya kita memiliki data dalam

bentuk array dan kita simpan dalam vektor y, maka plot(y) akan

ditampilkan grafik elemen-elemen y terhadap indeks elemen-elemen

tersebut. Sedangkan, jika kita menentukan dua argumen x dan y maka

plot(x,y) akan ditampilkan grafik y versus x. contoh

y=10*rand(100,1);

plot(y)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 100


Supardi, M.Si

Gambar 4.1 Tampilan grafik y vs indeks y

Jika kita memiliki dua buah argumen x dan y, dimana 0 x 10 

dan y=cos  x  maka grafik y vs x dapat dilihat pada gambar 4.2.

x=0:pi/200:10*pi;

y=cos(x);

plot(x,y)

Gambar 4.2 Tampilan grafik y vs x

Kita juga dapat menggunakan perintah linspace untuk menentukan

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 101


Supardi, M.Si

domain fungsi, sehingga script di atas dapat dituliskan kembali menjadi

x=linspace(0,10*pi,200);

y=cos(x);

plot(x,y)

Secara umum, penggunaan perintah linspace mempunyai rumus

linspace(awal,akhir, jumlah_langkah)

Kita juga dapat membuat beberapa grafik dalam satu frame. Matlab

secara otomatis akan membedakan grafik-grafik tersebut dengan warna

yang berbeda-beda. Plot tiga grafik dalam satu frame dapat dilihat pada

gambar 4.3

x=linspace(0,2*pi,200);

y1=cos(x);

y2=cos(x-0.5);

y3=cos(x-1.0);

plot(x,y1,x,y2,x,y3)

Gambar 4.3 Tampilan tiga grafik dalam satu frame x-y.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 102


Supardi, M.Si

5.1.1. Menentukan Jenis Garis dan Jaring

Kita dapat menentukan jenis garis untuk menampilkan grafik yang

kita miliki, misalnya garis putus-putus, titik-titik, kombinasi garis dan titik

dan lain-lain. Sedangkan untuk menampilkan jaring-jaring pada frame, kita

dapat menggunakan perintah grid. Lihat contoh dibawah ini

x=linspace(0,2*pi,200);

y1=cos(x);

y2=cos(x-0.5);

y3=cos(x-1.0);

plot(x,y1,'-',x,y2,'o',x,y3,':')

grid

Gambar 4.4. Menampilkan grafik dengan style garis

berbeda

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 103


Supardi, M.Si

5.1.2. Warna, Jenis Garis dan Penanda

Fungsi plot dapat menerima argumen bewujud karakter maupun

string yang menyatakan warna, jenis garis dan penanda. Secara umum,

bentuk umum

plot(x,y,'JenisGaris_Penanda_Warna')

Argumen JenisGaris_Penanda_Warna berbentuk string dan diapit

oleh tanda petik tunggal.

 Jenis garis dapat berupa garis putus-putus (dash), titik-tiitk (dot)

dan lain-lain.

 Penanda dapat berupa tanda bintang (*), kotak (square), bulatan (o),

diamond, tanda silang (x) dan lain-lain.

 Warna dapat berupa merah (r), kuning (y), hijau (g), cian (C), hitam

(b) dan lain-lain.

Sebagai contoh perintah plot(x,y,'-squarer') akan menampilkan grafik vs x

dengan jenis grafik dash (-), penanda kotak (square) dan warna merah.

x=linspace(0,2*pi,200);

y=cos(x);

plot(x,y,'-squarer')

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 104


Supardi, M.Si

Gambar 4.5. Menampilkan grafik dengan style garis

diikuti kotak berwarna merah

Kita juga dapat menentukan warna dan ukuran garis grafik melalui

perintah-perintah

 LineWidth: menentukan ketebalan garis,

 MarkerEdgeColor: menentukan warna penanda atau warna tepian

penanda masif.

 MarkerFaceColor: menentukan warna muka penanda masif.

 MarkerSize: menentukan ukuran penanda.

x = -pi:pi/10:pi;

y = tan(sin(x)) - sin(tan(x));

plot(x,y,'--rs','LineWidth',3,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','g',...

'MarkerSize',5)

Script di atas akan menghasilkan grafik y vs x dengan

 Jenis garis putus-putus berwarna merah dengan penanda berbentuk

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 105


Supardi, M.Si

kotak ('--rs'),

 Tebal garis sama dengan 3

 Tepian penanda berwarna hitam (k),

 Muka penanda berwarna hijau (g),

 Ukuran penanda 5

Gambar 4.6. Menampilkan grafik dengan style garis berukuran 3 diikuti

kotak dengan kotak warna isi hijau dan warna tepian hitam dengan

ukuran kotak 5

5.1.3. Menambahkan Plot Grafik Baru pada Grafik yang ada

Kita dapat menambahkan grafik baru pada grafik sebelumnya

dengan perintah hold. Perintah ini akan aktif saat di on-kan atau hold on dan

tidak aktif saat diberi perintah hold off. Contoh

clear; close all;

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 106


Supardi, M.Si

x=1:100;

semilogx(x,'-','LineWidth',3);

hold on;

plot(1:5:500,1:100,'+');

hold off

Gambar 4.7. Menambahkan grafik pada grafik

terdahulu

5.1.4. Menggambar Titik-Titik Data

Kadang-kadang kita tidak ingin menghubungkan antar titik-titik

data yang ada dengan berbagai alasan. Untuk tujuan tersebut, maka atribut

atau property gambar hanya disertakan penanda (marker) saja.

clear; close all;

x = -pi:pi/10:pi;

y = tan(sin(x)) - sin(tan(x));

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 107


Supardi, M.Si

plot(x,y,'square')

Gambar 4.8. Menggambar titik-titik data

5.1.5. Menggambar dengan Penanda dan Garis

Untuk mengeplot grafik dengan garis dan penanda saja, dapat

dilakukan dengan mudah. Contoh,

x = 0:pi/15:4*pi;

y = exp(2*cos(x));

plot(x,y,'-r',x,y,'ok')

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 108


Supardi, M.Si

Gambar 4.9. Menggambar dengan garis dan

penanda

5.1.6. Plot Grafik untuk Data Berbentuk Matriks

Ketika kita memanggil perintah plot untuk mengeplot grafik data

bentuk vektor atau array, maka hasilnya dapat kita lihat seperti contoh-

contoh di atas. Nah, bagaimana jika data yang kita miliki berbentuk

matriks. Untuk memecahkan masalah ini, marilah kita ingat kembali bahwa

vektor memiliki ukuran 1×m atau m×1 Perintah plot(y) akan menampilkan

setiap elemen dalam kolom atau baris y terhadap indeks elemen vektor

tersebut. Demikian pula, perintah plot untuk data Y yang berbentuk

matriks akan menampilkan elemen pada setiap kolom atau baris matriks

terhadap indeks elemen. Jadi seandainya kita memiliki Y berukuran 10×10

, maka kita memiliki 10 (sepuluh) grafik. Sebagai contoh, fungsi peaks

merupakan fungsi dua variabel yang menghasilkan matriks 2 dimensi

dengan ukuran 49 x 49.

y=peaks;

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 109


Supardi, M.Si

plot(y)

Gambar 4.10 Contoh plot data berbentuk matriks

Jika kita perhatikan, grafik yang terbentuk terdiri atas 49 buah

dengan warna berbeda-beda. Secara umum, jika perintah plot digunakan

untuk mengeplot grafik fungsi dengan dua argumen dimana data yang

terbentuk berupa matriks 2 dimensi, maka

1. jika y adalah matriks dan x berupa vektor, maka perintah plot (x,y)

akan menampilkan grafik elemen pada kolom/baris matriks y

terhadap elemen vektor x.

2. jika x adalah matriks dan y berupa vektor, maka plot(x,y) akan

menampilkan grafik elemen matriks pada tiap-tiap kolom/baris

matriks x terhadap elemen vektor y. Contoh,

x=1:length(peaks);

plot(peaks,x)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 110


Supardi, M.Si

Gambar 4.11 Contoh plot data berbentuk matriks

5.1.7. Memberikan Label, Legend dan Judul Grafik

Pemberian label pada sumbu-sumbu grafik sangat penting untuk

memudahkan pemahaman terhadap makna grafik itu sendiri. Perintah yang

digunakan untuk tujuan tersebut antara lain

 xlabel : untuk memberikan label pada sumbu x

 ylabel : untuk memberikan label pada sumbu y

 zlabel : untuk memberikan label pada sumbu z

 tittle : memberikan judul garfik

 legend : untuk memberikan keterangan grafik

untuk lebih mudahnya perhatikan contoh di bawah ini,

clear; close all;

x=-2:0.1:2;

y=-2:0.1:2;

[X,Y]=meshgrid(x,y);

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 111


Supardi, M.Si

f=-X.*Y.*exp(-2*(X.^2+Y.^2));

mesh(X,Y,f);

xlabel('Sumbu x');

ylabel('Sumbu y');

zlabel('Sumbu z');

title('Contoh judul grafik');

legend('ini contoh legend')

Gambar 4.12 Contoh penggunaan label, legend dan judul grafik

5.1.8. Memberikan Teks Tambahan Pada Grafik

Teks tambahan kadang-kadang penting diberikan apabila grafik

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 112


Supardi, M.Si

yang digambar lebih dari satu. Untuk memberikan teks tambahan ini dapat

dilakukan dengan memberikan perintah gtext(). Sebagai contoh

clear; close all;

x=linspace(0,2*pi,200);

y1=cos(x);

y2=cos(x-0.5);

y3=cos(x-1.0);

plot(x,y1,x,y2,x,y3);

gtext('y1=cos(x)');gtext('y1=cos(x-0.5)');

gtext('y1=cos(x-1.5)');

Gambar 4.12 Contoh penggunaan perintah gtext()

Untuk memberika teks tambahan dapat juga dilakukan dengan cara

di bawah ini

clear; close all;

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 113


Supardi, M.Si

x=linspace(0,2*pi,200);

y1=cos(x);

y2=cos(x-0.5);

y3=cos(x-1.0);

plot(x,y1,x,y2,x,y3)

text(pi/2,cos(pi/2),'\leftarrowy1=cos(x)');

text(pi/3,cos(pi/3-0.5),'\leftarrowy1=cos(x-0.5)');

text(2*pi/3,cos(2*pi/3-1.0),'\leftarrowy1=cos(x-1.0)')

Gambar 4.13 penambahan perintah leftarrow

5.1.9. Penulisan Simbol, Huruf Yunani dan

Dibawah ini disajikan tabel tentang simbul dan cara penulisannya.

Penulisan simbul dapat disertakan dalam label, title, text maupun legend.

Tabel 2. Simbul dan cara penulisannya

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 114


Supardi, M.Si

Cara Cara
Simbol simbul
penulisan penulisan
\alpha α \epsilon ε
\beta β \phi φ
\gamma γ \chi χ
\delta δ \psi ψ
\eta η \Gamma Ψ
\zeta ζ \Omega Ω
\iota ι \Delta ∆
\theta θ \Theta Θ
\vartheta ϑ \Lambda Λ
\kappa κ \Xi Χ
\lambda λ \Pi Π
\nu ν \Sigma Σ
\mu µ \Phi Φ
\xi ξ \Epsilon Ε
\phi φ \Rho Ρ
\rho ρ \Kappa Κ

5.1.10. Membuat Plot Khusus

Grafik Berbentuk Bar

Matlab memiliki fungsi untuk menampilkan data dalam bentuk

grafik bar. Ada dua jenis grafik bar yaitu bar horisontal dan bar vertikal.

Fungsi-fungsi tersebut antara lain adalah bar, barh, bar3 dan bar3h. Contoh

Y = [5 2 1

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 115


Supardi, M.Si

873

986

555

4 3 2];

bar(Y)

Gambar 4.14. Grafik berbentuk bar 2D

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 116


Supardi, M.Si

Gambar 4.15. Grafik berbentuk bar 3D

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 117


Supardi, M.Si

Gambar 4.16. Grafik berbentuk bar 2D

5.2) Membuat Plot 3 Dimensi


Tabel 4.3 dibawah ini disajikan langkah-langkah pembuatan grafik 3

dimensi dari fungsi tertentu yang memuat data grafik maupun model objek

3 dimensi.

Tabel 4.3 Langkah-langkah membuat grafik 3D

No. Langkah-langkah Kode


1. Mempersiapkan data Z=peaks(20)

2. Pilih jendela dan posisi figure(1)


subplot(2,1,2)
grafik dalam jendela

gambar
3. Panggil fungsi untuk h = surf(Z); h=mesh(Z); h=contour(Z)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 118


Supardi, M.Si

menampilkan grafik
4. Atur peta warna dan colormap hot
shading interp
shading
set(h,'EdgeColor','k')

5. Tambahkan pencahayaan light('Position',[-2,2,20])


lighting phong

material([0.4,0.6,0.5,30])

set(h,'FaceColor',[0.7 0.7 0],...

'BackFaceLighting','lit')

6. Atur titi pandang grafik View([30,25])

set(gca,'CameraViewAngleMode','Manual')

7. Atur batas sumbu dan Axis([5 15 5 15 -8 8])


set(gca,'ZTickLabel','Negative|| ... Positive')
tick mark
8. Atur aspek rasio set(gca,'PlotBoxAspectRatio',...

[2.5 2.5 1])

9. Berikan tambahan xlabel('X Axis')


ylabel('Y Axis')
keterangan pada sumbu
zlabel('Function Value')
dan judul grafik
title('Peaks')

10. Mencetak grafik set(gcf,'PaperPositionMode',...

'auto')print -dps2

5.2.1. Plot garis dari data 3D

Apabila kita memiliki dua buah fungsi dengan argumen sama, maka

kita dapat menampilkan grafik 3D dari data tersebut. Demikian pula jika

kita memiliki 3 buah vektor dengan ukuran sama, maka kita juga dapat

menampilkannya menjadi grafik 3D. Contoh

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 119


Supardi, M.Si

t=-2*pi:pi/200:2*pi;

x=sin(t);

y=cos(t);

plot3(x,y,t);grid

Gambar 4.17 . Contoh grafik garis 3D

5.2.2. Plot data matriks

Apabila kita memiliki data yang sudah dibuat dalam bentuk matriks,

maka kita dapat menampilkannya dalam bentuk grafik. Grafik yang terbuat

merupakan plot setiap data dalam kolom matriks tersebut.

x=linspace(-2,2,200);

y=linspace(-2,2,200);

[X,Y] = meshgrid(x,y);

Z = X.*exp(-X.^2-Y.^2);

plot3(X,Y,Z)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 120


Supardi, M.Si

grid on

Gambar 4.18 . Contoh grafik 3D dari data

matriks

Matlab juga dapat menampilkan beberapa jenis grafik 3 dimensi

antara lain

No. Fungsi Keterangan


1. mesh, surf Plot grafik permukaan
2. mesh, surfc Plot permukaan dengan contour
3. meshz Plot permukaan dengan curtain plot
4. pcolor Plot permukaan flat
5. surfl
6. surface

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 121


Supardi, M.Si

5.2.3. Grafik dengan mesh, surf dan pcolor

sintak untuk plot grafik dengan mesh adalah sebagai berikut,

mesh(X,Y,Z)

mesh(Z)

mesh(...,C)

mesh(...,'PropertyName',PropertyValue,...)

meshc(...)

meshz(...)

h = mesh(...)

h = meshc(...)

h = meshz(...)

Contoh

x=-3:.125:3;

y=-3:.125:3;

[X,Y] = meshgrid(x,y);

Z = peaks(X,Y);

mesh(X,Y,Z);

axis([-3 3 -3 3 -10 5])

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 122


Supardi, M.Si

Gambar 4.19. Plot grafik 3D dengan fngsi mesh()

Gambar 4.20. Plot grafik 3D dengan fngsi meshc()

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 123


Supardi, M.Si

Gambar 4.21 . Plot grafik 3D dengan fngsi meshz()

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 124


Supardi, M.Si

Gambar 4.22 . Plot grafik 3D dengan fungsi pcolor()

Gambar 4.23 . Plot grafik 3D dengan fngsi surfl()

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 125


Supardi, M.Si

Gambar 4.24 . Plot grafik 3D dengan fungsi surface()

5.2.4. Memvisualkan fungsi dengan dua variabel

Apabila kita memiliki sebuah fungsi f(x,y) yakni fungsi dengan dua

variabel bebas x dan y, dimana a x b dan a  y b , maka tidak serta

merta dapat dibuat grafik fungsi f terhadap x dan y. Akan tetapi, ada satu

langkah yang harus dilakukan yaitu membuat vektor x dan y tersebut

menjadi matriks. Untuk membuat matriks vektor x dan y tersebut dapat

dilakukan dengan fungsi meshgrid.

clear; close all;

x=-8:.5:8;

y=-8:.5:8;

[X,Y] = meshgrid(x,y);

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 126


Supardi, M.Si

R = sqrt(X.^2 + Y.^2) + eps;

Z=sin(R)./R;

surf(X,Y,Z);

grid on

Dibawah ini disajikan data berbentuk matriks berasal dari

pengenaan fungsi meshgrid pada vektor x dan y.

x=1:3;

y=1:4;

[X,Y]=meshgrid(x,y);

X=

1 2 3

1 2 3

1 2 3

1 2 3

Y=

1 1 1

2 2 2

3 3 3

4 4 4

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 127


Supardi, M.Si

Gambar 4.25. Grafik 3D menggunakan fungsi meshgrid dari

fungsi Z=sin(R)./R

Matlab menyediakan banyak teknik untuk untuk memperindah isi

informasi dari grafik yang kita miliki. Di bawah ini diberikan contoh grafik

dengan menggunakan pencahayaan dan titik pandang yang sesuai

menggunakan fungsi-fungsi daspect, axis, camlight, view

clear; close all;

x=-8:.5:8;

y=-8:.5:8;

[X,Y] = meshgrid(x,y);

R = sqrt(X.^2 + Y.^2) + eps;

Z=sin(R)./R;

surf(X,Y,Z,'FaceColor','interp',...

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 128


Supardi, M.Si

'EdgeColor','none',...

'FaceLighting','phong')

daspect([5 5 1])

axis tight

view(-50,30)

camlight left

Gambar 4.26 . Grafik 3D menggunakan fungsi meshgrid

dari fungsi Z=sin(R)./R dengan menambahkan teknik

pencahayaan dan titik pandang yang sesuai

5.2.5. Plot permukaan untuk data nonuniform

Kita dapat menggunakan fungsi meshgrid untuk membuat jaring-

jaring dari titik-titik data sampel uniform. Selanjutnya, Matlab membangun

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 129


Supardi, M.Si

plot permukaan dengan cara menghubungkan elemen-elemen matriks yang

berdekatan untuk membuat sebuah mesh kuadrilateral. Untuk membuat

plot permukaan dari data yang nonuniform, pertama kita harus

menggunakanfungsi griddata untuk menginterpolasi nilai-nau surf seperti

basanya.

Dibawah ini diberikan contoh menampilkan data nonuniform

dengan plot permukaan. Contoh ini akan mengevaluasi fungsi sinc untuk

data yang dibangkitkan dari fungsi random (acak) untuk range tertentu,

dan kemudian membangkitkan data sample uniform untuk ditampilkan

sebagai plot permukaan.

Proses untuk membuat tampilan data nonuniform tersebut meliputi

tiga proses antara lain:

 Menggunakan linspace untuk mengenerate data pada range tertentu.

 Menggunakan fungsi meshgrid untuk mengenerate ploting grid

dengan ouput dari linspace.

 Menggunakan fungsi griddata untuk menginterpolasi data yang

beraturan menjadi data yang teratur.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 130


Supardi, M.Si

BAB 5

PEMROGRAMAN DAN TIPE DATA

5.1) 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


function c = fungsiku(a,b)
teks editor.
c = sqrt(a.^2 + b.^2);

 Memanggil M-File melalui >> a=2.4;

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 131


Supardi, M.Si

>> b= 3.1;

>> c=fungsiku(a,b)

command window c=

3.9205

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 2. Menerima argumen input dan

return argumen keluaran. mereturn argumen output.

2. Menjalankan data yang

berada di ruang kerja 3. Tidak menjalankan data yang ada

(workspace) di ruang kerja, melainkan dari

3. Sangat berguna apabila kita variabel internal yang secara

membutuhkan data default merupakan variabel lokal

sewaktu-waktu, karena fungsi.

data tersimpan dalam

ruang kerja. 4. Sangat berguna apabila di lain

waktu kita membutuhkan fungsi

tersebut, karena fungsi tersimpan

di current directory.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 132


Supardi, M.Si

5.2) 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; % perhitungan

rho(1,:) = 2*sin(5*theta).^2;

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

5.3) Fungsi

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 133


Supardi, M.Si

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. % baris H1

% FACT(N) mereturn factorial dari N, H! % teks bantuan

% biasanya dilambangkan N!

% FACT(N) hasilnya sama dengan PROD(1:N).

f = prod(1:n); % body fungsi

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

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 134


Supardi, M.Si

adalah fac, argumen input adalah a dan b, serta argumen output

adalah c.

 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.

5.3.1. 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


h t=sin 7 tsin 8t 

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))

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 135


Supardi, M.Si

Illustration 1:

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

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 136


Supardi, M.Si

3.1416 -0.0000

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
f  xi 
x i1= xi −
f '  xi 

Apabila fungsi nonlinier yang akan dicari akar persamaannya adalah


f  x =sin x−x , maka kita memerlukan turunan fungsi tersebut yaitu

f '  x=cos x −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.

✔ Dengan menggunakan inline, kita dapat membuat memperoleh akar

persamaan tersebut dengan seperti dibawah ini

clear; close all;

f=inline('sin(x)-x','x');

df=inline('cos(x)-1','x');

x=input('Masukkan terkaan awal :');

step=0;

tol=1e-2;

temp=1;

while (temp>=tol)

xlama=x;

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 137


Supardi, M.Si

x=x-f(x)/df(x);

step=step+1;

disp([x' f(x)']);

temp=abs(x-xlama);

end

if temp<=tol

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.

✔ 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.

Untuk menjalankan fungsi tersebut, hapuslah bagian inline dari

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 138


Supardi, M.Si

contoh program yang telah diberikan, kemudian panggillah nama

file newton melalui command window atau cukup tekan F5.

5.3.2. 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;

>> [J,M]=fungsiku(s)

J=

M=

Dari contoh di atas kita dapat menarik kesimpulan tentang fungsi

yaitu,

 Bentuk umum fungsi adalah

function [outarg1, outarg2, . . .] = nama_fungsi( inarg1, inarg2, . . . )

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 139


Supardi, M.Si

outarg1 = ... ;

outarg2 = ... ;

...

 Kata kunci fungsi

Sebuah fungsi harus diawali dengan kata kunci function.

 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 =

 Aturan Penamaan Fungsi

Penamaan fungsi harus sesuai dengan aturan penamaan variabel di

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 140


Supardi, M.Si

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

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

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 141


Supardi, M.Si

nargout.

function [y1,y2,y3] = myfunction(a, b, c)

disp( nargout );

...

5.3.3. Handle Fungsi

Contoh program pada subpasal 5.3.1 di atas adalah program untuk

menyelesaikan sebuah persamaan f(x)=0 dengan menggunakan metode

Newton Raphson. Metode ini membutuhkan ungkapan eksplisit f  x  dan

turunannya f '  x pada file fungsinya. Nah, ini kurang praktis karena kita

akan selalu mengedit file tersebut manakala fungsi yang akan dicari

akarnya berbeda.

Dengan menggunakan handle fungsi, kita dapat mengubah file

fungsi tersebut menjadi lebih umum. Artinya, fungsi tersebut akan dapat

digunakan untuk menyelesaikan f  x =0 bagaimanapun bentuknya.

Sebagai ilustrasi sederhana, perhatikan contoh fungsi handle berikut ini

>> fhandle=@cos;

>> y=feval(fhandle,pi)

y=

-1

Perhatikan bahwa ungkapan feval(fhandle,pi) sama saja dengan ungkapan

cos(pi). Jadi, ungkapan

>> fhandle = @ cos;

akan membuat sebuah handle untuk fungsi cos. Untuk program Newton

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 142


Supardi, M.Si

Raphson pada subpasal 5.3.1 dapat dituliskan

function [x,f,conv]=newton2(fh,dfh,xo)

x=xo;

step=0;

tol=1e-2;

temp=1;

while (temp>=tol)

xlama=x;

x=x-feval(fh,x)/feval(dfh,x);

step=step+1;

disp([x' feval(fh,x)']);

temp=abs(x-xlama);

end

if temp<=tol

conv=1;

else

conv=0;

end

f=feval(fh,x);

Untuk menjalankan file fungsi newton2.m perhatikan di bawah ini

>> xo=1;

>> fh=@f;

>> dfh=@df;

>> [x,f,conv]=newton2(fh,dfh,xo)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 143


Supardi, M.Si

Tetapi untuk tujuan lebih praktis lagi, kita dapat mendefinisikan

fungsi melalui command window, misalnya

>> xo=1;

>> fh=inline('x.^2-3*x-4');

>> dfh=inline('2*x-3');

>> [x,f,conv]=newton2(fh,dfh,xo)

5.3.4. MenDebug Script

Debug adalah proses langkah demi langkah untuk mengetahui

kemungkinan kesalahan pada script yang kita buat. Untuk mengetahui

bagaimana cara mendebug secara intraktiv, marilah kita buka kembali file

newton.m.

➔ Untuk melihat script newton.m di command window beserta nomor

barisnya, ketiklah perintah dbtype newton.m

>> dbtype newton.m

1 clear; close all;

2 x=input('Masukkan terkaan awal :');

3 step=0;

4 tol=1e-2;

5 temp=1;

6 while (temp>=tol)

7 xlama=x;

8 x=x-f(x)/df(x);

9 step=step+1;

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 144


Supardi, M.Si

10 disp([x' f(x)']);

11 temp=abs(x-xlama);

12 end

13 if temp<=tol

14 disp('Akar persamaan ditemukan di x =');

15 disp(x);

16 else

17 disp('Akar persamaan tidak ditemukan.');

18 end

➔ Untuk masuk ke mode Debug, kita perlu memberi tanda breakpoint

pada baris tertentu, misalnya baris nomor 2. untuk memberi tanda

ini, cukup klik pada tanda dash (-) di sebelah kanan nomor baris

perintah di editor window.

➔ Setelah mengeset breakpoint, mulai kita jalankan script tersebut

dengan menekan tombol F5 atau klik menu Debug > Run. Kita juga

dapat menjalankan script tersebut dari command window.

➔ Ketika script mulai jalan, di command window akan muncul simbol

K di sebelah kiri prompt (K>>). Ini menunjukkan bahwa kita berada

dalam mode Debug. Di bagian editor window akan muncul tanda

anak panah berwarna hijau di sebelah kanan tanda breakpoint.

Tanda anak panah ini menunjukkan baris perintah berikutnya yang

akan dijalankan.

➔ Untuk menlanjutkan langkah berikutnya maka klik menu Debug >

Step atau tekan tombol F10. Saat sampai pada baris nomor 5, kita

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 145


Supardi, M.Si

perlu memberikan masukan x melalui command window.

➔ Ketika kita sampai pada baris nomor 8, klik F11 maka debuger akan

mengantar kita ke fungsi f.m dan df.m.

➔ Perhatikan tanda anak anak panah akan berulang-ulang dari baris

perintah nomor 6 hingga 12. Kita tahu bahwa program ini akan

mencari akar hingga terpenuhi syarat yang diberikan.

➔ Setelah syarat yang diberikan terpenuhi maka anak panah akan

menuju ke baris perintah berikutnya.

5.3.5. Debug Fungsi

Disamping mendebug script, kita juga dapat mendebug fungsi. Akan

tetapi,fungsi yang dibuat harus dijalankan terlebih dahulu. Sayangnya, kita

tidak dapat langsung menjalankan fungsi tersebut dari jendela

editor/debuger. Jadi, kita masuk dulu ke jendela command window dan

memberikan masukan argumen input terlebih dahulu.

➔ Buka file newton2.m melalui jendela editor.

➔ Berikan breakpoint pada baris 2 (x=xo).

➔ Di jendela command, buatlah handle fungsi untuk f dan df kemudian

panggil newton2.m.

>> xo=1;

>> fh=@f;

>> dfh=@df;

>> [x,f,conv]=newton2(fh,dfh,xo);

➔ Selanjutnya debug akan dimulai dari baris dimana kita memberikan

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 146


Supardi, M.Si

breakpoint.

5.3.6. Operator Aritmatik

Matlab menyediakan operator aritmatika seperti terlihat pada tabel

di bawah ini.

Operator Deskripsi
+ Penambahan
- Pengurangan
.* Perkalian
./ Bagi kanan
.\ Bagi kiri
: Operator kolon
.^ Pangkat
.' Transpose
' Transpose konjugat kompleks
* Perkalian matriks
/ Bagi kanan matriks
\ Bagi kiri matriks
^ Pangkat matriks

5.3.7. Operator relasi

Matriks juga menyediakan operator relasi sebagai berikut

Operator Deskripsi

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 147


Supardi, M.Si

< Kurang dari


<= Kurang dari atau sama dengan
> Lebih dari
>= Lebih dari atau sama dengan
== Sama dengan
~= Tidak sama dengan

Operator relasi berfungsi membandingkan elemen-elemen dari suatu

lmatriks (larik) terhadap elemen-elemen seletak dari matriks (larik) lain.

Contoh

>>P=[2,3,4;3,4,5;5,6,7];

>> Q=[3,2,4;2,4,5;5,1,2];

>> P==Q

ans =

0 0 1

0 1 1

1 0 0

>> P<Q

ans =

1 0 0

0 0 0

0 0 0

>> P<=Q

ans =

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 148


Supardi, M.Si

1 0 1

0 1 1

1 0 0

>> P>Q

ans =

0 1 0

1 0 0

0 1 1

>> P>=Q

ans =

0 1 1

1 1 1

1 1 1

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 149


Supardi, M.Si

BAB 6

KONTROL ALIRAN

5.1) Pendahuluan
Ada delapan pernyataan kontrol kendali yang disediakan di dalam

Matlab. Kedelapan pernyataan tersebut antara lain

1. if, termasuk di dalamnya pernyataan else dan elseif. Pernyataan ini

menjalankan kelompok pernyataan berdasarkan pada syarat logika.

2. switch, termasuk di dalamnya adalah case dan otherwise. Statement

ini mengeksekusi kelompok pernyataan berbeda bergantung pada

harga syarat kondisi.

3. while, menjalankan group pernyataan dengan jumlah iterasi tak

terbatas berdasarkan pada syarat logika.

4. for menjalankan group pernyataan dengan jumlah iterasi telah

ditentukan.

5. continue melewatkan kendali ke iterasi berikutnya untuk loop for

atau while.

6. break berfungsi menghentikan eksekusi looping for atau while.

7. try...catch mengubah kendali aliran apabila ditemukan kesalahan

selama proses eksekusi.

8. return menyebabkan eksekusi kembali ke fungsi invoking. Semua

aliran membangun pemnggunaan end untuk menunjukkan akhir

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 150


Supardi, M.Si

dari blok kontrol aliran.

5.2) Pernyataan Bersyarat if, else, dan elseif


Pernyataan if digunakan untuk menyeleksi suatu kondisi yang

memungkinkan dua atau lebih pilihan. Bila proses yang diseleksi terpenuhi

atau bernilai benar, maka pernyataan yang ada di dalam blok if akan

diproses dan dikerjakan. Sedangkan jika syarat tidak dipenuhi maka

program akan diakhiri. Dalam bentuk diagram alir percabangan if dapat

digambarkan seperti pada gambar 6.1

tidak
if (kondisi)

ya

Perintah

Gambar 6.1 Diagram alir percabangan if

Bentuk umum struktur kondisi if adalah :

if (syarat)

pernyataan

Dasar-Dasar Pemrogramanend
Matlab Untuk Sains dan Teknik 151
Supardi, M.Si

Keterangan

Apabila pernyataan logika berharga benar (true), maka seluruh

pernyataan atau perintah yang berada diantara if dan end akan dijalankan.

Sebaliknya, jika pernyataan logika berharga salah (false), maka seluruh

perintah/pernyataan yang berada diantara if dan end tidak akan dijalankan

karena Matlab akan langsung menuju end.

Syarat biasanya merupakan pernyataan logika, yakni pernyataan

yang mengandung operator relational yang berharga benar atau salah.

Dibawah ini disajikan operator relasi.

Operator relasi Arti


< Kurang dari
<= Kurang dari atau sama dengan
> Lebih dari
>= Lebih dari atau sama dengan
== Sama dengan
~= Tidak sama dengan

Beberapa contoh untuk pernyataan logika yang menggunakan

operator relasi beserta artinya.

b^2-4*a*c<0 b2 −4 a c0

b^2>4*a*c 2
b 4 a c
b^2-4*a*c==0 2
b −4 a c =0
b~=4 b≠4

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 152


Supardi, M.Si

Contoh 6.1

a=2;

if mod(a,2) == 0

disp('Pernyataan benar..!!')

end

Disamping operator relasi akan dibutuhkan pula operator logika

yang macamnya antara lain

Operator Lambang Arti

logika
And & Dan
Or | Atau
Not ~ Bukan
Xor Eksklusiv Or

Di bawah ini disajikan tabel harga dari pernyataan dengan operator

logika

a b a&b a|b ~a ~b a xor b

TRUE TRUE TRUE TRUE FALSE FALSE FALSE

TRUE FALSE FALSE TRUE FALSE TRUE TRUE

FALSE TRUE FALSE TRUE TRUE FALSE TRUE

FALSE FALSE FALSE FALSE TRUE TRUE FALSE

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 153


Supardi, M.Si

Contoh

Akan diberikan beberapa contoh berkaitan dengan penggunaan

operator logika seperti di bawah ini

5.3) Pernyataan Bersyarat if-else


Dalam pernyataan bersyarat if-else setidaknya terdapat dua

pernyataan. Jika syarat yang diperiksa bernilai benar atau terpenuhi maka

pernyataan pertamalah yang akan dijalankan, tetapi apabila syarat yang

diperiksa tidak memenuhi atay bernilai salah maka pernyataan yang

kedualah yang akan dijalankan. Blog program if-else dapat digambarkan

dengan diagram pada gambar 4.2.

Bentuk umumnya adalah sebagai berikut :

if(syarat)

pernyataan A

else

pernyataan B

Keterangan

✗ pernyataan A dan pernyataan B dapat berupa satu atau lebih

pernyataan

✗ Apabila pernyataan bersyarat bernilai benar, maka seluruh

pernyataan A yang berada diantara if dan else dijalankan.

✗ Sebaliknya, syarat tidak terpenuhi atau bernilai salah maka

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 154


Supardi, M.Si

pernyataan B yang berada diantara else dan end yang akan

dijalankan

tidak
if (kondisi)

ya

Perintah Perintah

Gambar 4.2 Diagram alir percabangan if…else

Contoh Program 6.2

x=input('Masukkan harga x:');

if (x>3)

disp('Pernyataan benar.');

disp('Pernyataan benar sekali..');

else

disp('Pernyataan salah.');

disp('Pernyataan salah sekali..');

end

5.4) Pernyataan Bersyarat elseif


Penggunaan pernyataan bersyarat else if akan memberikan solusi

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 155


Supardi, M.Si

kepada kita apabila terdapat lebih dari satu syarat yang ada untuk

menjalankan masing-masing pernyataan apabila syarat yang diberikan

terpenuhi.

Pernyaan else if akan dieksekusi apabila syarat yang dberikan pada if

sebelumnya (atau elseif sebelumnya) berharga salah (0). Pernyaaan ini

selanjutnya akan mengeksekusi perintah/pernyataan di dalamnya apabila

syarat logikanya berharga benar (1). Bentuk umum dari pernyataan

bersyarat elseif maka adalah

if(syarat1)

pernyataan/perintah A

elseif (syarat2)

pernyataan/perintah B

elseif(syarat3)

pernyataan/perintah C

..........

else
Dari bentuk umum di atas dapat dijelaskan sebagai berikut

✗ Setelah syarat1 diuji, maka jika berharga benar maka

pernyataan/perintah A akan dijalankan. Matlab kemudian menuju ke

pernyataan berikutnya setelah end.

✗ Jika syarat1 berharga salah, maka Matlab akan mengecek syarat2.

Jika berharga benar maka pernyataan/perintah B akan dijalankan.

Matlab kemudian akan menjalankan pernyataan berikutnya setelah

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 156


Supardi, M.Si

end.

✗ Dengan cara ini, maka semua syarat akan diuji hingga syarat yang

terpenuhi ditemukan. Jika sudah ditemukan maka elseif dibawahnya

sudah tidak akan dicek lagi.

✗ Apabila tidak ada satupun syarat dipenuhi, maka

pernyataan/perintahsetelah else yang akan dijalankan.

Ya
Perintah …
If
Perintah ....

Tidak
Ya Perintah …
elseif Perintah ....

Tidak
Ya Perintah …
elseif Perintah ....

Tidak

Perintah …
else Perintah ....

Gambar 6.3 Diagram alir pernyataan elseif

Contoh Program 6.3

n=input('Masukkan harga n:')

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 157


Supardi, M.Si

if n < 0 % jika n negatif, ada pesan salah.

disp('Masukan harus bilangan positif');

elseif rem(n,2) == 0 % jika n posisif dan bulat,

% kemudian bagi dengan 2

A = n/2;

else

A = (n+1)/2; % jika n positif dan ganjil

% tambahkan 1,kemudian bagi dengan 2.

end

5.5) Pernyataan bersyarat if bersarang


Pernyataan ini sangat penting untuk masalah-masalah yang memiliki

lebih dari dua cabang. Mengapa pernyataan ini disebut pernyataan

bersarang, karena di dalam pernyataan if ada pernyataan if lagi. If yang

kedua ini dapat berada di dalam if sendiri atau berada di dalam else. Untuk

lebih jelasnya lihatlah diagram alir 6.4. Bentuk umum dari pernyataan if

bersarang adalah

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 158


Supardi, M.Si

if (syarat)

perintah/pernyataan

if (syarat)

perintah/pernyataan

else

perintah/pernyataan

end

else

perintah/pernyataan

if (syarat)

perintah/pernyataan

Contoh Program 6.4

a=input('Masukkan a:');

if mod(a,2)==0

fprintf('%i adalah bilangan genap\n',a);

if (a>5)

fprintf('%i lebih besar 5',a);

else

fprintf('%i kurang dari 5',a);

end

else

fprintf('%i adalah bilangan ganjil\n',a);

if (a<5)

fprintf('%i kurang dari 5',a);

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 159


Supardi, M.Si

else

fprintf('%i lebih besar dari 5',a);

end

end

tidak
if (kondisi)

ya
Perintah
Perintah

if (kondisi)
if (kondisi)

Perintah Perintah Perintah Perintah

Perintah Perintah

Gambar 6.4 Diagram Alir Pernyataan If Bersarang

5.6) Operator Logika

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 160


Supardi, M.Si

Pernyataan logika yang lebih rumit dapat disusun dari tiga operator

logika yaitu and (&), or (|) dan not (~). Sebagai contoh dalam penyelesaian

persamaan kuadrat berbentuk

ax 2bxc=0

akan memiliki akar yang berharga -b/(2a) apabila diskriminan b 2−4 a c=0

dan a≠0 . Jika dinyatakan dalam Matlab

if (b^2-4*a*c)==0 & (a~=0)

x=-b/(2*a);

end

Gambar 6.5 Grafik fungsi kuadrat dengan dua akar yang sama

5.7) Memberikan Kriteria Nilai

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 161


Supardi, M.Si

Adakalanya kita memerlukan cara untuk memberikan nilai dari hasil

ujian semester dengan huruf. Penggunaan else-if merupakan cara yang

tepat untuk melakukan hal demikian. Biasanya, kita akan menggunakan

operator logika untuk membuat kriteria nilai. Tentunya, itu tidak salah..!

Tetapi, ada baiknya juga kalau kita membuat kriteria dengan cara yang

lebih efisien tanpa menggunakan operator logika. Coba sekarang lihat

contoh dibawah ini.

%Program kriteria Nilai degan operator logika

nilai = 100*rand;

disp(nilai);

if (nilai>=80)

disp('Nilai = A');

elseif (nilai>=70) & (nilai<80)

disp('Nilai = B');

elseif (nilai>=60) & (nilai<70)

disp('Nilai = C');

elseif (nilai>=60) & (nilai<70)

disp('Nilai = C');

elseif (nilai>=50) & (nilai<60)

disp('Nilai = C');

else

disp ('Nilai = D');

end

Tanpa menggunakan operator logika pun kita dapat melakukan hal

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 162


Supardi, M.Si

yang sama

%Program kriteria Nilai degan tanpa operator logika

nilai = 100*rand;

disp(nilai);

if (nilai>=80)

disp('Nilai = A');

elseif (nilai>=70)

disp('Nilai = B');

elseif (nilai>=60)

disp('Nilai = C');

elseif (nilai>=50)

disp('Nilai = D');

else

disp ('Nilai = E');

end

5.8) switch-case
Pernyataan switch akan mengeksekusi sekelompok perintah/

pernyataan berdasarkan pada harga variabel atau ekspresi. Bentuk dasar

dari switch adalah

Pernyataan switch bekerja dengan cara membandingkan masukan

(input) ekspresi dengan harga pada tiap-tiap peryataan case. Untuk

ekspresi numerik, pernyataan case bernilai benar apabila (nilai=ekspresi).

Untuk ekspresi string, pernyataan case bernilai benar apabila

strcmp(nilai,ekspresi).

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 163


Supardi, M.Si

switch ekspresi (skalar atau string)


case nilai1
pernyataan % dieksekusi jika ekspresi adalah nilai1
case nilai2
pernyataan % dieksekusi jika ekspresi adalah nilai2
..... .
......
otherwise
pernyataan % dieksekusi jika ekspresi tidak cocok
% dengan case manapun
end

Dari bentuk umum penggunaan switch di atas, maka pernyataan

switch terdiri atas beberapa blok antara lain:

➔ switch diikuti oleh ekspresi yang mana dapat berupa skalar

(bilangan) maupun string.

➔ Sejumlah grup case yang masing-masing diikuti oleh nilai ekspresi.

Nilai ekspresi ini berada dalam satu baris dengan case. Baris

dibawahnya berisi pernyataan-pernyataan yang akan dijalankan

apabila ekspresi nilai sesuai dengan ekspresi pada switch. Blok case

akan berakhir saat ditemukan blok otherwise.

➔ Blok otherwise. Blok ini ada untuk mengantisipasi apabila nilai

eksepresi pada switch tidak sama dengan nilai ekspresi pada case

manapun. Pernyataan-pernyataan yang berada dalam blok ini akan

berakhir saat bertemu dengan pernyataan end.

➔ Pernyataan end.

Dibawah ini diberikan sebuah contoh penggunaan pernyataan

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 164


Supardi, M.Si

switch-case. Pernyataan switch akan mengecek variabel masukan untuk

nilai tertentu. Apabila variabel masukan adalah 1, 2 atau 3 , maka

pernyataan case akan menampilkan luas masing-masing untuk kubus,

persegi panjang dan lingkaran. Sedangkan, apabila variabel masukan bukan

1,2 atau 3, maka switch akan langsung menuju ke otherwise.

% Contoh Program 6.5

disp('Pilih salah satu program..\n');

disp('1: menghitung luas bujur sangkar: \n');

disp('2: menghitung luas persegi panjang: \n');

disp('3: menghitung luas lingkaran: ');

no=input('\n Anda ingin menghitung luas 1,2 atau 3 \n');

switch no

case 1

a=input('masukkan panjang sisi bujur sangkar:');

luas=a^2;

fprintf('Luas bujur sangkar adalah %f \n',luas);

case 2

a=input('masukkan panjang persegi panjang: ');

b=input('masukkan lebar persegi panjang: ');

luas=a*b;

fprintf('Luas persegi panjang adalah %f',luas);

case 3

a=input('masukkan jari-jari lingkaran :');

luas=pi*r^2;

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 165


Supardi, M.Si

fprintf('Luas lingkaran adalah %f ',luas);

otherwise

fprintf('Ulangi pilihan yang ada...!!')

end

Pernyataan switch juga dapat digunakan untuk menghandle multi

syarat dalam satu case.

%Contoh Program 6.6

disp('Pilih salah satu program..\n');

disp('1: menghitung luas bujur sangkar: ');

disp('2: menghitung luas persegi panjang: ');

disp('3: menghitung luas persegi panjang: ');

disp('4: menghitung luas persegi panjang: ');

no=input('Anda ingin menghitung luas 1,2 atau 3 \n');

switch no

case 1

a=input('masukkan panjang sisi bujur sangkar:');

luas=a*a;

fprintf('Luas bujur sangkar adalah %f \n',luas);

case {2,3,4}

a=input('masukkan panjang persegi panjang: ');

b=input('masukkan lebar persegi panjang: ');

luas=a*b;

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 166


Supardi, M.Si

fprintf('Luas persegi panjang adalah %f',luas);

otherwise

disp('Ulangi pilihan yang ada...!!')

end

5.9) while
Pernyataan while akan menjalankan pernyataan atau sekelompok

pernyataan secara berulang-ulang selama kontrol perulangan berharga

benar (1). Secara umum, bentuk dari perulangan while adalah

while (syarat)
pernyataan
end

Contoh Program 6.7

Program di bawah ini akan mencari n bilangan pertama

perjumlahan bilangan interger yang berharga <100. Algoritma untuk

membuat program ini adalah

 inisialiasi untuk jum

 inisialisai untuk n

 ulang hingga syarat sum(1:n)< jum terpenuhi

 cetak n

 gantikan n dengan n+1

 akhiri perulangan

%program mencetak bilangan

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 167


Supardi, M.Si

jum=100;

n = 1;

while sum(1:n) < jum

disp(n)

n = n + 1;

end

Jika dijalankan hasilnya adalah

1
2
3
4
5

Contoh Program

Akan dibuat sebuah program Matlab berupakan tebak-tebakan

angka dengan algoritma sebagai berikut

✔ Bangkitkan bilangan random

✔ Berikan tebakan bilangan tersebut

✔ Selama tebakannya salah

➢ Jika tebakan terlalu rendah

▪ Katakan bahwa tebakannya terlalu rendah

➢ Sebaliknya

▪ Katakan bahwa tebakannya terlalu tinggi

➢ Berikan tebakan yang baru lagi

✔ Selesai

Penyelesaian

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 168


Supardi, M.Si

Progra Matlab yang dapat disusun dengan algoritma tersebut cukup

mudah seperti di bawah ini

bil=round(10*rand);

tebak=input('MAsukkan tebakanmu :');

while (bil~=tebak)

if (tebak<bil)

disp('Tebakan terlalu rendah..!');

else

disp('Tebakan terlalu tinggi..!');

end

tebak=input('Masukkan tebakan yang baru :');

end

disp('Selamat tebakanmu benar..!!')

Contoh Program 6.8

Sekarang kita akan mencetak pola-pola bilangan dengan yang

hasilnya seperti gambar di bawah ini

1 2

1 2 3

1 2 3 4

1 2 3 4 5

1 2 3 4 5 6

Penyelesaian

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 169


Supardi, M.Si

Marilah kita membuat algortima untuk mencetak pola bilangan

tersebut

 inisialiasasi I

 perulangan pertama hingga i<=6

 inisialisasi x

 perulangan kedua hingga x<=i

 cetak x

 gantikan x dengan x+1

 akhiri perulangan kedua

 lompat ke baris berikutnya

 gantikan i dengan i+1

 akhiri perulangan pertama

%Program mencetak pola bilangan

i=1;

while(i<=6)

x=1;

while(x<=i)

fprintf('%i',x);

x=x+1;

end

fprintf('\n');

i=i+1;

end

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 170


Supardi, M.Si

Contoh Program ...

Buatlah sebuah program Matlab untuk menghitung jumlahan

berikut ini
1−1/31 /5−1/71/9−⋯

hingga suku terkahir kurang dari 10−10

Penyelesaian

Sebelum kita membuat progra Matlab, kita perlu membuat

algoritmanya terlebih dahulu

 inisialisasi jum=0

 inisialisai tol=10−10

 inisialisasi sign=-1

 inisialisasi k=1

 inisialisasi suku=1

 selama (suku>tol)

➔ sign=-sign

➔ suku=1/(2*k-1)

➔ jum=jum+sign*suku

➔ gantikan k dengan k+1

 Cetak hasilnya

 Selesai

Selanjutnya, kita akan membuat program Matlabnya

jum=0;

tol=1e-2;

sign=-1;

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 171


Supardi, M.Si

k=1;

suku=1;

while (suku > tol)

sign=-sign;

suku=1/(2*k-1);

jum=jum+sign*suku;

k=k+1;

end

disp(jum)

5.10) Gerak Peluru


Gerak perluru adalah bahasan yang sudah sangat familiar baik

dalam sains maupun teknik. Gerak peluru merupakan perpaduan antara

gerak lurus beratura (GLB) dan gerak lurus berubah beraturan (GLBB).

Komponen GLB berada pada sumbu x dan komponen GLBB berada pada

sumbu y.

 Jarak yang ditempuh oleh peluru selama t detik pada arah sumbu x

adalah
x=v ox t

 Sedangkan tinggi peluru setelah t detik dapat digambarkan dengan


1 2
y=v oy t− g t
2
Nah, sekarang kita ingin mengetahui seberapa lama peluru terbang

di udara beserta lintasannya. Algoritma dari program yang akan kita

jalankan

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 172


Supardi, M.Si

 inisialisasi untuk step waktu dt

 inisialisasi untuk percepatan grafitasi g

 inisialisasi kecepatan awal vo

 Masukan untuk sudut tembakan

 Menentukan kecepatan awal ke arah x dan y masing-masing vox dan

voy

 inisialisasi untuk jarak x, tinggi y dan waktu tempuh t.

 memberikan nama file data yang akan disimpan

 selama y>=0

➔ menampilkan data

➔ menyimpan data dalam hardisk

➔ menggantikan t dengan t+dt

➔ menentukan jarak tempuh kearah sumbu x dan y

 mengambil data dari hardisk (load)

 menampilkan dalam grafik

Jika dibuat program Matlab maka hasilnya adalah sebagai berikut

dt=0.01;

g=9.8;

vo=10;

sudut=input('Masukkan sudut tembakan :');

sudut=sudut*pi/180;

vox=vo*cos(sudut);

voy=vo*sin(sudut);

x=0;y=0;t=0;

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 173


Supardi, M.Si

fid=fopen('peluru.txt','w');

while (y>=0)

disp([x' y' t'])

fprintf(fid,'%f %f %f\n',x,y,t);

t=t+dt;

x=vox*t;

y=voy*t-1/2*g*t^2;

end

fclose(fid);

load peluru.txt;

x=peluru(:,1);

y=peluru(:,2);

t=peluru(:,3);

plot(x,y)

grid on

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 174


Supardi, M.Si

Gambar. Lintasan peluru yang ditembakkan

5.11) Perulangan for


Struktur perulangan for biasa digunakan untuk mengulang suatu

proses yang telah diketahui jumlah perulangannya. Dari segi penulisannya,

struktur perulangan for tampaknya lebih efisien karena susunannya lebih

simpel dan sederhana. Secara default, penambahan indeks adalah 1, tetapi

kita dapat mengeset sendiri misalnya penambahannya 2, 3 atau berapapun

bahkan dapat pula negatif. Untuk penambahan positif, perulangan akan

berakhir manakala indeks sudah lebih dari yang tentukan. Sedangkan

untuk penambahan negatif, perulangan berakhir saat indeks lebih kecil dari

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 175


Supardi, M.Si

yang ditentukan. Secara umum, sintaks for adalah sebagai berikut

for indeks =i:k


pernyataan/perintah
end

atau

for indeks =i:m:k


pernyataan/perintah
end

Keterangan

✔ i:k merupakan vektor dengan elemen-elemen i ,i1,i2,⋯, k

✔ i :m: k adalah vektor dengan elemen-elemen i ,im ,i2 m ,⋯

hingga elemen terakhir tidak lebih dari k jika m>0 dan elemen

terakhir tidak kurang dari k jika m<0.

✔ Indeks merupakan bentu variabel.

Contoh program di bawah ini akan mencetak sebuah kalimat

berbunyi “Aku mahasiswa semester 5” sebanyak lima kali dengan

mengunakan pernyataan perulangan for.

%Contoh Program 6.9

%contoh perulangan for

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 176


Supardi, M.Si

N=5;

for i=1:N

fprintf('%i. Aku mahasiswa semester 5 \n',i);

end

Contoh Program 6.10

Buatlah sebuah program Matlab untuk menampilkan pola bilangan

seperti di bawah ini.

1 2

1 2 3

1 2 3 4

1 2 3 4 5

1 2 3 4 5 6

Penyelesaian

Mari kita buat algoritmanya terlebih dahulu

 tentukan perulangan pertama (6 kali) untuk menentukan

deretan bilangan ke bawah (baris) dengan variabel i.

 tentukan perulangan kedua (6 kali) untuk menentukan

deretan bilangan ke kanan (kolom) dengan variabel j.

 Cetak bilangan j.

 akhiri perulangan kedua

 lompat ke baris berikutnya.

 Akhiri perulangan kedua

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 177


Supardi, M.Si

% Program mencetak pola bilangan

for i=1:6

for j=1:i

fprintf('%5i',j);

end

fprintf('\n');

end

Contoh Program 6.11

Sekarang misalnya kita ingin mencari sebuah akar dari bilangan a=7,

kemudian algoritma yang diberikan adalah sebagai berikut

 inisialisasi a

 inisialisasi terhadapa x dengan a/2

 lakukan perulangan hingga 10 kali dengan for

 gantikan x dengan (x+a/2)/2

 tampilkan

 selesai

Dengan algoritma yang telah ditulis di atas maka kita dapat menulis

program sebagai berikut.

a=7;

x=a/2;

disp(['Menghitung pendekatan sqrt(a) jika a=',num2str(a)]);

for i=1:5

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 178


Supardi, M.Si

x=(x+a/x)/2;

disp(x);

end

disp(['Harga pendekatan sqrt(2) adalah ',num2str(x)])

disp('Harga perhitungan Matlab sqrt(2) adalah:')

disp(sqrt(a))

Jika dijalankan hasilnya adalah

Menghitung pendekatan sqrt(a) jika a=7

2.7500

2.6477

2.6458

2.6458

2.6458

Harga pendekatan sqrt(2) adalah 2.6458

Harga perhitungan Matlab sqrt(2) adalah:

2.6458

5.12) Menghidari perulangan for dengan Vektor


Sebagaimana pada bahasa pemrograman tingkat tinggi lainnya,

bentuk perulangan for merupakan bentuk paling dasar. Namun dengan

munculnya Matlab, maka ada cara lain untuk menyatakan perulangan

selain dengan for. Cara yang ditawarkan oleh Matlab ini berbasis pada

vektor.

Jika dipandang dari waktu komputasi yang ditawarkan dengan

perulangan berbasis vektor, maka waktu yang dibutuhkan jauh lebih

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 179


Supardi, M.Si

pendek. Dibawah ini diberikan contoh perulangan

Contoh Program ....


1000000
Hitunglah hasil jumlahan dari ∑ n2
n=1

Cara 1 dengan perulangan for

tic

sum=0;

N=10000;

for n=1:N

sum=sum+n^2;

end

toc

Hasilnya adalah

y = 333333833333127550.000000

elapsed_time =

2.9840e+000

Cara 2 dengan vektor

tic

N=1000000;

n=1:N;

y=sum( n.^2 )

toc

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 180


Supardi, M.Si

Hasilnya adalah

y=

3.3333e+017

elapsed_time =

0.0460
1000000
Dari hasil eksekusi program jumlahan ∑ n2 kita dapat melihat
n=1

bahwa dengan perulangan berbasis vektor waktu yang dibutuhkan jauh

lebih pendek dari penggunaan for.

Contoh Program .........

Buatlah sebuah program dengan koefisien berselang seling tanda

seperti di bawah ini


1 1 1 1
1−  −  −⋯
2 3 4 5
Penyelesaian

Untuk menyelesaikan bentuk jumlah yang bersaling seling ini kita

perlu sedikit pintar. Dalam contoh ini, kita akan menghitung hingga suku

yang ke 999. inilah programnya

N=999;

sum=1;

koef=-1;

for n=1:N

if (koef==-1)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 181


Supardi, M.Si

koef=1;

end

sum=sum+1/n;

end

disp(sum)

5.13) Kesalahan yang Sering Dilakukan


Kesalahan yang sering muncul adalah penghilangan kata for pada

perulangan for. Sebagai contoh, jika kita bermaksud untuk menghitung

hasil akar dari suatu bilangan dengan menggunakan metode Newton

a=7;

x=a/2;

disp(['Menghitung pendekatan sqrt(a) jika a=',num2str(a)]);

i=1:5 % disini tidak ada for

x=(x+a/x)/2;

disp(x);

end

5.14) Pernyataan continue


Pernyataan continue berfungsi melewatkan kendali ke iterasi

berikutnya di dalam perulangan for maupun while. Apabila pernyataan

continue berada di dalam loop bersarang, maka pernyataan continue akan

melewatkan kendali ke iterasi berikutnya. Sebagai contoh, perhatikan di

bawah ini

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 182


Supardi, M.Si

N=20;

for i=1:N

if (i<5)

continue;

end

fprintf('%i. Aku mahasiswa semester 5 \n',i);

end

Apabila skrip program di atas dieksekusi, maka yang keluar adalah

tampilan tulisan “Aku mahasiswa semester 5” sebanyak 16 buah mulai dari

nomor 5 hingga nomor 20. Dengan kata lain, kalimat dari nomot 1 hingga 4

tidak ditampilkan. Hal ini disebabkan perintah continue yang berada di

dalam loop for.

5.15) Pernyataan break


Pernyataan break berfungsi untuk menghentikan eksekusi loop for

maupun loop while. Apabila break ditemukan di dalam kalang for maupun

while, maka eksekusi akan dihentikan apabila syarat yang diberikan

terpenuhi. Untuk lebih jelasnya perhatikan contoh berikut ini

N=20;

for i=1:N

if (i>5)

break;

end

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 183


Supardi, M.Si

fprintf('%i. Aku mahasiswa semester 5 \n',i);

end

Program di atas akan ditampilkan lima buah kalimat “Aku

mahasiswa semester 5” mulai dari nomor 1 hingga 5. Setelah iterasi ke 5,

program akan dihentikan karena pernyataan break di dalam pernyataan

bersyarat dimana syaratnya telah terpenuhi. Dengan kata lain, kalimat pada

nomor 6 hingga nomor 20 tidak akan dicetak.

Contoh Program

Contoh Program ...

Buatlah sebuah program Matlab untuk menghitung jumlahan

berikut ini
1−1/31 /5−1/71/9−⋯

hingga suku terkahir kurang dari 10−4

Penyelesaian

Sebelum kita membuat progra Matlab, kita perlu membuat

algoritmanya terlebih dahulu

 inisialisasi jum=0

 inisialisai tol=10−4

 inisialisasi sign=-1

 inisialisasi suku=1

 inisialisai N=100000000

 ulang hingga N kali perulangan dimulai dari k=1

➔ sign=-sign

➔ suku=1/(2*k-1)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 184


Supardi, M.Si

➔ jika suku<tol

➔ hentikan pencarian

➔ jum=jum+sign*suku

 Cetak hasilnya

 Selesai

Hasil programya adalah

jum=0;

tol=1e-4;

sign=-1;

N=100000000

suku=1;

for k=1:N

sign=-sign;

suku=1/(2*k-1);

if (suku<tol)

break;

end

jum=jum+sign*suku;

end

disp(jum)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 185


Supardi, M.Si

SOAL

1. Lihatlah potongan script seperti di bawah ini

if a>b

if c>a

tmp=c;

else

tmp=a;

end

else

if c>b

tmp=c;

else

tmp=b;

end

end

fprintf(tmp)

Jika ditentukan a=2, b=4 dan c=5, maka tentukan tmp terakhir.

2. Buatlah sebuah program komputer, yang mana apabila dijalankan

akan menghasilkan deretan angka seperti di awah ini. Ingat bahwa

hasil saat ini berdasarkan pada hasil sebelumnya.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 186


Supardi, M.Si

12

20

30

42

3. Buatlah sebuah grafik untuk menggambarkan fungsi

z =e−x  cos y  dalam ranah 1x 10 dan 1y 10 .


4. Apabila diberikan fungsi seperti berikut ini

function y=f(n)

if n==0

y=0;

else

y=n+f(n-1);

end

Bagaimanakah keluaran fungsi tersebut apabila ditentukan n=3.

5. Buatlah sebuah program Matlab apabila algoritma prgram tersebut

seperti di bawah ini

• inisialisasi A=1 dan N=6

• ulang hingga 10 kali perulangan

• gantikan N dengan 2N

• Misalkan L=NA/2

• misalkan U =L  1− A2 /2

• misalkan P=(U+L)/2 (perkiraan untuk π)

• misalkan E=(U-L)/2 (perkiraan untuk kesalahan)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 187


Supardi, M.Si

• cetakN,P,E

• selesai

6. Buatlah sebuah program Matlab apabila diberikan algoritma

program sebagai berikut

 inisialiasasi n=10

 fakt=1;

 ulang hingga n kali perulangan dimulai dari k=1

 gantikan fakt dengan k*fakt

 cetak fact

 selesai

7. Buatlah sebuah algoritma progra apabila diberikan program Matlab

sebagai berikut

p=10;

x=1;

q=30;

for i=1:q

x=p*x/n;

disp([n q]);

end

8. Buatlah program Matlab untuk memperoleh jumlahan dari

(a) 12 22 32 ...1000 2


1 1 1 1
(b) 1−   −...−
3 5 7 1003
9. Arus dalam keadaan mantap I mengalir dalam sebuah rangkaian

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 188


Supardi, M.Si

listrik dengan hambatan R=5 , kapasitansi C=10 dan

induktansi L=4 digambarkan dengan sebuah persamaan


E
I=


2
2

R  2 L−
1
2 C 
dengan E=2 dan =2 masing-masing adalah masukan untuk

tegangan dan frekuensi. Hitunglah I. (jawab 0.0396)

10. Penghitungan biaya penggunaan listrik dalam sebuah kota kecil

dihitung dengan cara sebagai berikut

○ Jika ada 500 unit atau kurang, maka biaya dihitung 2 sen per

unit.

○ Jika lebih dari 500 unit, tetapi tidak lebih dari 1000, maka

biaya dihitung 10 dolar untuk 500 unit, kemuadian 2 sen

untuk setiap unit selebihnya.

○ Jika lebih dari 1000 unit, maka penghitungan harga 35 dolar

untuk 1000 unit pertama, kemudian 10 sen untuk setiap unit

selebihnya.

○ Ditambah dengan fee untuk pelayanan sebesar 5 dolar, tidak

peduli pada penggunaan listrik berapapun.

11. Tuliskan program komputer dengan masukan 5 konsumsi dalam

sebuah vektor dan gunakan perulangan for untuk menghitung dan

menampilkan total biaya dari 200, 500, 700, 1000 dan 1500.

12. Diketahui kecepatan gerak jatuh bebas dari sebuah objek di dekat

permukaan bumi dapat dideskripsikan sebagai berikut

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 189


Supardi, M.Si

dv
=g ,
dt
dimana v adalah kecepatan dan g adalah percepatan grafitasi yang besarnya

9.8 m/s2. Cobalah membuat program komputer untuk memperoleh v pada

setiap saat dengan metode Euler. Untuk memudahkan, misalnya objek

mula-mula dalam keadaan diam kemudian dapatkan kecepatan pada


0t10 dan ikuti algoritma berikut ini :

1. Inisialisai variabel g, t_awal, t_akhir, vo, dt (semuanya dalam tipe

presisi ganda).

2. Inisialisai v=vo;

3. Tentukan jumlah interval N=(t_akhir-t_awal)/dt.

4. Untuk i=1,N

a) Tentukan nilai t pada saat ini.

b) Tentukan harga kecepatan saat ini (v=v+gt);

c) Cetak hasilnya (t dan v);

d) Simpan hasilnya dalam file bernama laju.txt

5. Tampilkan hasilnya dalam bentuk grafik.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 190


Supardi, M.Si

BAB VII

PENYELESAIAN PERSAMAAN ALJABAR

Dalam bab ini kita akan menggunakan Matlab untuk menyelesaikan

persamaan aljabar. Kita akan mulai dengan menyelesaikan persamaan

sederhana (persamaan dengan satu variabel) dan sistem persamaan.

5.16) Penyelesaian Persamaan Aljabar


Kita akan mulai dengan persamaan sederhana yang mana kita sudah

tahu jawabannya dengan mudah.


x−2=0

Dengan mudah kita tahu bahwa jawaban yang memenuhi persamaan

tersebut adalah x=2 . Apabila persamaan tersebut diselesaikan dengan

Matlab

>> x=solve('x-2=0')
x=
2

Dalam menuliskan persamaan yang akan dipecahkan tidak perlu

menyertakan bagian persamaan di ruas kanan, karena secara otomatis

Matlab akan menganggap bahwa ketika kita menuliskan 'x-2' berarti bahwa

persamaan yang diselesaikan adalah 'x-2=0'.

>> x=solve('x-2')
x=
2

Matlab juga dapat menyelesaikan persamaan yang melipatkan

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 191


Supardi, M.Si

beberapa simbol. Sebagai contoh, kita dapat memperoleh harga variabel

untuk persamaan yang melibatkan konstanta a


ax3=0

yaitu

>> x=solve('a*x+3')
x=
-3/a

Tetapi ada cara lain untuk menyatakan simbol mana yang akan

dipecahkan. Cara ini dapat dilakukan dengan sintaks

solve(persamaan,variabel).

Sebagai contoh, apabila kita ingin menyelesaikan persamaan ax3=0

dimana variabel yang akan diketahui adalah a maka dapat dituliskan

>> x=solve('a*x+3','a')
x=
-3/x

5.17) Penyelesaian Persamaan Kuadratik


Matlab dapat pula menyelesaikan persamaan kudratik maupun

persamaan dengan orde lebih tinggi. Cara persis sama dengan cara

sebelumnya. Contoh jika kita ingin menyelesaikan persmaan

x 2−4 x−8=0 ,

maka dapat dilakukan dengan

>> s= solve('x^2-4*x-8')
ans =
[ 2+2*3^(1/2)]
[ 2-2*3^(1/2)]

Jika persamaan yang akan diselesaikan berorde lebih tinggi, misalnya

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 192


Supardi, M.Si

4 2
x −4 x −8=0
>> s=solve('x^4-4*x^2-8')
ans =
[ (2+2*3^(1/2))^(1/2)]
[ -(2+2*3^(1/2))^(1/2)]
[ (2-2*3^(1/2))^(1/2)]
[ -(2-2*3^(1/2))^(1/2)]

Setiap akar dari persamaan yang telah dipecahkan disimpan oleh

Matlab sebagai s(1), s(2), s(3) ... s(n) sesuai dengan jumlah akar

persamaannya. Sebagai contoh, untuk akar persamaan 4 2


x −4 x −8=0
memiliki tiga akar. Jika kita panggil akar-akar persamaan tersebut

>> s=solve('x^4-4*x^2-8');
>> s(1)
ans =
(2+2*3^(1/2))^(1/2)
>> s(2)
ans =
-(2+2*3^(1/2))^(1/2)
>> s(3)
ans =
(2-2*3^(1/2))^(1/2)
>> s(4)
ans =
-(2-2*3^(1/2))^(1/2)

Dimungkinkan pula untuk menyimpan sebuah persamaan ke dalam

sebuah variabel, kemudian kita gunakan variabel tersebut untuk

dipecahkan.

>> d='x^4-4*x^2-8=0';
>> solve(d)
ans =
[ (2+2*3^(1/2))^(1/2)]

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 193


Supardi, M.Si

[ -(2+2*3^(1/2))^(1/2)]
[ (2-2*3^(1/2))^(1/2)]
[ -(2-2*3^(1/2))^(1/2)]

5.18) Mengeplot Persamaan Simbolik


Matlab dapat membangkitkan grafik persamaan simbolik yang kita

masukkan dengan perintah ezplot. Sebagai contoh jika kita ingin mengeplot

grafik dari fungsi


2
x −4 x−8
maka dengan mudah, yaitu

>> d=('x^2-4*x-8');

>> ezplot(d)

Gambar 7.1 Grafik simbolik fungsi dengan perintah ezplot.

Untuk mengeset domain pada sumbu x, kita dapat melakukan

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 194


Supardi, M.Si

dengan perintah

ezplot(f,[x1 x2])

Dengan perintah di atas, maka kita telah mengeset bahwa grafik

yang ingin kita buat berada dalam range x 1x x 2 . Jadi, jika cara ini

yang kita gunakan maka kita dapat memilih range pada sumbu x agar

grafik kelihatan lebih manis.

>> d=('x^2-4*x-8');

>> ezplot(d,[-4 8])

Gambar 7.2 Grafik simbolik fungsi dengan domain pada sumbu x

yang diset manual.

Disamping kita dapat menentukan range ploting grafik pada sumbu

x, ita juga dapat menentukan range ploting pada kedua sumbu y. Jika kedua

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 195


Supardi, M.Si

sumbu kita tentukan rangenya misalnya −4x8 dan −13 y15

maka

>> d=('x^2-4*x-8');

>> ezplot(d,[-4,8,-13,15])

Gambar 7.3 Grafik simbolik fungsi dengan domain pada sumbu x dsn y

yang diset manual.

Tetapi, ingat bahwa kita tidak dapat mengeplot grafik simbolik

fungsi dengan cara menuliskan persamaannya misalnya 'x^2-4*x-8=0'. Jika

ini yang kita lakukan maka tentu saja akan muncul pesan kesalahan.

>> d=('x^2-4*x-8=0');

>> ezplot(d)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 196


Supardi, M.Si

??? Error using ==> inlineeval

Error in inline expression ==> x.^2-4.*x-8=0

??? Error: "End of Input" expected, "=" found.

Contoh 7.1

Dapatkan akar persamaan nonlinier x 4 2 x 2− 10=0 dan plot

grafiknya. Selanjutnya tentukan nilai numerik dari akar-akar tersebut.

Penyelesaian

Pertama, kita buat terlebih dahulu bentuk fungsi yang akan diplot

dan disimpan dalam variabel d. Setelah itu kita panggil ezplot untuk

mengeplot fungsi. Untuk menuliskan 10 dalam perintah Matlab, kita

bisa menggunakan sqrt(10) atau 10^(1/2) (Ingat... jangan dituliskan dengan

10^1/2).

>> d='x^4+2*x^2-sqrt(10)';

>> s=solve(d)

s=

[ (-1+(1+10^(1/2))^(1/2))^(1/2)]

[ -(-1+(1+10^(1/2))^(1/2))^(1/2)]

[ i*(1+(1+10^(1/2))^(1/2))^(1/2)]

[ -i*(1+(1+10^(1/2))^(1/2))^(1/2)]

>> ezplot(d)

>> double(s(1))

ans =

1.0199

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 197


Supardi, M.Si

>> double(s(2))

ans =

-1.0199

>> double(s(3))

ans =

0 + 1.7436i

>> double(s(4))

ans =

0 - 1.7436i

Gambar 7.4 Plot grafik fungsi simbolik

5.19) Sistem Persamaan


Apabila kita memiliki beberapa persamaan simultan linier dengan

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 198


Supardi, M.Si

sejumlah variabel yang tidak diketahui, maka Matlab akan dengan mudah

menyelesaikan persamaan tersebut dengan sempurna. Sebagai contoh, jika

diketahui dua buah persamaan linier


2 x−5 y=10
5 x2 y=5
Untuk menyelesaikan dua persamaan linier tersebut kita gunakan perintah

solve dengan cara

>> q=solve('2*x-5*y=10','5*x+2*y=5');

Perhatikan bahwa untuk memecahkan dua persamaan tersebut kita

harus menuliskan kedua persamaan tersebut dengan dipisahkan oleh tanda

koma. Setiap persamaan yang dituliskan juga harus berada diantara tanda

petik tunggal.

Sedangkan untuk memperoleh jawaban yaitu variabel x dan y yang

memenuhi kedua persamaan itu, maka caranya

>> x=q.x

x=

45/29

>> y=q.y

y=

-40/29

Metode ini dapat digunakan untuk menyelesaikan persamaan

simultan linier dengan banyak sekali variabel yang belum diketahui.

Misalnya

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 199


Supardi, M.Si

2 x4 y−5 z u−10v=1


x10 y−3 z10 u2 v=10
5 x−2 y3 z−3 u−2 v=6
10 x−5 y zu−4 v=7
4 x6 y9 z −2u7v=2
Untuk menyelesaikan sistem persamaan tersebut tidak sulit sama sekali

seperti cara di bawah ini.

>> pers1='2*x+4*y-5*z+u-10*v=1';

>> pers2='x+10*y-3*z+10*u+2*v=10';

>> pers3='5*x-2*y+3*z-3*u-2*v=6';

>> pers4='10*x-5*y+z+u-4*v=7';

>> pers5='4*x+6*y+9*z-2*u+7*v=2';

>> q=solve(pers1,pers2,pers3,pers4,pers5);

>> x=q.x

x=

-13063/51

>> y=q.y

y=

-15622/153

>> z=q.z

z=

8421/17

>> u=q.u

u=

51794/153

>> v=q.v

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 200


Supardi, M.Si

v=

-46817/153

5.20) Penyelesaian Fungsi Eksponensial dan Logaritma


Apa yang sudah kita bicarakan di atas adalah bagaimana

menyelesaikan fungsi yang berbentuk polinomial. Matlab juga dapat

menangani fungsi yang melibatkan eksponensial maupun logaritma.

Contoh

Dapatkan x yang memenuhi persamaan


ln x−ln x−5=4

Penyelesaian

Pernyataan logaritma yang kita gunakan dalam persamaan diatas

berarti logaritma basis 2, sehingga dapat diselesaikan dengan Matlab

>> d='log(x)-log(x-5)=4';

>> s=solve(d);

>> s(1)

ans =

5*exp(4)/(-1+exp(4))

Selanjutnya jika kita memiliki dua persamaan yang melibatkan

bentuk eksponen

y=34 x
x
y=3 2
dengan mudah dapat diperoleh y

>> d1='y=3^(2*x)';

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 201


Supardi, M.Si

>> d2='y=3^x+1';

>> s=solve(d1,d2);

>> s(1)

ans =

x: [2x1 sym]

y: [2x1 sym]

Ternyata yang muncul hanyalah dua variabel yang ingin kita cari.

Untuk menampilkan harga variabel tersebut caranya

>> s.x(1)

ans =

log(1/2*5^(1/2)+1/2)/log(3)

>> s.x(2)

ans =

log(1/2-1/2*5^(1/2))/log(3)

>> s.y(1)

ans =

3/2+1/2*5^(1/2)

>> s.y(2)

ans =

3/2-1/2*5^(1/2)

Atau jika kita menginginkan hasilnya dalam tampilan bilangan real,

maka cukup diberi perintah double

>> a=double(s.x(1))

a=

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 202


Supardi, M.Si

0.4380

>> b=double(s.x(2))

b=

-0.4380 + 2.8596i

>> c=double(s.y(1))

c=

2.6180

>> d=double(s.y(2))

d=

0.3820

Matlab juga dapat menyelesaikan persamaan yang melibatkan

bentuk eksponensial, misalnya

y=e 2x x

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 203


Supardi, M.Si

Gambar 7.5. Plot grafik fungsi e 2 x x

Jika diselesaikan dengan Matlab, maka dengan mudah hasilnya akan

diperoleh

>> d='exp(2*x)+x=0';

>> s=solve(d)

s=

-1/2*lambertw(2)

>> double(s)

ans =

-0.4263

5.21) Deret Fungsi


Salah satu kemampuan yang dimilki oleh Matlab adalah mampu

menderetkan fungsi. Tentunya kita masih ingat dengan deret Taylor

ataupun deret Maclaurin. Untuk menderetkan fungsi dengan deret Taylor,

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 204


Supardi, M.Si

perintahnya cukup dengan taylor(). Sebagai contoh, jika kita ingin

menderetkan fungi cos(x),

>> syms x

>> taylor(cos(x))

ans =

1-1/2*x^2+1/24*x^4

Secara default, perintah taylor() akan menderetkan fungsi dalam

lima suku. Dalam kasus penderetan fungsi cos(x) di atas yang tertampil

hanya ada tiga suku. Hal ini dikarenakan pada suku yang ke 2 dan ke 4,

suku-sukunya sama dengan nol.

Dengan perintah ini, kita dapat memesan sampai berapa suku deret

yang diinginkan. Sebagai contoh, jika kita menginkan 15 suku deret fungsi

exp(x):

>> syms x

>> s=taylor(exp(x),15)

s=

1+x+1/2*x^2+1/6*x^3+1/24*x^4+1/120*x^5+1/720*x^6+1/5040*x^

7+1/40320*x^8+1/362880*x^9+1/3628800*x^10+1/39916800*x^11

+1/479001600*x^12+1/6227020800*x^13+1/87178291200*x^14

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 205


Supardi, M.Si

Gambar 7.6. Plot grafik lima suku deret fungsi cos(x)

5.22) Mengekspansikan dan Mengumpulkan Suatu Persamaan


Saat kita berada di Sekolah Menengah Pertama dahulu, tentunya kita

biasa mendapatkan sebuah persamaan seperti misalnya:

 x−2 x4= x 2−2 x−8

Matlab dapat memperoleh ungkapan pada ruas sebelah kanan dengan

perintah expand.

>> syms x;

>> expand((x-2)*(x+4))

ans =

x^2+2*x-8

Fungsi expand juga dapat digunakan untuk mengekspansikan fungsi

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 206


Supardi, M.Si

trigonometrik. Sebagai contoh:

>> expand(cos(2*x))

ans =

2*cos(x)^2-1

Ingat bahwa untuk bekerja dengan fungsi simbolik, kita harus

memberi tahu kepada Matlab bahwa variabel kita berupa simbolik. Jika hal

tersebut tidak dilakukan, maka tentunya akan muncul pesan kesalahan.

Kita lanjutkan untuk mengekspansikan beberapa fungsi simbolik seperti di

bawah ini

>> syms x;

>> syms y;

>> expand(cos(x+y))

ans =

cos(x)*cos(y)-sin(x)*sin(y)

>> expand(cos(x-y))

ans =

cos(x)*cos(y)+sin(x)*sin(y)

>> expand(sin(x+y))

ans =

sin(x)*cos(y)+cos(x)*sin(y)

>> expand(sin(x-y))

ans =

sin(x)*cos(y)-cos(x)*sin(y)

>> expand(tan(x-y))

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 207


Supardi, M.Si

ans =

(tan(x)-tan(y))/(1+tan(x)*tan(y))

>> expand(sin(2*x))

ans =

2*sin(x)*cos(x)

>> expand(tan(2*x))

ans =

2*tan(x)/(1-tan(x)^2)

Matlab juga memungkinkan kita untuk melakukan dengan cara lain

dalam mengumpulkan dan menyederhanakan ungkapan persamaan, yaitu

dengan menggunakan fungsi collect.

>> z=x^2*(x^2+2*x-4);

>> collect(z)

ans =

x^4+2*x^3-4*x^2

Contoh lain dengan variabel simbolik t,

>> syms t;

>> y=(1+t^2)*cos(t)+t*cos(t);

>> collect(y)

ans =

cos(t)*t^2+t*cos(t)+cos(t)

Disamping itu, kita juga dapat memfaktorkan bentuk persamaan tertentu

yaitu dengan fungsi factor. Ini tentunya sebagai kebalikan dari fungsi

expand. Lihat contoh berikut ini,

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 208


Supardi, M.Si

>> syms x;

>> z=x^2-5*x-14;

>> factor(z)

ans =

(x+2)*(x-7)

>> z=sin(x)^2+2*sin(x)+1;

>> factor(z)

ans =

(sin(x)+1)^2

Kita juga dapat memfaktorkan lebih dari satu persamaan, sebagai contoh

>> syms x,y;

>> z1=x^2-y^2;

>> z2=x^3-y^3;

>> factor([z1,z2]);

Akhirnya, kita dapat menggunakan perintah simplify. Perintah ini dapat

digunakan untuk membagi bentuk polinomial.

>> syms x;

>> syms y;

>> z1=x^3-y^3;

>> z2=x^2-y^2;

>> simplify(z1/z2)

ans =

(x^2+x*y+y^2)/(x+y)

Contoh lain yang melibatkan ungkapan logaritma, sebagai contoh

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 209


Supardi, M.Si

e 2log4x=elog16x =16 x 2
>> z=exp(2*log(4*x));

>> simplify(z)

ans =

16*x^2

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 210


Supardi, M.Si

SOAL LATIHAN

1. Gunakan Matlab untuk menyelesaikan persamaan berikut ini

(a) x 2−3 x =10

(b) sin 2 x3sin x=2

(c) 3 cos 2 x2 cos x=7

(d) x 3− y 3=27

(e) x 2 sin xx sin x=4

2. Dapatkan x sedemikian hingga memenuhi persamaan berikut ini

(a) x 2−  5 x=

(b) 2 x 2 2  x−2=0

3. Dapatkan penyelesaian persamaan  x 2−2=5 dan plot grafik

fungsinya pada domain −6x6 dan −6 y2 .

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 211


Supardi, M.Si

BAB VII

KALKULUS DAN PENYELESAIAN PERSAMAAN

DIFERENSIAL

Dalam bab ini kita akan membahas masalah-masalah yang berkaitan

dengan kalkulus diantaranya limit, turunan dan cara mendapatkan hasil

simboliknya.

5.1) Menghitung Limit Fungsi


Matlab memiliki kemampuan untuk menghitung limit dari sebuah

fungsi dengan perintah limit. Sebagai contoh, jika kita ingin mengetahui

hasil limit dari ungkapan berikut ini:


x 33 x 2−4 x 10
lim
 x ∞ 2 x 310 x 2−4 x10
dapat dilakukan dengan cara

>> syms x;

>> f=x^3+3*x^2-4*x+10;

>> g=2*x^3+10*x^2-4*x+10;

>> limit(f/g,inf)

ans =

Ingat sekali lagi bahwa variabel di dalam ungkapan matematis yang

akan dicari harga limitnya adalah berupa varabel simbolik. Oleh sebab itu,

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 212


Supardi, M.Si

setiap kita menggunakan perintah limit untuk memperoleh ungkapan

matematik tertentu harus diawali dengan syms. Jadi untuk menghitung

lim f  x , perintah limit dapat dipanggil dengan sintaks lim(f,a). Sebagai


x a

contoh

>> syms x

>> limit(x^2-9,4)

ans =

Sifat pertama dari limit fungsi adalah bahwa limit dari jumlahan dua

buah fungsi sama dengan jumlah dari limit masing-masing fungsi atau jika

dinyatakan dalam ungkapan matematis


lim  f  x g  x=lim f  x lim g  x 
x a x a x a

Contoh 7-1.
2 x 2x −4 x−10
Misalnya f  x = dan g  x= . Hitunglah limit
x−2 2 x1

dari masing-masing fungsi jika x 3 , kemudian buktikan bahwa sifat

pertama dari limit benar.

Penyelesaian

Pertama kita harus mendeklarasikan variabel simbolik yang

digunakan dalam pernyataan fungsi, yaitu dengan syms.

>> syms x

>> f=(2*x^2+x-4)/(x-2);

>> g=(x-10)/(2*x+1);

>> F1=limit(f+g,3)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 213


Supardi, M.Si

F1 =

16

>> F2=limit(f,3)+limit(g,3)

F2 =

16

Jadi jelas bahwa aturan limit yang pertama terbukti, karena

lim
x 3
2 x 2x−4
x −2
=17 , lim
x −10
x 3 2 x1
=−1 dan lim
x 3 x−2

2 x 2 x−4 x−10
2 x1
=16 .
Selanjutnya, aturan kedua limit adalah limit dari perkalian antara

kontanta dengan fungsi sama dengan konstanta dikalikan dengan limit fungsi

tersebut, yaitu
lim kf  x=k lim f  x 
x a x a

dengan k adalah konstanta sembarang.

Contoh. Jika f  x =2  x 2 x−4 , maka dengan menggunakan Matlab


2 2
buktikan bahwa lim
x 3
2 x x−4=2 lim  x x−4 .
x 3

>> syms x;

>> f1=2*(x^2+x-4);

>> f2=x^2+x-4;

>> limit(f1,3)

ans =

16

>> 2*limit(f2,3)

ans =

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 214


Supardi, M.Si

16 (Terbukti)

Aturan ketiga limit mengatakan bahwa limit dari perkalian antara dua

fungsi f dan g sama dengan perkalian dari masing-masing limit tersebut, yaitu
lim f  x g  x =lim f  x lim g  x
x a x a x a

Contoh. Jika f  x = x 2x −4 dan g  x= x−1 , maka buktikan aturan

ketiga limit bahwa lim  x 2 x−4 x−1=lim  x 2x−4 lim  x−1


x2 x 2 x 2

Penyelesaian

>> syms x;

>> f=x^2+x-4;

>> g=x-1;

>> limit(f*g,2)

ans =

>> limit(f,2)*limit(g,2)

ans =

Akhirnya aturan keempat mengatakan bahwa limit dari fungsi f(x)

yang dipangkatkan dengan g(x) akan sama dengan limit fungsi f(x) dipangkatkan

dengan limit fungsi g().


lim g  x
lim f  x g  x=lim f  x x a

x a x a

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 215


Supardi, M.Si

INTEGRASI NUMERIK DAN PERSAMAAN

DIFERENSIAL

Dalam bab ini kitaakan membahas metode numerik untuk

menyelesaikan masalah integral, turunan dan persamaan diferensial.

Beberapa integral yang tidak dapat diselesaikan secara analiti. Oleh karena

itu, kita membutuhkan metode numerik untuk mengatasi kesulitan

tersebut. Disamping itu, kita sering memerlukan data untuk

memperkirakan laju perubahan dan proses ini memerlukan perkiraan data

numerik. Yang terakhir, banyak masalah persamaan diferensial yang sulit

diselesaikan dengan cara analitik, tetapi dengan pendekatan numerik kita

akan dapat memperolehnya dengan memuaskan.


5.1) Integrasi Numerik
Integral fungsi f  x  dalam ranah a xb dapat

diintepretasikan sebagai luas daerah dibawah kurva f  x  yang

membentang dari x=a hingga x=b .

Drawing 1:
Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 216
Supardi, M.Si

Dalam hal ini f  x  disebut integrand, x=a disebut batas bawah

integral dan x=b disebut batas atas integral sedangkan x adalah variabel

integral.

Masalah integral ini banyak digunakan dalam masalah sains dan

teknik. Beberapa contoh dibawah ini akan menggamarkan penggunaan

integral dalam sains dan teknik:

5.1.1. Percepatan dan kecepatan benda.

Kecepatan suatu benda pada saat t detik dengan kecepatan awal


v 0 dapat dinyatakan sebagai
t
v t =∫ a t tv 0
0

5.1.2. Kecepatan dan jarak benda

Jarak yang ditempuh oleh benda setelah bergerak dari t=a hingga
t=b dan posisi awal ada di s(a) ketikan t=a dinyatakan sebagai
b
s t=∫ v t ts a 
a

5.1.3. Kapasitor, tegangan dan arus

Muatan Q yang melewati dalam sebuah kapasitor merupakan

integral dari arus yang dikenakan melalui kapasitor tersebut. Jika mula-

mula kapasitor membawa muatan Q(a), kemudian arus dilewatkan melalui

kapasitor dari t=a hingga t=b , maka tegangan kapasitor v adalah

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 217


Supardi, M.Si

[∫ ]
b
1
v b = it dt Q a
C a

dimana C menyatakan kapasitansi dari kapasitor.

5.1.4. Usaha

Usaha yang dilakukan oleh sebuah benda yang dikenai gaya F x

dan bergeser sejauh d dapat dinyatakan oleh


d
W =∫ F  x  dx
0

Untuk pegas linier gaya F  x  dinyatakan oleh F  x =k x ,

dengan k adalah konstanta pegas. Kerja yang dilakukan terhadap pegas

selanjutnya
d
W =∫ k x dx
0

Integral memiliki sifat linier. Apabila c dan d bukan merupakan

fungsi x, maka
b b b

∫ [ c f  x d f  x  ] dx=c ∫ f  x dxd ∫ f  x dx


a a a

Integral Tak Wajar dan Singularitas

Beberapa integral memiliki nilai tak hingga, bergantung pada batas-

batas integrasinya. Sebagai contoh,


1
∫ x−1 dx=ln ∣x−1∣

Integral di atas termasuk integral tak wajar apabila batas integral di

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 218


Supardi, M.Si

1
atas mengandung titik x=1 . Fungsi harganya menjadi tak
1−x
terdefinisi saat nilai x mendekati harga sama dengan 1 dari arah kiri ke

kanan. Lihat gambar ()

Gambar 9.1 Titik singularitas

Untuk memperlihatkan ketidakwajaran integral di atas, marilah kita

ambil batas atas integral h yang mendekati 1.


h
1 h
lim
h1—
∫ x−1
dx= lim ln ∣x−1∣0
h 1 —
0
= lim  ln ∣h−1∣−ln∣−1∣
h1—
= lim  lnh−1  =−∞
h 1 —

Kita tahu bahwa ln 0=−∞ . Yang perlu kita ketahui bahwa meskipun

fungsi tersebut dapat diintegralkan, namun kita perlu mengecek kembali

titik mana yang menyebabkan nilai integral tak terdefinisi. Nah, titik-titik

dimana nilai integrand (fungsi yang diintegralkan) berharga sama dengan

nol disebut singularitas.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 219


Supardi, M.Si

5.2) Turunan
Turunan dan integral merupakan dua operasi yang saling

melengkapi. Sebagai contoh jika kita memiliki

f  x =∫ g  x  dx

maka g  x merupakan turunan f  x  terhadap x.


d f
g  x=
dx
Fungsi turunan f(x) secara geometris ditafsirkan sebagai kemiringan

(slope), sehingga f(x) sering disebut pula sebagai fungsi kemiringan. Beberapa

aturan tentang turunan ini antara lain:

5.2.1. Aturan perkalian

Jika kita memiliki fungsi h  x = f  x  g  x , maka


dh dg df
= f  x g  x 
dx dx dx
Contoh
dy
Jika diketahui y=x sin x , maka carilah . dengan
dx
menggunakan aturan perkalian dengan mudah diperoleh
dy d sin x  dx
=x sin x
dx dx dx
=x cos xsin  x 

5.2.2. Aturan Pembagian

f  x
Jika kita memiliki fungsi h  x = , maka
g  x

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 220


Supardi, M.Si

df dg
g  x − f x
dh dx dx
=
dx g 2

Contoh
sin x dy
Jika diketahui y= , maka carilah . Dengan
x dx
menggunakan aturan pembagian dengan mudah diperoleh
d sin x  dx
x −sin x
dy dx dx
=
dx x 2
x cos  x −sin  x
=
x2

5.2.3. Aturan Berantai

Apabila kita memiliki h  x = f  y , sedangkan y=g  x  maka

secara tidak langsung h juga merupakan fungsi x. Aturan berantai

menyatakan bahwa
dh df dy
=
dx dy dx
Contoh
df
Jika diketahui f =sin y dan y=cos  x  maka carilah .
dx
Dengan menggunakan aturan berantai dengan mudah diperoleh
df df dy
=
dx dy dx
d sin y  d cos x 
=
dy dx
=cos  y −sin  x 
=−cos cos  x  sin  x

5.3) Integrasi Numerik

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 221


Supardi, M.Si

Metode Trapesium

Sebagaimana namanya, metode trapezium merupakan metode

integrasi numerik yang didasarkan pada penjumlahan segmen-segmen

berbentuk trapesium. Apabila sebuah integral didekati dengan metode

trapesium dengan satu segmen saja, maka dapat dituliskan sebagai


b

∫ f  x  dx= b−a
2
[ f  a  +f  b  ] +E
a

Suku pertama pada ruas kanan adalah aturan trapezium yang kita

maksudkan, sedangkan suku kedua yang dinyatakan dengan E adalah

kesalahan yang dimiliki oleh metode ini.

Dengan demikian kita memperoleh pendekatan integral dengan

teknik integrasi trapesium adalah


x0 h
h
∫ f t dt≈
2
[ f  x 0 f  x 0h ]
x0

Secara grafis integrasi trapesium dapat digambarkan seperti pada

gambar (3-3)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 222


Supardi, M.Si

Gambar 9.2. Deskripsi secara grafis aturan trapesium

Matlab menyediakan beberapa fungsi integrasi yang dapat

digunakan untuk memperoleh hasil pendekatan numerik dari ungkapan

integral. Beberapa fungsi integrasi yang disediakan Matlab ditampilkan

pada Tabel 9.1

Perintah Deskripsi
trapz(x,y) Perintah ini digunakan untuk menghitung

integral fungsi y terhadap x dengan pendekatan

integrasi numerik aturantrapesium, dimana larik

y berisi nilai fungsi yang besesuaian dengan titik x

quad('myfunction',a,b,tol) Perintah ini digunakan untuk menghitung

integral fungsi bernama 'myfunction' berdasarkan

aturan Simpson dengan batas bawah integrasi a

dan batas atas b serta tol adalah harga toleransi

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 223


Supardi, M.Si

yang diberikan.

quadl('myfunction',a,b,tol) Perintah ini digunakan untuk menghitung

integral fungsi berdasarkan pada integrasi

kuadratur Labato. Sedangkan a,b dan tol sama

dengan quad.

dblquad('fun',xmin,xmax, Digunakan untuk menghitung integral ganda dari

ymin,ymax,tol) fungsi 'fun' dengan xmin dan xmax masing-

masing adalah batas bawah dan atas pada sumbu

x, sedangkan ymin dan ymax masing-masing

adalah batas bawah dan batas atas pada sumbu y.

sedangkan tol adalah toleransi yang bisa diset.

triplequad('fun',xmin,xma Fungsi ini digunakan untuk menghitung integrasi

x,ymin,ymax,zmin,zmax,to numerik ganda tiga dari fungsi 'fun' dengan xmin,

l) ymin dan zmin masing-masing adalah batas

bawah untuk sumbu x,y dan z serta xmax, ymax

dan zmax masing-masing adalah batas atas

integrasi untuk sumbu x,y dan z.

Contoh
1

Dapatkan hasil pendekatan integral dari ∫  x−cos  x   dx .


0

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 224


Supardi, M.Si

Penyelesaian

>> x=linspace(0,1,100);

>> y=x-cos(x);

>> plot(x,y)

>> trapz(x,y)

ans =

-0.3415

Contoh

Sebuah akselerometer digunakan untuk mengukur percepatan

pesawat terbang. Dimisalkan pesawat dari keadaan diam pada t=0 dan

dicatat percepatannya setiap waktu seperti terlihat pada Tabel 9.2

Tabel 9.2 Percepatan pada setiap waktu yang diukur dengan akselerometer.

Waktu 0 1 2 3 4 5 6 7
Percepatan (m/s2) 0 2 4 7 20 23 40 55

(a) Perkirakan kecepatan pesawat setelah detik ke t=7.

(b) Perkirakan kecepatan pesawat pada saat t=1,2,3,...,7

Penyelesaian

(a) Untuk menyelesaikan masalah ini, kita tidak dapat menggunakan

fungsi quad atau quadl, karena integrand berupa data diskret. Oleh

sebab itu, kita hanya dapat menggunakan fungsi trapz. Hubungan

antara kecepatan dan percepatan adalah


7 7
v 10=∫ a t  dtv 0=∫ a t dt
0 0

>> t=[0:7];

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 225


Supardi, M.Si

>> a=[0,2,4,7,20,23,40,55];

>> v=trapz(t,a)

ans =

123.5000

(b) Untuk memperoleh kecepatan pada saat t=1,2,3,...,7, maka ungkapan

integral yang cocok adalah


tk tk

v t k =∫ a t dtv 1=∫ a t dt


t1 t1

Ingat bahwa Matlab tidak mengenal indeks 0, sehingga k bergerak

mulaidari 1 hingga 11 dimana t 1=0 dan t 8=7 . Jika dinyatakan

dalam pemrograman Matlab,

t=[0:7];

a=[0,2,4,7,20,23,40,55];

v(1)=0;

for i=2:8

v(i)=trapz(t(1:i),a(1:i))

end

disp([t' v']);

Bisa pula programnya dibuat lebih sederhana menjadi

t=[0:7];

a=[0,2,4,7,20,23,40,55];

v(1)=0;

for i=1:7

v(i+1)=trapz(t(i:i+1),a(i:i+1))+v(i);

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 226


Supardi, M.Si

end

disp([t' v']);

Hasil running programnya seperti diperlihatkan pada tabel di bawah

ini

0 0

1.0000 1.0000

2.0000 4.0000

3.0000 9.5000

4.0000 23.0000

5.0000 44.5000

6.0000 76.0000

7.0000 123.5000

Metode Simpson 1/3

Dalam pembahasan tentang metode numerik, metode integrasi

trapesium dapat mendapatkan secara eksak jika integrand berupa fungsi

yang linier. Tetapi bagaimana jika fungsi integrand berwujud fungsi

kuadratik. Jika fungsi integrand berupa polinomial orde dua (kuadratik),

maka metode Simpson 1/3 dapatdi terapkan untuk memperoleh harga yang

eksak. Metode Simpson dapat digambarkan dengan ungkapan

[ ]
b N /2−1 N /2−1

∫ f  x  dx≈ h3 f a 4 ∑ f  x 2i 1 2 ∑ f  x 2 i  f b


a i=0 i=1

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 227


Supardi, M.Si

Contoh

Buatlah pogram Matlab untuk mendapatkan hasil pendekatan

integral dari ∫ e x dx , dimana kita dapat memasukkan batas bawah a dan


a

batas atas b.

Penyelesaian

Untuk mendapatkan penyelesaian dari masalah ini, maka kita perlu

membuat algoritma program Simpson terlebih dahulu, yaitu

(1) Definisikan fungsi yang akan diintegrasikan

(2) Tentukan batas bawah b dan batas atas a integrasi

(3) Tentukan jumlah segmen N


b−a
(4) Hitung lebar segmen h=
N
(5) Inisialisai jumlahan sum = f ( a ) + f ( b )

(6) Inisialisasi faktor bobot fak = 4

(7) Hitung jumlahan dari i = 1 hingga i=N −1

(a) Tentukan node tiap-tiap x i=ai h

(b) Berikan syarat jika (fak = 4), maka fak=2

(c) Hitung nilai integral sum = sum + fak * f ( x)


h
(8) Hitung hasil akhir penjumlahan Hasil = * sum
3

%Program Simpson 1/3


f=inline('exp(x)','x');
b=input('Batas atas integrasi b:');

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 228


Supardi, M.Si

a=input('Batas bawah integrasi a:');


N=input('Jumlah segmen N:');
hasil_eksak=f(b)-f(a);
if(N < 2)
fprintf('Jumlah segmen <=2.Ulangi!!');
break;
end;
if (mod(N,2)~=0)
N=N+1;
end;
h=(b-a)/N;
sum=f(a)+f(b);
fak=2;
for i=1:N-1
x=a+i*h;
if(fak==2)
fak=4;
else
fak=2;
end
sum=sum+fak*f(x);
end
hasil=h/3*sum;
error=abs(hasil_eksak-hasil_num);
fprintf('hasil=%f, error=%f',hasil,error)

Matlab menyediakan fungsi quad yang didasarkan pada penggunaan

metode Simpson 1/3 untuk menyelesaikan masalah integral. Kalau fungsi

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 229


Supardi, M.Si

trapz dapat menyelesaikan dengan nilai eksak untuk fungsi integrand linier,

maka quad dapat memperoleh harga eksak untuk integrand yang berbentuk

kuadratik.

Contoh
6

Dapatkan nilai integral ∫ x 2 −3 x−4 dx dengan trapz dan quad.


4

Penyelesaian

Dengan menggunakan Matlab, maka dengan mudah akan diperoleh

hasilnya

(a) Dengan fungsi trapz

>> x=linspace(4,6,20);

>> y=x.^2-3*x-4;

>> trapz(x,y)

ans =

12.6704

(b) Dengan fungsi quad

>> y=inline('x.^2-3*x-4');

>> quad(y,4,6)

ans =

12.6667

(c) Dengan perhitungan manual


6 6

4
]
∫ x 2 −3 x−4 dx= 13 x 3− 32 x 2−4 x =−618.6667=12.6667
4

Jadi jelas bahwa dengan menggunakan metode Simpson yang

diwakili dengan fungsi quad dapat menemukan harga eksaknya jika

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 230


Supardi, M.Si

integrand merupakan fungsi kuadratik.

Diferensiasi Numerik /Pendekatan beda hingga

Untuk mengawali pembahasan persamaan diferensial, terlebih

dahulu kita akan mengenalkan teori sederhana tentang beda hingga. Apa

yang dimaksud dengan beda hingga? Tentunya kita masih ingat ketika

belajar tentang kalkulus tentang bentuk dibawah ini


dy y  x x− y x 
= lim (5-6)
dx  x  0 x

atau
dy y  x x −y  x − x 
= lim (5-7)
dx  x  0 2 x

Semua pendekatan berharga sama ketika diambil limit  x 0

untuk derivatif pertama y terhadap x. Untuk limit  x berhingga, maka

ungkapan (5-6) dan (5-7) dapat dinyatakan menjadi


dy y  x x −y  x 
≈ (5-8)
dx x
dy y  x x − y  x− x
≈ (5-9)
dx 2x
Nah, kita akan menggunakan ungkapan-ungkapan ini dalam

mendekati suatu bentuk turunan pertama dengan harga  x yang

berhingga. Oleh sebab itu, metode ini disebut dengan metode beda hingga.

Dengan demikian, ada tiga bentuk beda hingga, yakni

y ( xn + h ) − y ( xn )
Beda maju
h

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 231


Supardi, M.Si

y ( xn + h ) − y ( xn − h )
Beda terpusat
2h
y ( xn ) − y ( xn − h )
Beda Mundur
h

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 232


Supardi, M.Si

BAB VIII

PENGENALAN METODE NUMERIK DAN

APLIKASINYA

5. Pertumbuhan Bakteri

Misalnya sebuah koloni bakteri berlipat sebesar 0.1 kali jumlah

sebelumnya setiap jamnya. Akan dihitung jumlah bakteri setelah 10 jam

kemudian jika mula-mula jumlah bakteri adalah 10000. Persamaan

diferensial yang menggambarkan pertumbuhan bakteri ini adalah


dN
=rN dengan N 0=10000
dt
dimana N t  adalah jumlah bakteri setelah t jam. Secara analitis

penyelesaian untuk persamaan diferensial ini adalah

N t =N 0 e
rt
,

tetapi kita juga akan mendekatinya dengan metode Euler maju dengan

algoritma yang telah diberikan di atas. Dibawah ini diberikan kode sumber

untuk membandingkan hasil secara analitis dan numerik

a=0;

b=10;

dt=1;

M=round((b-a)/dt);

N=10;

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 233


Supardi, M.Si

N_eksak=10;

r=0.1;

fid=fopen('bakteri.txt','w');

for i=1:M

t=a+i*dt;

N=N+r*N*t; %hasil numerik Euler

N_eksak=N_eksak*exp(r*t); %hasil eksak

fprintf('%f %f %f\n',t,N,N_eksak);

fprintf(fid,'%f %f %f\n',t,N,N_eksak);

end

fclose(fid);

load bakteri.txt;

t=bakteri(:,1);

N=bakteri(:,2);

N_eksak=bakteri(:,3);

plot(t,N,'-',t,N_eksak,'--');

xlabel('t');

ylabel('Pertumbuhan bakteri N');

legend('N','N_eksak');

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 234


Supardi, M.Si

Gambar 8. Perbandingan hasil eksak dengan pendekatan numerik pertumbuhan


Bakteri

6. Arus Listrik

Jika kita memiliki sebuah rangkaian listrik yang terdiri atas sebuah

sumber teganganV, hambatan R dan induktor yang berfungsi sebagai

penyimpan tenaga L dan sebuah saklar yang dapat menutup rangkaian

pada saat t=0, maka menurut hukum Kirchofff ungkapan untuk sistem ini

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 235


Supardi, M.Si

adalah
di
L Ri=V
dt
dimana i adalah arus yang mengalir pada rangkaian. Begitu saklar dalam

keadaan ON maka arus listrik mengalir.

Untuk lebih memudahkan penyelesaian untuk arus i maka kita perlu

menyederhanakan ungkapan di atas.


di R V
 i=
dt L L
Secara analitis, penyelesaian persamaan di atas adalah

i=
V
L

1e

−R
L 
t
,

namun dengan menggunakan fungsi bawaan Matlab sebagai solver

persamaan diferensial dapat dilakukan dengan langkah-langkah sebagai

berikut.

1. Tentukan fungsi yang mendefinisikan ungkapan persamaan

diferensial
di −R V
= i
dt L L
yaitu

function I=listrik(t,i)

R=1;L=1;V=1;

I=-R/L*i+V/L;

2. Panggilah fungsi listrik.m yang telah dibuat serta berikan harga

parameter yang diinginkan. Dalam hal ini range waktu t 0t6

dengan panjang langkah 0.01.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 236


Supardi, M.Si

>> a=0;b=6;R=1;L=1;V=1;

>> i0=0;

>> [t,i]=ode23(@listrik,[a:0.01:b],i0);

>> plot(t,i,'lineWidth',3);

>> xlabel('Waktu t');

>> ylabel('Arus i');

Gambar 8. Grafik arus i terhadap waktu t

7. Sistem Persamaan Diferensial : Chaos

Indonesia memiliki Badan Meteorologi dan Geofisika yang salah satu

tugasnya adalah memperkirakan cuaca di berbagai daerah di Indonesia.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 237


Supardi, M.Si

Tentu, perkiraan yang disampaikan berdasarkan pada kajian ilmiah

tertentu. Kejadian alam yang terjadi pada cuaca pada waktu tertentu tidak

mungkin dapat ketahui secara pasti karena banyak faktor yang

berpengaruh. Kejadian ini bisa dikatakan sebagai gejala chaos. Persasamaan

diferensial berikut ini akan memodelkan gejala chaos yang terjadi pada

perkiraan cuaca. Akurasi perkiraan cuaca pada waktu tertentu didasarkan

pada kondisi awal yang diberikan.

Edward Lorenz, sorang peneliti meteorologi menemukan gejala yang

demikian pada tahun 1961. Meskipun persamaan aslinya begitu kompleks,

sistem berikut ini lebih sederhana namun tidak menghilangkan esensi dari

fitur chaotik yang ada.


dx
=10  y−x 
dt
dy
=−xz 28 x− y ()
dt
dz
= xy−8 z /3
dt
Persasamaan diferensial diatas sangat mudang diselesaikan dengan

Matlab melalui ODE Solver. Dalam hal ini, kita akan selesaikan

persasamaan diferensial tersebut dengan pertama-tama memberikan syarat

awal, mengeplot hasil kemudian menggantikan syarat awal lainnya.

Kita mulai dengan memberikan syarat awal x(0)=-1, y(0)=-3.2 dan

z(0)=15. Selanjutnya ikuti langkah-langkah berikut ini:

1. Buat fungsi bernama lorenz.m untuk menggambarkan sistem yang

kita miliki sebhagai berikut:

function f=lorenz(t,x)

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 238


Supardi, M.Si

f=zeros(3,1);

f(1)=10*(x(2)-x(1));

f(2)=-x(1)*x(3)+28*x(1)-x(2);

f(3)=x(1)*x(2)-8*x(3)/3;

Tiga elemen yaitu x(1), x(2) dan x(3) mewakili variabel x,y dan z.

Elemen-elemen vektor f mewakili ruas kanan dari tiga persamaan

diferensial.

2. Gunakan perintah berikut ini untuk menyelesaika sistem persamaan

diferensial yang kita miliki yaitu

>> x0=[-1,-3.2,15];

>> [t,x]=ode45(@lorenz,[0 10],x0);

>> plot(t,x)

>> xlabel('t');

>> ylabel('Penyelesaian LOrenz y(t)');

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 239


Supardi, M.Si

Gambar . Gejala chaos keadaan cuaca

Perhatikan bahwa fungsi untuk menyelesaika persamaan diferensial

yang kita gunakan adalah ode45(). Hal ini dikarenakan kita

menginginkan hasil yang lebih akurat.

3. Selanjutnya ubahlah syarat awal untuk variabel x,y dan z yaitu x(1)=-

3, x(2)=3, dan x(3)=10. Ploting data untuk masukan syarat awal ini

dapat dilihat pada gambar 8.2.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 240


Supardi, M.Si

Gambar 6.2 Gejala chaos setela masukan syarat awal berbeda dari
gambar 6.1

4. Sekarang cobalah untuk menggunakan fungsi bawaan Matlab

lainnya selain ode45, misalnya ode23, ode113, ode15s, ode23s, ode23t

dan ode23tb.

8. Persamaan Van der Pol

Persamaan van der Pol dinyatakan dalam persamaan difernsial orde

dua seperti di bawah ini

d 2 y1 dy
2
−  1− y 21  1  y 1=0
dx dx

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 241


Supardi, M.Si

Untuk menyelesaikan persamaan ini maka marilah kita ikuti langkah-

langkah berikut ini:

1. Ubahlah bentuk persamaan diferensial orde dua tersebut menjadi

bentuk yang lebih sederhana yaitu persamaan diferensial orde satu,

sehingga kita memiliki dua persamaan diferensial orde satu.


dy
= y2 ()
dx
dy
=  1− y 1  y 2− y 1
2
()
dx
2. Buatlah kode sumber untuk menyatakan fungsi van der Pol di atas

kemudian simpan sesuai dengan nama fungsi tersebut.

function dydt=vdp(t,y)

dydt = [y(2); (1-y(1)^2)*y(2)-y(1)];

3. Tentukan syarat awal untuk y(1)=2.4, y(2)=0, konstanta =1 dan

salah satu solver persamaan diferensial biasa misalnya ode45().

Untuk range pada sumbu dipilih x=[0 20]. Kode sumber

selengkapnya untuk memperoleh grafik van der Pol adalah sebagai

berikut:

y(1)=2.4;

y(2)=0;

[t,y] = ode45(@vdp1,[0 20],[y(1); y(2)]);

plot(t,y(:,1),'-',t,y(:,2),'--')

title('Penyelesaian persamaan van der Pol, \mu = 1');

xlabel('waktu t');

ylabel('penyelesaian y');

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 242


Supardi, M.Si

legend('y_1','y_2')

Gambar 6.2 Penyelesaian persamaan van der Pol

9. Populasi Predator dan Prei

Contoh-contoh di atas menempatkan konstanta sebagai parameter

yang harus ditentukan secara manual dari fungsi yang dibuat. Sedangkan

pada pemodelan yang sebenarnya, kita perlu mengubah-ubah konstanta ini

untuk memperoleh bentuk yang mendekati fakta sebenarnya. Oleh sebab

itu, kali ini kita akan memberikan contoh bagaimanakan membuat fungsi

dengan argumen input termasuk konstanta. Contoh yang akan diberikan

adalah model Lotka-Voltera Predator-Prei:

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 243


Supardi, M.Si

dx
= px−qxy
dt
dy
=rxy−sy
dt
()

dimana x(t) dan y(t) adalah populasi predator dan prei pada waktu t,

sedangkan p, q, r dan s parameter yang ditentukan secara biologis. Dalam

contoh ini dimisalkan p=0.4, q=0.04, r =0.02, s=2, x 0=105 dan

y 0=8 . Untuk menyelesaika masalah ini marilah kita ikuti langkah

berikut ini:

1. Buatlah fungsi bernama voltera seperti di bawah ini

function f=voltera(t,x,p,q,r,s)

f=zeros(2,1);

f(1)=p*x(1)-q*x(1)*x(2);

f(2)=r*x(1)*x(2)-s*x(2);

2. Masuk ke command window dan berikan perintah berikut ini

>> p=0.4;q=0.04;r=0.02;s=2;x(1)=105;x(2)=8;

>> [t,x]=ode23(@voltera,[0 10],[x(1) x(2)],[],p,q,r,s);

>> plot(t,x);xlabel('Waktu');ylabel('Populasi');

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 244


Supardi, M.Si

Gambar 8.

Keterangan:

Syntax ode23() yang digunakan untuk menyelesaikan persamaan

Lotka-Voltera adalah [T,Y] = solver(odefun,tspan,y0,options,p1,p2...).

Kalau option untuk ode23() tidak ada maka diberikan tanda [ ];

10.

Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 245

Anda mungkin juga menyukai