matlab2

47
Modul Praktikum MATLAB Versi 6.5 Create by Luke Modul Praktikum Matlab Versi 6.5 Oleh Saluky, S.Si Sekolah Tinggi Manajemen Informatika dan Komputer CIC  S T M I K  CIC  Modul Praktikum Matlab STMIK CIC 1

Upload: wahyu-maddanatja

Post on 30-Oct-2015

27 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 1/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Modul Praktikum Matlab

Versi 6.5

Oleh

Saluky, S.Si

Sekolah Tinggi Manajemen Informatika dan Komputer CIC

S T M I K     CIC

 Modul Praktikum Matlab STMIK CIC  1

Page 2: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 2/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Bagian1

Pendahuluan

Matlab adalah singkatan dari Matrix Laboratory, software yang dibuat

dengan menggunakan bahasa ini dibuat oleh The Mathworks.inc dan

telah memasuki versi 6.5 Rilis 13. kekuatan matlab terletak pada :

1.  Kemudahan manipulasi struktur matriks.

2.  Jumlah routine-routine powerful yang berlimpah yang terus

berkembang.

3.  Kekuatan fasilitas grafik tiga dimensi yang sangat memadai.

4.  Sistem scripting yang memberikan keleluasaan bagi pengguna

untuk mengembangkan dan memodifikasi software untuk

kebutuhan sendiri.

5.  Kemampuan interface( misal dengan bahasa C, word dan

mathematica).

6.  Dilengkapi dengan toolbox, simulink, stateflow dan sebagainya,

serta mulai melimpahnya source code di internet yang dibuat

dalam matlab( contoh toolbox misalnya : signal processing,

control system, neural networks dan sebagainya).

Semua itu merupakan perangkat yang powerful untuk menyelesaikan

permasalahan sains dan teknik terutama untuk wilayah dimana

komputasi numerik harus dibuat.

GUI di Matlab

Ketika kita membuka GUI Matlab kita bisa melihat lihat dan mencoba

coba perintah pada GUI tersebut dan untuk lebih jelasnya bisa dilihat

dalam demo tersebut. Kita bisa melihat contoh contoh program dan

bisa disave dengan ektension .m(yang merupakan ektensi dari file

matlab)

 Modul Praktikum Matlab STMIK CIC  2

Page 3: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 3/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Salah satu yang cukup menarik dari matlab ini adalah kemudahan dan

kejelasannya dalam memahami contoh dan demo serta help yang ada

pada matlab. Kita akan berkenalan lebih dekat dengan yang satu ini.

Kita bisa lihat dari demo ini ternyata begitu banyak persoalan yang

dapat dibangun dengan matlab dengan cara lebih mudah dan lebih

singkat, tanpa mengurangi kepahaman kita pada suatu persoalan(bisa

dibandingkan dengan bahasa C, pascal, delphi atau visual lainnya).

Dengan dilengkapinya matlab dengan toolbox, simulink dan

sebagainya maka semakin menambah kekuatan matlab untuk

menyelesaikan permasalahan yang rumit menjadi lebih mudah.

 Modul Praktikum Matlab STMIK CIC  3

Page 4: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 4/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Bagian 2

Kontrol Program

Matlab bisa berlaku seperti bahasa pemrograman C ataupun

pascal yang mempunyai struktur kontrol program, biasanya

pemrograman dengan matlab memerlukan lebih dari satu baris dan

memungkinkan untuk didokumentasikan dalam m-file, kontrol

program ini digunakan untuk memperbaiki tampilan atau membuat

tampilan sesuai yang kita inginkan. Dalam bagian dibahas sebagian

kontrol program yang diperlukan dalam pemrograman menggunakan

matlab :

1.  loop for

Loop for meungkinkan sekelompok perintah diulang sebanyak suatu

 jumlah yang tetap. Bentuk umum dari loop for adalah :

. for x= array

statement

end

untuk tiap iterasi, x diisi dengan kolom array berikutnya, yaitu dalam

iterasi ke-n dalam loop, x = array(:,n).

contoh 1 :

>>f or n = 1 : 10

x( n) =si n( n*pi / 10) ;

end

>> x

x =

Col umns 1 t hrough 8

 Modul Praktikum Matlab STMIK CIC  4

Page 5: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 5/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

0. 3090 0. 5878 0. 8090 0. 9511 1. 0000

0. 9511 0. 8090 0. 5878

Col umns 9 t hrough 10

0. 3090 0. 0000

contoh 2 :

> for i=1:5

disp('Ini hasil looping 5 kali');

end

Ini hasil looping 5 kali

Ini hasil looping 5 kali

Ini hasil looping 5 kali

Ini hasil looping 5 kali

Ini hasil looping 5 kali

2.  loop while

loop for mengerjakan sekelompok perintah yang diulang sebanyak

suatu sejumlah, tetapi loop while mengerjakan sekelompok perintah

yang diulang secara tidak terbatas

Bentuk umum loop while adalah

while ekpresi

statement

end

semua elemen yang dieksekusi diantara while dan end dan harus

bernilai benar

contoh :

>> x=0;

>> whi l e x<5

di sp( ' Di ul ang 5 kal i ' ) ;

 Modul Praktikum Matlab STMIK CIC  5

Page 6: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 6/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

x=x+1;

end

Di ul ang 5 kal i

Di ul ang 5 kal i

Di ul ang 5 kal i

Di ul ang 5 kal i

Di ul ang 5 kal i

3.  Kontruksi if-else-end

Seringkali sederetan perintah harus dikerjakan dengan didasarkan

pada hasil tes rasional. Dalam bahasa pemrograman, logika ini

dikerjakan dengan variasi kontruksi if-else-end. Bentuk paling

sederhana kontruksi if-else-end adalah :

If ekpresi

Pertintah

End

Contoh

>> angka=- 4;

>> i f angka > 0

di sp( ' ni l ai nya adal ah posi t i f ' ) ;

el se

di sp( ' ni l ai nya adal ah negat i f ' ) ;

end

ni l ai nya adal ah negat i f 

 Modul Praktikum Matlab STMIK CIC  6

Page 7: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 7/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Bagian 3

Fungsi M-File

