Professional Documents
Culture Documents
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 matlab)
Modul Praktikum Matlab STMIK CIC
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 maka matlab dengan toolbox, kekuatan simulink matlab dan untuk sebagainya semakin menambah
x =
Columns 1 through 8
Modul Praktikum MATLAB Versi 6.5 Create by Luke 0.3090 0.9511 0.8090 0.5878 0.5878 0.8090 0.9511 1.0000
Columns 9 through 10
0.0000
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; >> while x<5 disp('Diulang 5 kali');
Modul Praktikum Matlab STMIK CIC
Modul Praktikum MATLAB Versi 6.5 Create by Luke x=x+1; end Diulang 5 kali Diulang 5 kali Diulang 5 kali Diulang 5 kali Diulang 5 kali
3. Kontruksi if-else-end Seringkali sederetan perintah harus dikerjakan dengan didasarkan pada hasil tes rasional. Dalam bahasa pemrograman, logika ini dikerjakan If ekpresi Pertintah End Contoh >> angka=-4; >> if angka > 0 disp('nilai nya adalah positif'); else disp('nilainya adalah negatif'); end nilainya adalah negatif dengan variasi kontruksi if-else-end. Bentuk paling sederhana kontruksi if-else-end adalah :
Modul Praktikum MATLAB Versi 6.5 Create by Luke %SPINNER Colorful lines spinning through space. % demonstrates some MATLAB animation capabilities.
% % %
Ned Gulley, 6-21-93 Copyright 1984-2002 The MathWorks, Inc. $Revision: 5.9 $ $Date: 2002/04/08 20:04:53 $
% Information regarding the play status will be held in % the axis user data according to the following table: play= 1; stop=-1;
if strcmp(action,'initialize'), oldFigNumber=watchon;
figNumber=figure( ... 'Name','Color Spinner', ... 'NumberTitle','off', ... 'Visible','off'); axes( ... 'Units','normalized', ... 'Position',[0.05 0.05 0.75 0.90], ... 'Visible','off');
Modul Praktikum MATLAB Versi 6.5 Create by Luke text(0,0,'Press the "Start" button to see the Spinner demo', ... 'HorizontalAlignment','center'); axis([-1 1 -1 1]);
%=================================== % Information for all buttons labelColor=[0.8 0.8 0.8]; yInitPos=0.90; xPos=0.85; btnLen=0.10; btnWid=0.10; % Spacing between the button and the next command's label spacing=0.05;
%==================================== % The CONSOLE frame frmBorder=0.02; yPos=0.05-frmBorder; frmPos=[xPos-frmBorder 0.9+2*frmBorder]; h=uicontrol( ... 'Style','frame', ... 'Units','normalized', ... 'Position',frmPos, ... 'BackgroundColor',[0.50 0.50 0.50]); yPos btnLen+2*frmBorder
Modul Praktikum MATLAB Versi 6.5 Create by Luke labelStr='Start'; cmdStr='start'; callbackStr='spinner(''start'');';
% Generic popup button information btnPos=[xPos yPos-spacing btnLen btnWid]; startHndl=uicontrol( ... 'Style','pushbutton', ... 'Units','normalized', ... 'Position',btnPos, ... 'String',labelStr, ... 'Interruptible','on', ... 'Callback',callbackStr);
%==================================== % The STOP button btnNumber=2; yPos=0.90-(btnNumber-1)*(btnWid+spacing); labelStr='Stop'; % Setting userdata to -1 (=stop) will stop the demo. callbackStr='set(gca,''Userdata'',-1)';
% Generic popup button information btnPos=[xPos yPos-spacing btnLen btnWid]; stopHndl=uicontrol( ... 'Style','pushbutton', ... 'Units','normalized', ... 'Position',btnPos, ... 'Enable','off', ... 'String',labelStr, ... 'Callback',callbackStr);
10
Modul Praktikum MATLAB Versi 6.5 Create by Luke %==================================== % The INFO button labelStr='Info'; callbackStr='spinner(''info'')'; infoHndl=uicontrol( ... 'Style','push', ... 'Units','normalized', ... 'Position',[xPos 0.20 btnLen 0.10], ... 'String',labelStr, ... 'Callback',callbackStr);
%==================================== % The CLOSE button labelStr='Close'; callbackStr='close(gcf)'; closeHndl=uicontrol( ... 'Style','push', ... 'Units','normalized', ... 'Position',[xPos 0.05 btnLen 0.10], ... 'String',labelStr, ... 'Callback',callbackStr);
% Uncover the figure hndlList=[startHndl stopHndl infoHndl closeHndl]; set(figNumber, ... 'Visible','on', ... 'UserData',hndlList);
watchoff(oldFigNumber); figure(figNumber);
elseif strcmp(action,'start'),
Modul Praktikum Matlab STMIK CIC
11
Modul Praktikum MATLAB Versi 6.5 Create by Luke axHndl=gca; figNumber=gcf; hndlList=get(figNumber,'Userdata'); startHndl=hndlList(1); stopHndl=hndlList(2); infoHndl=hndlList(3); closeHndl=hndlList(4); set([startHndl infoHndl closeHndl],'Enable','off'); set(stopHndl,'Enable','on');
% ====== Start of Demo cla colormap([]) N=50; M=50; % number of lines % number of colors
map=hsv(M); set(figNumber,'BackingStore','off'); set(axHndl, ... 'XLim',[-0.01 1.01],'YLim',[-0.01 1.01], ... 'XTick',[],'YTick',[], ... 'Box','on', ... 'Drawmode','fast', ... 'ColorOrder',map, ... 'Visible','on', ... 'NextPlot','add', ... 'UserData',play);
h=plot([0 0],zeros(2,N),'EraseMode','background');
12
Modul Praktikum MATLAB Versi 6.5 Create by Luke y1=rand; dx=.01; dy=.01; dx1=.01; dy1=.01; mind=.001; maxd=.05; i=0;
while get(axHndl,'Userdata')==play, i=i+1; x=x+dx; y=y+dy; x1=x1+dx1; y1=y1+dy1; if (x>1), x=1; dx=-(rand*(maxd-mind)+mind); end if (x<0), x=0; dx=(rand*(maxd-mind)+mind); end if (y>1), y=1; dy=-(rand*(maxd-mind)+mind); end if (y<0), y=0; dy=(rand*(maxd-mind)+mind); end
13
Modul Praktikum MATLAB Versi 6.5 Create by Luke if (x1>1), x1=1; dx1=-(rand*(maxd-mind)+mind); end if (x1<0), x1=0; dx1=(rand*(maxd-mind)+mind); end if (y1>1), y1=1; dy1=-(rand*(maxd-mind)+mind); end if (y1<0), y1=0; dy1=(rand*(maxd-mind)+mind); end set(h(rem(i,N)+1), ... 'Xdata',[x x1], ... 'Ydata',[y y1]); %'Color',map(rem(i,M)+1,:)); drawnow; end % ====== End of Demo set([startHndl infoHndl closeHndl],'Enable','on'); set(stopHndl,'Enable','off'); elseif strcmp(action,'info'); helpwin(mfilename); end; % if strcmp(action, ...
14
15
>> y=sin(x) y= Columns 1 through 8 0 0.9129 0.7451 -0.3048 -0.9939 -0.5064 0.5806 0.9802
16
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) ans = 60 Maksudnya adalah nilai dari x yang ke empat dari array x adalah 60 >> y(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: % nilai array ke 5 % elemen array ke 4
17
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 4 7 2 5 8 3 6 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 4 7 2 5 8 3 6 0
18
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 4 1 8 5 2 0 6 3
mengganti semua elemen baris ke 2 dari matriks B dengan 0 maka sintaksnya: >> B(2,:)=0 B= 7 0 1 8 0 2 0 0 3
Untuk membuat transpose dari matriks B kita gunakan sintaks: >> E=B'
19
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 time = 7 14 21 28 35 42 49 56 63 70 %akhir dari 10 minggu pertama
20
Modul Praktikum MATLAB Versi 6.5 Create by Luke Columns 1 through 8 9.6594 7.5786 Columns 9 through 10 7.3204 7.0711 9.3303 9.0125 8.7055 8.4090 8.1225 7.8458
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:
21
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 =
22
n= 59 29 19 14 12 10 8 7 6 6
23
24
;0x4
x 2. y=exp sin(10 x) 10
Jawab: % Gambar2.m x=0:0.1:20; y=exp(-x/10).*sin(10*x); plot(x,y) xlabel('Sumbu x') ylabel('Sumbu y')
; 0 x 20
25
Running : >>gambar2.m
; 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.
26
f ' ( x0 ) =
f ( x0 ) ( x1 x0 )
x1 = x0
f ( x0 ) f ' ( x0 )
f ( xr ) f ' ( xr )
dapat ditulis :
xr +1 = xr
dimana r = 0, 1, 2,
f(x)
x0
x2
x1
27
28
( e x cos x ) 3 = 0
29
30
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
Bentuk-bentuk
menggunakan symbolyc math toolbox. Tapi tidak setiap matlab dilengkapi dengan toolbox ini. Namun itu tidak masalah, kita akan
31
32
L =
f ( x ) dx
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
y=
1 1 + 6 2 ( x 3) + 0.01 ( x 9) 2 + 0.04
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
34
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 function travel(action); % Demo program TRAVEL Traveling salesman % % % % demo ini merupakan animasi yang disebut "Traveling Salesman" . Masalahnya adalah mencari jalan terpendek yang harus dilalui.
% % %
Algoritma demo ini sangatlah sederhana Dan sangat cepat penyelesaiannya Menggunakan menu pop up kota untuk membedakan masing
masing animasi % % % Klick "Start" dan "Stop" buttons untuk menyelesaikan animasi Kota yang dipilih akan dikunjungi secara random.
play= 1; stop=-1;
if nargin<1, action='initialize';
35
figNumber=figure( ... 'Name','Travel: The Traveling Salesman Problem', ... 'NumberTitle','off', ... 'Visible','off', ... 'DoubleBuffer','on', ... 'Color', [0 0 0], ... 'BackingStore','off'); axes( ... 'Units','normalized', ... 'Position',[0.05 0.05 0.75 0.90], ... 'Visible','off', ... 'NextPlot','add');
text(0,0,'Press the "Start" button to see the Traveling Salesman demo', ... 'HorizontalAlignment','center'); axis([-1 1 -1 1]);
%=================================== % Information for all buttons labelColor=[0.8 0.8 0.8]; yInitPos=0.90; xPos=0.85; btnWid=0.10; btnHt=0.10;
36
%==================================== % The CONSOLE frame frmBorder=0.02; yPos=0.05-frmBorder; frmPos=[xPos-frmBorder 0.9+2*frmBorder]; h=uicontrol( ... 'Style','frame', ... 'Units','normalized', ... 'Position',frmPos, ... 'BackgroundColor',[0.50 0.50 0.50]); yPos btnWid+2*frmBorder
% Generic button information btnPos=[xPos yPos-spacing btnWid btnHt]; startHndl=uicontrol( ... 'Style','pushbutton', ... 'Units','normalized', ... 'Position',btnPos, ... 'String',labelStr, ... 'Interruptible','on', ...
Modul Praktikum Matlab STMIK CIC
37
%==================================== % The CITIES popup button btnNumber=2; yPos=0.90-(btnNumber-1)*(btnHt+spacing); textStr='Cities'; popupStr=reshape(' 15 ',4,8)'; 20 25 30 35 40 45 50
% Generic button information btnPos1=[xPos yPos-spacing+btnHt/2 btnWid btnHt/2]; btnPos2=[xPos yPos-spacing btnWid btnHt/2]; popupHndl=uicontrol( ... 'Style','text', ... 'Units','normalized', ... 'Position',btnPos1, ... 'String',textStr); btnPos=[xPos yPos-spacing btnWid btnHt/2]; popupHndl=uicontrol( ... 'Style','popup', ... 'Value',4, ...t 'Units','normalized', ... 'Position',btnPos2, ... 'String',popupStr);
%==================================== % The STOP button btnNumber=3; yPos=0.90-(btnNumber-1)*(btnHt+spacing); labelStr='Stop'; % Setting userdata to -1 (=stop) will stop the demo.
Modul Praktikum Matlab STMIK CIC
38
% Generic button information btnPos=[xPos yPos-spacing btnWid btnHt]; stopHndl=uicontrol( ... 'Style','pushbutton', ... 'Units','normalized', ... 'Position',btnPos, ... 'Enable','off', ... 'String',labelStr, ... 'Callback',callbackStr);
%==================================== % The INFO button labelStr='Info'; callbackStr='travel(''info'')'; infoHndl=uicontrol( ... 'Style','push', ... 'Units','normalized', ... 'Position',[xPos 0.20 btnWid 0.10], ... 'String',labelStr, ... 'Callback',callbackStr);
%==================================== % The CLOSE button labelStr='Close'; callbackStr='close(gcf)'; closeHndl=uicontrol( ... 'Style','push', ... 'Units','normalized', ... 'Position',[xPos 0.05 btnWid 0.10], ... 'String',labelStr, ...
Modul Praktikum Matlab STMIK CIC
39
% Uncover the figure hndlList=[startHndl closeHndl]; set(figNumber, ... 'Visible','on', ... 'UserData',hndlList); watchoff(oldFigNumber); figure(figNumber); popupHndl stopHndl infoHndl
case 'start', WNumber=watchon; axHndl=gca; figNumber=gcf; hndlList=get(figNumber,'Userdata'); startHndl=hndlList(1); popupHndl=hndlList(2); stopHndl=hndlList(3); infoHndl=hndlList(4); closeHndl=hndlList(5); set([startHndl closeHndl infoHndl],'Enable','off'); set(stopHndl,'Enable','on'); set(axHndl,'Userdata',play); set(popupHndl, 'Enable', 'off'); % ====== Start of Demo % Travel problem % This is the main program for the Traveling Salesman Problem. % This function makes use of the following other
functions: % inside
Modul Praktikum Matlab STMIK CIC
40
% Lay down a picture of the United States for graphic appeal. load('usborder.mat','x','y','xx','yy'); % The file usborder.mat contains a map of the US in the variables % x and y, and a geometrically simplified version of the same map % in the variables xx and yy. cla; plot(x,y,'Color','cyan'); axis off; axis([-0.1 1.5 -0.2 1.2]); set(axHndl,'Drawmode','Fast'); hold on; drawnow;
nptsStr=get(popupHndl,'String'); nptsVal=get(popupHndl,'Value');
npts=str2double(nptsStr(nptsVal,:)); set(popupHndl, 'Enable', 'off'); % ...else generate the random cities to visit X=[]; Y=[]; % Form the US border in imaginary coords for the INSIDE routine w=xx+i*yy; n=0; while n<npts, a=rand*1.4+i*rand; if inside(a,w),
Modul Praktikum Matlab STMIK CIC
41
% Calculate the distance matrix for all of the cities distmatrix = zeros(npts); for count1=1:npts, for count2=1:count1, x1 = xy(count1,1); y1 = xy(count1,2); x2 = xy(count2,1); y2 = xy(count2,2); distmatrix(count1,count2)=sqrt((x1-x2)^2+(y1y2)^2);
42
len=LocalPathLength(p,distmatrix); lenhist=len;
swptlo=min(swpt1,swpt2); swpthi=max(swpt1,swpt2);
43
if drawFlag, newxy=xy(p,:); newxy=[newxy; newxy(1,:)]; xdata=newxy(:,1); ydata=newxy(:,2); set(plothandle,'XData',xdata,'YData',ydata); drawnow; end; % ======================== end;
% ====== End of Demo set([startHndl closeHndl infoHndl],'Enable','on'); set(stopHndl,'Enable','off'); set(popupHndl, 'Enable', 'on'); case 'info',
Modul Praktikum Matlab STMIK CIC
44
end;
% if strcmp(action, ...
function total=LocalPathLength(p,distmatrix); npts = size(p,2); total=sum(distmatrix([(p-1)*npts + p([end 1:(end-1)])])); Contoh OutPut Trafeling Salesman dengan 25 Kota dihasilkan :
45
46
47