M-file selain dipakai sebagai penamaan file juga bisa dipakai

untuk menamakan fungsi, sehingga fungsi fungsi yang kita buat di

 jendela editor bisa di simpan dengan ektensi .m sama dengan file yang

kita panggi dijendela editor. Saat kita menggunakan fungsi Matlab

seperti inv, abs, cos, sin dan sqrt, matlab menerima variabel

berdasarkan variabel yang kita berikan.

Fungsi M-file mirip dengan script file dimana keduanya

merupakan file teks dengan ektensi .m . sebagaimana script M-file,

fungsi m-file tidak dimasukkan dalam jendela command window tetapi

file tersendiri yang dibuat dengan editor teks.

Aturan dan sifat sifat

Suatu fungsi M-file harus mengikuti beberapa aturan. Fungsi M-file

 juga mempunyai sejumlah penting. Aturan aturan tersebut meliputi ;

•  Nama fungsi dan nama file harus identik. Contoh : fungsi flipud

disimpan dalam file yang bernama flipud.m

•  Pertama kali matlab mengeksekusi suatu fungsi M file matlab

membuka file fungsi tersebut dan mengkompilasi perintah

perintah didalamnya menjadi suatu representasi internal dalam

memori yang mempercepat eksekusi untuk semua pemanggilan

berikutnya.

•  Setiap fungsi mempunyai ruang kerjanya sendiri yang berbeda

dengan ruang kerja matlab. Satu satunya hubungan antara

ruang kerja matlab dengan variabel variabel dalam fungsi adalah

variabel variabel input dan output fungsi.

Contoh fungsi: Listing program animasi spiner.m

f unct i on spi nner ( act i on) ;

 Modul Praktikum Matlab STMIK CIC  7

Page 8: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 8/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

%SPI NNER Col or f ul l i nes spi nni ng t hr ough space.

% demonst r at es some MATLAB ani mat i on capabi l i t i es.

% Ned Gul l ey, 6- 21- 93

% Copyr i ght 1984- 2002 The Mat hWorks, I nc.

% $Revi si on: 5. 9 $ $Date: 2002/ 04/ 08 20: 04: 53 $

% Possi bl e acti ons:

% i ni t i al i ze

%star t

% I nf or mat i on r egar di ng t he pl ay st at us wi l l be hel d i n% t he axi s user dat a accor di ng t o the f ol l owi ng t abl e:

pl ay= 1;

st op=- 1;

i f nar gi n<1,

act i on=' i ni t i al i ze' ;

end;

i f s t r cmp(act i on, ' i ni t i al i ze' ) ,

ol dFi gNumber =wat chon;

f i gNumber =f i gur e( . . .

' Name' , ' Col or Spi nner ' , . . .

' NumberTi t l e' , ' of f ' , . . .

' Vi si bl e' , ' of f ' ) ;axes( . . .

' Uni t s ' , ' normal i zed' , . . .

' Posi t i on' , [ 0. 05 0. 05 0. 75 0. 90] , . . .

' Vi si bl e' , ' of f ' ) ;

 Modul Praktikum Matlab STMIK CIC  8

Page 9: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 9/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

t ext ( 0, 0, ' Pr ess t he "Star t " but t on t o see t he Spi nner

demo' , . . .

' Hor i zont al Al i gnment ' , ' cent er ' ) ;

axi s([ - 1 1 - 1 1] ) ;

%===================================

% I nf or mat i on f or al l but t ons

l abel Col or =[ 0. 8 0. 8 0. 8] ;

yI ni t Pos=0. 90;

xPos=0. 85;

bt nLen=0. 10;

bt nWi d=0. 10;% Spaci ng bet ween t he but t on and t he next command' s

l abel

spaci ng=0. 05;

%====================================

% The CONSOLE f r ame

f r mBor der =0. 02;

yPos=0. 05- f r mBorder ;

f r mPos=[ xPos- f r mBor der yPos bt nLen+2*f r mBor der

0. 9+2*f r mBorder] ;

h=ui cont r ol ( . . .

' St yl e' , ' f r ame' , . . .

' Uni t s ' , ' normal i zed' , . . .

' Pos i t i on' , f rmPos, . . .

' Backgr oundCol or ' , [ 0. 50 0. 50 0. 50] ) ;

%====================================

% The START but t on

bt nNumber =1;

yPos=0. 90- ( btnNumber- 1) *( bt nWi d+spaci ng) ;

 Modul Praktikum Matlab STMIK CIC  9

Page 10: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 10/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

l abel St r =' St ar t ' ;

cmdSt r =' st ar t ' ;

cal l backSt r=' spi nner ( ' ' s tar t ' ' ) ; ' ;

% Gener i c popup but t on i nf or mat i on

bt nPos=[ xPos yPos- spaci ng bt nLen bt nWi d] ;

st ar t Hndl =ui cont r ol ( . . .

' St yl e' , ' pushbut t on' , . . .

' Uni t s ' , ' normal i zed' , . . .

' Posi t i on' , btnPos, . . .

' St r i ng' , l abel St r , . . .

' I nt er r upt i bl e' , ' on' , . . .' Cal l back' , cal l backSt r ) ;

%====================================

% The STOP but t on

bt nNumber =2;

yPos=0. 90- ( btnNumber- 1) *( bt nWi d+spaci ng) ;

l abel St r =' St op' ;

% Set t i ng user dat a to - 1 ( =st op) wi l l st op t he demo.

cal l backSt r =' set ( gca, ' ' User dat a' ' , - 1) ' ;

% Gener i c popup but t on i nf or mat i on

bt nPos=[ xPos yPos- spaci ng bt nLen bt nWi d] ;

st opHndl =ui cont r ol ( . . .

' St yl e' , ' pushbut t on' , . . .

' Uni t s ' , ' normal i zed' , . . .' Posi t i on' , btnPos, . . .

' Enabl e' , ' of f ' , . . .

' St r i ng' , l abel St r , . . .

' Cal l back' , cal l backSt r ) ;

 Modul Praktikum Matlab STMIK CIC  10

Page 11: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 11/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

%====================================

% The I NFO but t on

l abel St r=' I nf o' ;

cal l backSt r=' spi nner ( ' ' i nf o' ' ) ' ;

i nf oHndl =ui cont r ol ( . . .

' St yl e' , ' push' , . . .

' Uni t s ' , ' normal i zed' , . . .

' Posi t i on' , [ xPos 0. 20 bt nLen 0. 10] , . . .

' St r i ng' , l abel St r , . . .

' Cal l back' , cal l backSt r ) ;

%====================================% The CLOSE but t on

l abel St r =' Cl ose' ;

cal l backSt r =' cl ose( gcf ) ' ;

cl oseHndl =ui cont r ol ( . . .

' St yl e' , ' push' , . . .

' Uni t s ' , ' normal i zed' , . . .

' Posi t i on' , [ xPos 0. 05 bt nLen 0. 10] , . . .

' St r i ng' , l abel St r , . . .

' Cal l back' , cal l backSt r ) ;

% Uncover t he f i gur e

hndl Li st =[ st ar t Hndl st opHndl i nf oHndl cl oseHndl ] ;

set ( f i gNumber , . . .

' Vi si bl e' , ' on' , . . .

' User Dat a' , hndl Li st ) ;

watchof f ( ol dFi gNumber ) ;

f i gur e( f i gNumber ) ;

el sei f st r cmp( act i on, ' star t ' ) ,

 Modul Praktikum Matlab STMIK CIC  11

Page 12: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 12/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

axHndl =gca;

f i gNumber =gcf ;

hndl Li st =get ( f i gNumber , ' User dat a' ) ;

st ar t Hndl =hndl Li st ( 1) ;

st opHndl =hndl Li st ( 2) ;

i nf oHndl =hndl Li st ( 3) ;

cl oseHndl =hndl Li st ( 4) ;

set ( [ star t Hndl i nf oHndl cl oseHndl ] , ' Enabl e' , ' of f ' ) ;

set ( stopHndl , ' Enabl e' , ' on' ) ;

% ====== St ar t of Demo

cl acol or map( [ ] )

N=50; % number of l i nes

M=50; % number of col or s

map=hsv( M) ;

set ( f i gNumber , ' Backi ngSt or e' , ' of f ' ) ;

set ( axHndl , . . .

' XLi m' , [ - 0. 01 1. 01] , ' YLi m' , [ - 0. 01 1. 01] , . . .

' XTi ck' , [ ] , ' YTi ck' , [ ] , . . .

' Box' , ' on' , . . .

' Dr awmode' , ' f ast ' , . . .

' Col or Or der ' , map, . . .

' Vi si bl e' , ' on' , . . .

' Next Pl ot ' , ' add' , . . .

' User Dat a' , pl ay) ;

h=pl ot ( [ 0 0] , zer os( 2, N) , ' Er aseMode' , ' backgr ound' ) ;

x=r and;

y=r and;

x1=r and;

 Modul Praktikum Matlab STMIK CIC  12

Page 13: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 13/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

y1=r and;

dx=. 01;

dy=. 01;

dx1=. 01;

dy1=. 01;

mi nd=. 001;

maxd=. 05;

i =0;

whi l e get ( axHndl , ' Userdat a' ) ==pl ay,

i =i +1;

x=x+dx;y=y+dy;

x1=x1+dx1;

y1=y1+dy1;

i f ( x>1) ,

x=1;

dx=- ( r and*( maxd- mi nd) +mi nd) ;

end

i f ( x<0) ,

x=0;

dx=( r and*( maxd- mi nd) +mi nd) ;

end

i f ( y>1) ,

y=1;

dy=- ( r and*( maxd- mi nd) +mi nd) ;

endi f ( y<0) ,

y=0;

dy=( r and*( maxd- mi nd) +mi nd) ;

end

 Modul Praktikum Matlab STMIK CIC  13

Page 14: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 14/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

i f ( x1>1) ,

x1=1;

dx1=- ( r and*( maxd- mi nd) +mi nd) ;

end

i f ( x1<0) ,

x1=0;

dx1=( r and*( maxd- mi nd) +mi nd) ;

end

i f ( y1>1) ,

y1=1;

dy1=- ( r and*( maxd- mi nd) +mi nd) ;

endi f ( y1<0) ,

y1=0;

dy1=( r and*( maxd- mi nd) +mi nd) ;

end

set ( h( r em( i , N) +1) , . . .

' Xdat a' , [ x x1] , . . .

' Ydat a' , [ y y1] ) ;

%' Col or ' , map( r em( i , M) +1, : ) ) ;

dr awnow;

end

% ====== End of Demo

set ( [ st ar t Hndl i nf oHndl cl oseHndl ] , ' Enabl e' , ' on' ) ;

set ( stopHndl , ' Enabl e' , ' of f ' ) ;

el sei f st r cmp( act i on, ' i nf o' ) ;

hel pwi n( mf i l ename) ;end; % i f str cmp( act i on, . . .

 Modul Praktikum Matlab STMIK CIC  14

Page 15: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 15/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Output :

Gambar : Animasi Spinner

 Modul Praktikum Matlab STMIK CIC  15

Page 16: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 16/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Bagian 4

Operasi Array

Semua komputasi yang dikerjakan sejauh ini hanya melibatkan

bilangan tunggal yang disebut skalar. Opeasi skalar memang

merupakan dasar matematika. Namun jika dalam sesaat kita ingin

melakuakan operasi yang sama pada beberapa bilangan, perulangan

operasi skalar akan menghabiskan waktu dan tentu saja tidak praktis.

Untuk mengatasi masalah ini matlab menyediakan operasi pada array

data.

Array Sederhana

Perhatikan masalah saat kita diharuskan untuk menggambar grafik

dengan fungsi y = sin(x) ; 0 ≤ x ≤  π , tidak mungkin kita

menghitung semua titik yang kita perlukan secara satu persatu.

Sintaks sederhana untuk menunjukan semua titik tersebut adalah

>> x=0:20:180

x =

0 20 40 60 80 100 120 140 160 180

>> y=sin(x)

y =

Columns 1 through 8

0 0.9129 0.7451 -0.3048 -0.9939 -0.5064 0.5806 0.9802

 Modul Praktikum Matlab STMIK CIC  16

Page 17: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 17/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Columns 9 through 10

0.2194  -0.8012

Pada tulisan x=0:10:180 dimaksudkan dengan :

-   x merupakan variabel yang menampung array

-   0 merupakan batas bawah dari array

-   10 merupakan selang atau interval

-   180 merupakan batas atas dari array

Pada tulisan y=sin(x) dimaksudkan dengan :

-   y merupakan variabel array yang menampung perhitungan dengan

sin x dimana x dari 0 sampai 180 dengan interval 10

Jika kita hanya membutuhkan nilai dari interval tertentu maka kita

bisa menuliskannya dengan sintaks:

>> x(4) % elemen array ke 4

ans =

60

Maksudnya adalah nilai dari x yang ke empat dari array x adalah 60

>> y(5) % nilai array ke 5

ans =

-0.9939

maksudnya adalah nilai array y yang ke 5 adalah -0.9939

kita juga bisa menuliskan nilai array tertentu dengan menunjukan

indeksnya contoh:

 Modul Praktikum Matlab STMIK CIC  17

Page 18: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 18/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

>> x(2:4)

ans =

20 40 60

maksudnya adalah semua nilai dengan indeks 2 sampai dengan 4 pada

array x , 2:4 berarti menghitung dari 2 sampai 5

Array n dimensi

Array yang kita bahas diatas merupakan array 1 dimensi, gabuangan

dari array merupakan sebuah matriks, sekarang kita akan menuliskan

bagaimana menuliskan array dalam n dimensi.

Contoh:

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

A =

1 2 3

4 5 6

7 8 9

merupakan matriks dengan 3 kolom dengan 3 baris

dalam array kita juga bisa memanipulasi elemen elemen yang ada

dalam array tersebut contohnya:

>> A(3,3)=0

A =

1 2 3

4 5 6

7 8 0

 Modul Praktikum Matlab STMIK CIC  18

Page 19: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 19/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

maksudnya mengganti elemen 3,3 menjadi 0

untuk mengetahui jumlah array kita gunakan sintaks size:

contoh:

>> size(A)

ans =

3  3

maksudnya matriks A merupakan matriks 3 x 3

Menciptakan matriks B dengan urutan baris A yang dibalik

>> B=A(3:-1:1,:)

B =

7 8 0

4 5 6

1 2 3

mengganti semua elemen baris ke 2 dari matriks B dengan 0 maka

sintaksnya:

>> B(2,:)=0

B =

7 8 0

0 0 01 2 3

Untuk membuat transpose dari matriks B kita gunakan sintaks:

>> E=B'

 Modul Praktikum Matlab STMIK CIC  19

Page 20: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 20/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

E =

7 0 1

8 0 2

0 0 3

sehingga bentuk dari perkalian manual yang ada dimatriks ada yang

langusng digunakan pada sintaks matlab.

Contoh Penggunaan Aplikasi Array

Problem: Elemen radioaktif polonium mempunyai waktu paruh 140

hari, yang berarti bahwa, karena radoaktif meluruh, jumlah polonium

yang tertinggal setelah 140 hari adalah setengah dari jumlah semula.

Jika dimiliki 10 gram polonium hari ini, berapa banyak yang tersisa

pada akhir setiap minggu selama 10 minggu ?

Penyelesaian : Menggunakan persamaan :

Jumlah_tinggal = jumlah_semula*0.5waktu/waktu_paruh

Untuk masalah ini, solusi dari MATLAB adalah :

>> initial_amount=10;

>> half_life=140;

>> time=7:7:70 %akhir dari 10 minggu pertama

time =

7 14 21 28 35 42 49 56 63 70

>> amount_left=initial_amount*0.5.^(time/half_life)

amount_left =

 Modul Praktikum Matlab STMIK CIC  20

Page 21: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 21/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Columns 1 through 8

9.6594 9.3303 9.0125 8.7055 8.4090 8.1225 7.8458

7.5786

Columns 9 through 10

7.3204  7.0711

Dengan matematika array sangat mudah untuk mengevaluasi suatu

ekspresi dengan banyak nilai untuk satu variabel. Perhatikan bahwa

pemangkatan titik .^ digunakan karena kita ingin menghitung 0.5

yang akan dipangkatkan dengan setiap elemen pada array eksponen.

Data ini dengan mudah digambarkan dengan matlab.

>> plot(time/7,amount_left)

>> xlabel('Jumlah Minggu'),ylabel('Jumlah Polonium tersisa')

hasilnya:

 Modul Praktikum Matlab STMIK CIC  21

Page 22: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 22/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Contoh Perhitungan Konsentrasi dengan Matematika Array

Problem : Sebagai bagian dari suatu proses pembuatan suku cadang

di suatu proses pembuatan suku cadang di suatu pabrik otomatis,

suku cadang tersebut dicelupkan ke air untuk pendinginan, kemudian

dicelup dibak air asam untuk membersihkan. Setelah beberapa lama,

konsentrasi larutan asam menurun karena air saat pencelupan

bertambah dan larutan yang terbuang saat suku cadang tadi diambil

dari bak. Untuk memelihara kualitas, keasaman larutan asam tidak

boleh kurang dari suatu batas minimum. Dimulai dengan konsentrasi

asam 90%. Jika konsentrasi minimum adalah 50%, air yang

bertambah ke bak asam adalah 1% dari volume bak, dan 1 % dari

larutan terbuang saat suku cadang dikeluarkan, berapa banyak suku

cadang dapat dicelupkan ke bak air asam sebelum keasaman larutan

dalam bak berada di bawah batas minimum?

Penyelesaian :

%Script M file example.m

initial_con=90;

min_con=50;

lost=1:10 % 1% sampai 10% dengan kenaikan 1%

n=floor(log(initial_con/min_con)./log(1+lost/100))

stem(lost,n)

xlabel('Persentase yang hilang setiap kali pencelupan')

ylabel('Jumlah Pencelupan')

title('Contoh Pencelupan Bak Air-Asam')

hasil :>> example

lost =

 Modul Praktikum Matlab STMIK CIC  22

Page 23: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 23/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

1 2 3 4 5 6 7 8 9 10

n =

59 29 19 14 12 10 8 7 6 6

 Modul Praktikum Matlab STMIK CIC  23

Page 24: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 24/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Bagian 5

Akar akar Persamaan

Permasalahan pemecahan persamaan nonlinear sering muncul

dari ebrbagai macam persoalan praktis. Bentuk umum

permasalahannya secara sederhana adalah menemukan sebuah nilai

variabel x sedemikian sehingga f(x) = 0, dimana f adalah sembarang

fungsi nonlinear x, sedangkan x merupakan solusi atau akar

persamaan ini. Sebelum kita lebih jauh tentang akar akar persamaan,

sebelumnya kita ulas sedikit tentang bagaimana menggambarkan

fungsi

Contoh:

Gambarkan fungsi dibawah ini :

1. y=(x – 1)3(x + 2)2 ( x – 3) ; 0 ≤ x ≤ 4

 jawab :

% Gambar1.m

x=0:0.1:4;

y=((x + 1).^3).*((x + 2).^2) .*( x - 3);

plot(x,y)

xlabel('Sumbu x')

ylabel('Sumbu y')

 Modul Praktikum Matlab STMIK CIC  24

Page 25: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 25/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Running :

>>gambar1

 

Gambar dari fungsi y=(x – 1)3(x + 2)2 ( x – 3) ; 0 ≤ x ≤ 4

2. y=exp )10sin(10

 x x

⎟ ⎠

 ⎞⎜⎝ 

⎛ −; 0 ≤ x ≤ 20

Jawab:

% Gambar2.m

x=0:0.1:20;

y=exp(-x/10).*sin(10*x);

plot(x,y)

xlabel('Sumbu x')

ylabel('Sumbu y')

 Modul Praktikum Matlab STMIK CIC  25

Page 26: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 26/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Running :

>>gambar2.m

Hasil dari plot fungsi y=exp )10sin(10 x

 x

⎟ ⎠

 ⎞⎜⎝ 

⎛ −; 0 ≤ x ≤ 20

Untuk persamaan non linear seperti diatas yang melibatkan fungsi

transenden, tugas mencari akar akar merupakan pekerjaan yang

cukup sulit apalagi ketika jumlah akar akarnya tidak diketahui atau

mungkin tak terbatas banyak akarnya. (Lihat contoh no 2) .

Sebetulnya secara sederhana kita bisa mencari titik di x yang

berpotongan dengan sumbu y = 0 secara grafik( solusi grafik

merupakan solusi juga) tapi itu masih terlalu kasar dan tidak terlalu

akurat apalagi untuk fungsi fungsi yang tidak diketahui solusinya

terletak di x berapa.

 Modul Praktikum Matlab STMIK CIC  26

Page 27: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 27/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Metoda Newton

Metoda ini merupakan solusi persamaan f(x) = 0 berdasarkan pada

sifat geometri sederhana tangen. Metode ini membutuhkan beberapa

aprokimasi awal untuk turunan f(x)nya berada pada daerah yang

diinginkan.

)(

)()('

01

00

 x x

 x f  x f 

−=  

)('

)(

0

001

 x f 

 x f  x x −=  

dapat ditulis :

)('

)(1

r r r 

 x f 

 x f  x x −=+ dimana r = 0, 1, 2, …

f(x)

x2

x1

0 x0

 Modul Praktikum Matlab STMIK CIC  27

Page 28: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 28/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Coba akar1

Function[res,it]=fnewton(func,dfunc,x,tol)

% x adalah nilai awal, tol adalah akurasi yang diinginkan

it=0;

xo=x;

d=feval(func,xo)/feval(dfunc,xo);

while abs(d)>tol

x1=xo – d;

it=it+1;

xo=x1;

d=feval(func,xo)/feval(dfunc,xo);

end;

res=xo

kita coba mencari sebuah akar persamaan(x – 1)3(x + 2)2 ( x – 3) = 0

untuk menggunkan metoda newton kita harus mendefinisikan fungsi

dan turunannya sehingga :

function F=f302(x);

F=x.^3 – 10.0*x.^2 + 29.0*x-20.0;

Function F=f303(x);

F=2*x.^2-20*x+29;

Maka kita panggil f newton tadi sebagai berikut :

>>[x,it]=fnewton(‘f302’,’f303’,7,.00005)

x=5.0000it=6

 Modul Praktikum Matlab STMIK CIC  28

Page 29: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 29/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Permasalahan yang sering muncul dalam mencari akar adalah :

1.  Mencari aprokimasi awal yang baik

2.  Fungsi berkondisi ‘sakit’ 

3.  Memutuskan pada kriteria konvergensi yang paling cocok

4.  Diskontinuitas pada persamaan yang dipecahkan

Fungsi fZero

Beberapa metoda di pencarian akar ini punya kelebihan dan

kekurangannya. Metode Brent mengkombinasikan interpolasi kuadratik

inversi dengan bisection untuk mendapatkan metode yang powerfull

yang terbukti cukup sukses yang mempunyai jangkauan yang luas

pada permasalahan yang cukup sulit.

Variasi metode ini secara langsung tersedia pada matlab yaitu fzero.

Misalnya untuk dengan toleransi 0.000050)cos( 3 =−  xe x

Jawab

function F=f307(x);

F=(exp(x)-cos(x)).^3;

%file utama

x=-4:.0:0.5;

plot(x,f307(x));grid on;

xlabel('Sumbu X');ylabel('Sumbu Y');

root=fzero('f307',1.65, 0.00005);

fprintf('Akar persamaan ini adalah %6.4f \n',root);

 Modul Praktikum Matlab STMIK CIC  29

Page 30: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 30/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

 Modul Praktikum Matlab STMIK CIC  30

Page 31: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 31/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Bagian 6

Deferensial dan Pengintegralan

Diferensial dan Integral merupakan operasi fundamental dalam

kalkulus dan hampir setiap bidang matematika, sains dan teknik.

Menentukan turunan fungsi secara analitik mungkin menyulitkan

meskipun relatif langsung.

Pembalikan dari proses ini akan menentukan integral fungsi, tapi

lebih sering sulit jika secara analitik atau bahkan tidak mungkin.

Dalam Matlab, diferensial untuk fungsi polinom adalah relatif mudah. Misalnya f(x) = x5 + 2x4 + 5x2 + 7x + 3 maka ambilah

koefisien koefisiennya.

Contoh:

>> g=[1 2 5 7 3]

g =

1 2 5 7 3

>> h=polyder(g)

h =

4 6 10 7Bentuk-bentuk deferensial lain juga bisa diperoleh apalag jika

menggunakan symbolyc math toolbox . Tapi tidak setiap matlab

dilengkapi dengan toolbox ini. Namun itu tidak masalah, kita akan

 Modul Praktikum Matlab STMIK CIC  31

Page 32: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 32/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

coba membuat sendiri penyelesaiannya dengan memanfaatkan deret

Taylor.

Diferensial Numerik

function q=diffgen(func,n,x,h);

if ((n=1)|(n==2)|(n==3)|(n==4))

c=zeros(4,7);

c(1,:)=[ 0 1 -8 0 8 -1 0];

c(2,:)=[0 -1 16 -30 16 -1 0];

c(3,:)=[1.5 -12 19.5 0 -19.5 12 -1.5];

c(4,:)=[-2 24 -78 112 -78 24 -2];

y=feval(func,x+ [-3:3]*h);

q=c(n,:)*y' ; q = q/(12*h^n);

else

disp('n harus 1, 2, 3 atau 4 ');break

end

Penggunaan fungsi diatas:

Jika kita mempunya y = cos(x) dan kita akan menghitung turunan

kedua dengan x = 1.2 dengan h atau ketelitian 0.01 maka dituliskan:

>> hasil=diffgen('cos',2,1.2,.01)

hasil =

-0.3624

Jika kita ingin menghitung sebuah diferensial disuatu titik maka kitaharus mendefinisikan fungsinya terlebih dahulu.

 Modul Praktikum Matlab STMIK CIC  32

Page 33: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 33/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Integrasi Numerik

Integral biasanya didefinisikan sebagai proses penjumlahan

tetapi juga diinterpretasikan sebagai daerah dibawah kurva y = f(x)

dari a ke b

∫=b

a

dx x f  L )(  

daerah diatas x dihitung positif sementara dibawah x dihitung negatif.

Banyak metode numerik untuk integrasi didasarkan pada impretasi

untuk mendapatkan aprokimasi integralnya. Misalnya fungsi trapz

berdasarkan impretasi bangunan trapesium.

Kita akan mencoba menghitung integral dengan berbagai metoda

numrik untuk menghitung integral fungsi

604.0)9(

1

01.0)3(

122

−+−

++−

= x x

 y  

Jawab:

Pertama kita buat dulu fungsi dari persamaan diatas

function y=humps(x)

y=1./(x-3).^2+.01)+1./((x-9).^2+.04)-6;

1.  Mengitung menggunakan trapz

>> x=-1:.17:2;

>> y=humps(x);

>> area=trapz(x,y)

area =

-16.6475

2.  Menghitung menggunakan quad 

>> x=-1:.17:2;

>> y=humps(x);

 Modul Praktikum Matlab STMIK CIC  33

Page 34: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 34/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

>> area=quad('humps',-1,2)

area =

-17.2104

Permasalahan yang mungkin muncul adalah :

1.  Fungsi kontinu pada daerah integral tetapi turunannya

diskontinu atau singular

2.  Fungsi diskontinue pada daerah integrasi

3.  Fungsi mempunyai singularitas pada daerah integrasi

4.  Daerah integrasi tak berhingga

 Modul Praktikum Matlab STMIK CIC  34

Page 35: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 35/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Bagian 7

Contoh Program Aplikasi Modelling

dengan Matlab

Traveling Salesman

Permasalahan: Kita ingin mengetahui jalan yang terpendek yang

harus dilalui oleh seorang salesman, teori dasarnya adalah pada teori

graph dalam mata kuliah matematika diskrit.

Jawaban

Listing travel.m

f uncti on t r avel ( acti on) ;

% Demo progr am TRAVEL Tr avel i ng sal esman

% demo i ni mer upakan ani masi yang di sebut

% "Tr avel i ng Sal esman" .

% Masal ahnya adal ah mencar i j al an t erpendek

% yang har us di l al ui .

% Al gor i t ma demo i ni sangat l ah seder hana

% Dan sangat cepat penyel esai annya

% Menggunakan menu pop up kot a unt uk membedakan masi ng

masi ng ani masi

% Kl i ck "St ar t "

% dan "St op" but t ons unt uk menyel esai kan ani masi

% Kot a yang di pi l i h akan di kunj ungi secar a r andom.

pl ay= 1;

st op=- 1;

i f nar gi n<1,

act i on=' i ni t i al i ze' ;

 Modul Praktikum Matlab STMIK CIC  35

Page 36: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 36/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

end;

swi t ch act i on

case ' i ni t i al i ze' ,

ol dFi gNumber=wat chon;

f i gNumber =f i gur e( . . .

' Name' , ' Tr avel : The Tr avel i ng Sal esman Pr obl em' , . . .

' NumberTi t l e' , ' of f ' , . . .

' Vi si bl e' , ' of f ' , . . .

' Doubl eBuf f er ' , ' on' , . . .

' Col or ' , [ 0 0 0] , . . .' Backi ngSt ore' , ' of f ' ) ;

axes( . . .

' Uni t s ' , ' normal i zed' , . . .

' Posi t i on' , [ 0. 05 0. 05 0. 75 0. 90] , . . .

' Vi si bl e' , ' of f ' , . . .

' Next Pl ot ' , ' add' ) ;

t ext ( 0, 0, ' Pr ess t he "St ar t " but t on t o see t he Tr avel i ng

Sal esman demo' , . . .

' Hor i zont al Al i gnment ' , ' cent er ' ) ;

axi s([ - 1 1 - 1 1] ) ;

%===================================

% I nf or mat i on f or al l but t ons

l abel Col or =[ 0. 8 0. 8 0. 8] ;yI ni t Pos=0. 90;

xPos=0. 85;

bt nWi d=0. 10;

bt nHt =0. 10;

 Modul Praktikum Matlab STMIK CIC  36

Page 37: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 37/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

% Spaci ng bet ween t he but t on and t he next command' s

l abel

spaci ng=0. 05;

%====================================

% The CONSOLE f r ame

f r mBor der =0. 02;

yPos=0. 05- f r mBorder ;

f r mPos=[ xPos- f r mBor der yPos bt nWi d+2*f r mBor der

0. 9+2*f r mBorder] ;

h=ui cont r ol ( . . .

' St yl e' , ' f r ame' , . . .' Uni t s ' , ' normal i zed' , . . .

' Pos i t i on' , f rmPos, . . .

' Backgr oundCol or ' , [ 0. 50 0. 50 0. 50] ) ;

%====================================

% The START but t on

bt nNumber =1;

yPos=0. 90- ( bt nNumber- 1) *( bt nHt +spaci ng) ;

l abel St r =' St ar t ' ;

cmdSt r =' st ar t ' ;

cal l backSt r =' t r avel ( ' ' star t ' ' ) ; ' ;

% Gener i c but t on i nf or mat i on

bt nPos=[ xPos yPos- spaci ng bt nWi d bt nHt ] ;

st ar t Hndl =ui cont r ol ( . . .' St yl e' , ' pushbut t on' , . . .

' Uni t s ' , ' normal i zed' , . . .

' Posi t i on' , btnPos, . . .

' St r i ng' , l abel St r , . . .

' I nt er r upt i bl e' , ' on' , . . .

 Modul Praktikum Matlab STMIK CIC  37

Page 38: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 38/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

' Cal l back' , cal l backSt r ) ;

%====================================

% The CI TI ES popup but t on

bt nNumber =2;

yPos=0. 90- ( bt nNumber- 1) *( bt nHt +spaci ng) ;

t ext St r=' Ci t i es ' ;

popupSt r =r eshape( ' 15 20 25 30 35 40 45 50

' , 4, 8) ' ;

% Gener i c but t on i nf or mat i on

bt nPos1=[ xPos yPos- spaci ng+bt nHt / 2 bt nWi d bt nHt / 2] ;bt nPos2=[ xPos yPos- spaci ng bt nWi d bt nHt / 2] ;

popupHndl =ui cont r ol ( . . .

' St yl e' , ' t ext ' , . . .

' Uni t s ' , ' normal i zed' , . . .

' Pos i t i on' , bt nPos1, . . .

' St r i ng' , t extSt r ) ;

bt nPos=[ xPos yPos- spaci ng bt nWi d bt nHt / 2] ;

popupHndl =ui cont r ol ( . . .

' St yl e' , ' popup' , . . .

' Val ue' , 4, . . . t

' Uni t s ' , ' normal i zed' , . . .

' Pos i t i on' , bt nPos2, . . .

' St r i ng' , popupSt r ) ;

%====================================% The STOP but t on

bt nNumber =3;

yPos=0. 90- ( bt nNumber- 1) *( bt nHt +spaci ng) ;

l abel St r =' St op' ;

% Set t i ng user dat a to - 1 ( =st op) wi l l st op t he demo.

 Modul Praktikum Matlab STMIK CIC  38

Page 39: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 39/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

cal l backSt r =' set ( gca, ' ' User dat a' ' , - 1) ' ;

% Gener i c but t on i nf or mat i on

bt nPos=[ xPos yPos- spaci ng bt nWi d bt nHt ] ;

st opHndl =ui cont r ol ( . . .

' St yl e' , ' pushbut t on' , . . .

' Uni t s ' , ' normal i zed' , . . .

' Posi t i on' , btnPos, . . .

' Enabl e' , ' of f ' , . . .

' St r i ng' , l abel St r , . . .

' Cal l back' , cal l backSt r ) ;

%====================================

% The I NFO but t on

l abel St r=' I nf o' ;

cal l backSt r =' t r avel ( ' ' i nf o' ' ) ' ;

i nf oHndl =ui cont r ol ( . . .

' St yl e' , ' push' , . . .

' Uni t s ' , ' normal i zed' , . . .

' Posi t i on' , [ xPos 0. 20 bt nWi d 0. 10] , . . .

' St r i ng' , l abel St r , . . .

' Cal l back' , cal l backSt r ) ;

%====================================

% The CLOSE but t on

l abel St r =' Cl ose' ;

cal l backSt r =' cl ose( gcf ) ' ;cl oseHndl =ui cont r ol ( . . .

' St yl e' , ' push' , . . .

' Uni t s ' , ' normal i zed' , . . .

' Posi t i on' , [ xPos 0. 05 bt nWi d 0. 10] , . . .

' St r i ng' , l abel St r , . . .

 Modul Praktikum Matlab STMIK CIC  39

Page 40: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 40/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

' Cal l back' , cal l backSt r ) ;

% Uncover t he f i gur e

hndl Li st =[ st ar t Hndl popupHndl st opHndl i nf oHndl

cl oseHndl ] ;

set ( f i gNumber , . . .

' Vi si bl e' , ' on' , . . .

' User Dat a' , hndl Li st ) ;

watchof f ( ol dFi gNumber ) ;

f i gur e( f i gNumber ) ;

case ' star t ' ,WNumber =wat chon;

axHndl =gca;

f i gNumber =gcf ;

hndl Li st =get ( f i gNumber , ' User dat a' ) ;

st ar t Hndl =hndl Li st ( 1) ;

popupHndl =hndl Li st ( 2) ;

st opHndl =hndl Li st ( 3) ;

i nf oHndl =hndl Li st ( 4) ;

cl oseHndl =hndl Li st ( 5) ;

set ( [ star t Hndl cl oseHndl i nf oHndl ] , ' Enabl e' , ' of f ' ) ;

set ( stopHndl , ' Enabl e' , ' on' ) ;

set ( axHndl , ' User dat a' , pl ay) ;

set ( popupHndl , ' Enabl e' , ' of f ' ) ;

% ====== St ar t of Demo

% Tr avel pr obl em% Thi s i s t he mai n pr ogr am f or t he Tr avel i ng Sal esman

Pr obl em.

% Thi s f unct i on makes use of t he f ol l owi ng ot her

f unct i ons:

% i nsi de

 Modul Praktikum Matlab STMIK CIC  40

Page 41: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 41/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

% Lay down a pi ct ur e of t he Uni t ed St at es f or gr aphi c

appeal .

l oad( ' usborder . mat ' , ' x' , ' y' , ' xx' , ' yy' ) ;

% The f i l e usbor der . mat cont ai ns a map of t he US i n t he

var i abl es

% x and y, and a geomet r i cal l y si mpl i f i ed ver si on of t he

same map

% i n t he var i abl es xx and yy.

cl a;

pl ot ( x, y, ' Col or ' , ' cyan' ) ;

axi s of f ;axi s([ - 0. 1 1. 5 - 0. 2 1. 2] ) ;

set ( axHndl , ' Dr awmode' , ' Fast ' ) ;

hol d on;

dr awnow;

npt sSt r =get ( popupHndl , ' St r i ng' ) ;

npt sVal =get ( popupHndl , ' Val ue' ) ;

npt s=st r 2doubl e( npt sSt r ( npt sVal , : ) ) ;

set ( popupHndl , ' Enabl e' , ' of f ' ) ;

% . . . el se gener at e t he r andom ci t i es t o vi si t

X=[ ] ;

 Y=[ ] ;

% For m t he US bor der i n i magi nar y coor ds f or t he I NSI DE

r out i new=xx+i *yy;

n=0;

whi l e n<npt s,

a=r and*1. 4+i *r and;

i f i ns i de( a, w) ,

 Modul Praktikum Matlab STMIK CIC  41

Page 42: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 42/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

X=[ X; r eal ( a) ] ;

 Y=[ Y; i mag( a) ] ;

n=n+1;

end;

end;

xy=[ X Y] ;

% Cal cul at e t he di st ance mat r i x f or al l of t he ci t i es

di st mat r i x = zer os( npt s) ;

f or count 1=1: npt s,

f or count 2=1: count 1,

x1 = xy(count 1, 1) ;y1 = xy(count 1, 2) ;

x2 = xy(count 2, 1) ;

y2 = xy(count 2, 2) ;

di st mat r i x( count 1, count 2) =sqrt ( ( x1- x2) 2̂+( y1-

y2) 2̂) ;

di st mat r i x( count 2, count 1) =di st mat r i x( count 1, count 2) ;

end;

end;

% Gener at e an i ni t i al r andom pat h bet ween t hose ci t i es

p=r andperm( npt s) ;

newxy=xy( p, : ) ;

newxy=[ newxy; newxy( 1, : ) ] ;xdat a=newxy( : , 1) ;

ydat a=newxy( : , 2) ;

wat chof f ( WNumber) ;

pl ot ( xdat a, ydat a, ' r . ' , ' Markers i ze' , 24) ;

pl ot handl e=pl ot ( xdat a, ydat a, ' yel l ow' , ' Li neWi dt h' , 2) ;

 Modul Praktikum Matlab STMIK CIC  42

Page 43: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 43/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

axi s of f ;

dr awnow;

l en=Local Pat hLengt h( p, di st mat r i x) ;

l enhi st =l en;

whi l e get ( axHndl , ' Userdat a' ) ==pl ay,

dr awnow;

dr awFl ag=0;

% Tr y a poi nt f or poi nt swap

% ========================swpt 1=f l oor ( npt s*r and) +1;

swpt 2=f l oor ( npt s*r and) +1;

swpt l o=mi n( swpt1, swpt2) ;

swpt hi =max( swpt 1, swpt 2) ;

order =1: npt s;

or der ( swpt l o: swpt hi ) =or der ( swpt hi : - 1: swpt l o) ;

pnew = p( or der ) ;

l ennew=Local Pat hLengt h( pnew, di st mat r i x) ;

i f l ennew<l en,

p=pnew;

l en=l ennew;

dr awFl ag=1;end;

% ========================

% Tr y a si ngl e poi nt i nser t i on

% ========================

 Modul Praktikum Matlab STMIK CIC  43

Page 44: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 44/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

swpt 1=f l oor ( npt s*r and) +1;

swpt 2=f l oor( ( npt s- 1) *r and) +1;

order =1: npt s;

or der ( swpt 1) =[ ] ;

or der =[ or der ( 1: swpt 2) swpt 1 order ( ( swpt 2+1) : ( npt s-

1 ) ) ] ;

pnew = p( or der ) ;

l ennew=Local Pat hLengt h( pnew, di st mat r i x) ;

i f l ennew<l en,

p=pnew;l en=l ennew;

dr awFl ag=1;

end

i f dr awFl ag,

newxy=xy(p, : ) ;

newxy=[ newxy; newxy( 1, : ) ] ;

xdat a=newxy( : , 1) ;

ydat a=newxy( : , 2) ;

set ( pl ot handl e, ' XDat a' , xdat a, ' YDat a' , ydat a) ;

dr awnow;

end;

% ========================

end;

% ====== End of Demo

set ( [ st ar t Hndl cl oseHndl i nf oHndl ] , ' Enabl e' , ' on' ) ;

set ( stopHndl , ' Enabl e' , ' of f ' ) ;

set ( popupHndl , ' Enabl e' , ' on' ) ;

case ' i nf o' ,

 Modul Praktikum Matlab STMIK CIC  44

Page 45: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 45/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

hel pwi n( mf i l ename)

end; % i f str cmp( act i on, . . .

f unct i on t ot al =Local Pat hLengt h( p, di st mat r i x) ;

npt s = si ze( p, 2) ;

t ot al =sum( di st mat r i x( [ ( p- 1) *npt s + p( [ end 1: ( end- 1) ] ) ] ) ) ;

Contoh OutPut

Trafeling Salesman dengan 25 Kota dihasilkan :

 Modul Praktikum Matlab STMIK CIC  45

Page 46: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 46/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Trafeling Salesman dengan 50 Kota dihasilkan :

 Modul Praktikum Matlab STMIK CIC  46

Page 47: matlab2

7/16/2019 matlab2

http://slidepdf.com/reader/full/matlab2-56338478710da 47/47

Modul Praktikum MATLAB Versi 6.5 Create by Luke