Anda di halaman 1dari 47

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Modul Praktikum Matlab

Versi 6.5

Oleh

Saluky, S.Si

by Luke Modul Praktikum Matlab Versi 6.5 Oleh Saluky, S.Si Sekolah Tinggi Manajemen Informatika dan Komputer

Sekolah Tinggi Manajemen Informatika dan Komputer CIC STMIK CIC

Modul Praktikum Matlab STMIK CIC

1

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

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

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 :

>>for n = 1 : 10

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

end

>> x

x =

Columns 1 through 8

Modul Praktikum Matlab STMIK CIC

4

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

Columns 9 through 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; >> while x<5 disp('Diulang 5 kali');

Modul Praktikum Matlab STMIK CIC

5

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 dengan variasi kontruksi if-else-end. Bentuk paling

sederhana kontruksi if-else-end adalah :

If ekpresi

Pertintah

End

Contoh >> angka=-4; >> if angka > 0 disp('nilai nya adalah positif'); else disp('nilainya adalah negatif'); end nilainya adalah negatif

Modul Praktikum Matlab STMIK CIC

6

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 function spinner(action);

Modul Praktikum Matlab STMIK CIC

7

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 $

% Possible actions:

% initialize

% start

% Information regarding the play status will be held in

% the axis user data according to the following table:

play= 1;

stop=-1;

if nargin<1, action='initialize';

end;

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 STMIK CIC

8

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];

yPos

btnLen+2*frmBorder

h=uicontrol( 'Style','frame', 'Units','normalized', 'Position',frmPos, 'BackgroundColor',[0.50 0.50 0.50]);

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

% The START button

btnNumber=1;

yPos=0.90-(btnNumber-1)*(btnWid+spacing);

Modul Praktikum Matlab STMIK CIC

9

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

Modul Praktikum Matlab STMIK CIC

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;

% number of lines

M=50;

% 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');

x=rand;

y=rand;

x1=rand;

Modul Praktikum Matlab STMIK CIC

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

Modul Praktikum Matlab STMIK CIC

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,

Modul Praktikum Matlab STMIK CIC

14

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Output :

Modul Praktikum MATLAB Versi 6.5 Create by Luke Output : Gambar : Animasi Spinner Modul Praktikum

Gambar : Animasi Spinner

Modul Praktikum Matlab STMIK CIC

15

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

>> y=sin(x)

y =

Columns 1 through 8

0

0.9129

0.7451

Modul Praktikum Matlab STMIK CIC

80

100

120

140

160

180

-0.3048

-0.9939

-0.5064

0.5806

0.9802

 

16

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)

ans =

60

% elemen array ke 4

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

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

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

0

1

2

3

Untuk membuat transpose dari matriks B kita gunakan sintaks:

>> E=B'

Modul Praktikum Matlab STMIK CIC

19

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.5 waktu/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

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Columns 1 through 8

9.6594 9.3303

7.5786

9.0125

Columns 9 through 10

7.3204 7.0711

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:

xlabel('Jumlah Minggu'),ylabel('Jumlah Polonium tersisa') hasilnya: Modul Praktikum Matlab STMIK CIC 2 1

Modul Praktikum Matlab STMIK CIC

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 =

Modul Praktikum Matlab STMIK CIC

22

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

7 8 9 10 n = 59 29 19 14 12 10 8 7 6 6

Modul Praktikum Matlab STMIK CIC

23

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

; 0 x 4

% 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

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Running :

>>gambar1

MATLAB Versi 6.5 Create by Luke Running : >>gambar1 Gambar dari fungsi y=(x – 1) 3

Gambar dari fungsi y=(x – 1) 3 (x + 2) 2 ( x – 3)

2. y=exp

⎛− x

10

sin(10 )

x

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

; 0 x 20

; 0 x 4

25

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Running :

>>gambar2.m

Versi 6.5 Create by Luke Running : >>gambar2.m Hasil dari plot fungsi y=exp ⎛− x ⎞

Hasil dari plot fungsi y=exp

⎛− x

10

sin(10 )

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

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.

f

'(

x

0

) =

f

(

x

0

)

(

x

1

x

0

)

x = x

1

0

f

(

x

0

)

f

'(

x

0

)

dapat ditulis :

x

r

+

1

f ( x r ) = x − r dimana r = 0, 1, 2,
f
( x
r )
= x −
r
dimana r = 0, 1, 2, …
f
'( x
r )
f(x)
0
x 0
x 2
x 1

Modul Praktikum Matlab STMIK CIC

27

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

it=6

Modul Praktikum Matlab STMIK CIC

28

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.

(

x

e

Misalnya untuk

Jawab function F=f307(x);

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

cos

x

)

3

=

0

dengan toleransi 0.00005

%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

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Modul Praktikum MATLAB Versi 6.5 Create by Luke Modul Praktikum Matlab STMIK CIC 3 0

Modul Praktikum Matlab STMIK CIC

30

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) = x 5 + 2x 4 + 5x 2 + 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

7

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

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 kita harus mendefinisikan fungsinya terlebih dahulu.

Modul Praktikum Matlab STMIK CIC

32

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

L

=

b

a

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

+

(

x

3)

2

+

0.01

(

x

9)

2

+

0.04

6

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

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

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 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';

Modul Praktikum Matlab STMIK CIC

35

Modul Praktikum MATLAB Versi 6.5 Create by Luke

end;

switch action case 'initialize', oldFigNumber=watchon;

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;

Modul Praktikum Matlab STMIK CIC

36

Modul Praktikum MATLAB Versi 6.5 Create by Luke

% Spacing between the button label

spacing=0.05;

and the next command's

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

% The CONSOLE frame

frmBorder=0.02;

yPos=0.05-frmBorder;

frmPos=[xPos-frmBorder

0.9+2*frmBorder];

yPos

btnWid+2*frmBorder

h=uicontrol( 'Style','frame', 'Units','normalized', 'Position',frmPos, 'BackgroundColor',[0.50 0.50 0.50]);

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

% The START button

btnNumber=1;

yPos=0.90-(btnNumber-1)*(btnHt+spacing);

labelStr='Start';

cmdStr='start';

callbackStr='travel(''start'');';

% 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

Modul Praktikum MATLAB Versi 6.5 Create by Luke

'Callback',callbackStr);

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

% The CITIES popup button

btnNumber=2;

yPos=0.90-(btnNumber-1)*(btnHt+spacing);

textStr='Cities';

popupStr=reshape(' 15

20

25

30

',4,8)';

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,

'Units','normalized',

'Position',btnPos2,

'String',popupStr);

t

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

% 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

Modul Praktikum MATLAB Versi 6.5 Create by Luke

callbackStr='set(gca,''Userdata'',-1)';

% 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

Modul Praktikum MATLAB Versi 6.5 Create by Luke

'Callback',callbackStr);

% Uncover the figure

hndlList=[startHndl

closeHndl];

set(figNumber,

popupHndl

'Visible','on',

'UserData',hndlList);

watchoff(oldFigNumber);

figure(figNumber);

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 functions:

%

% inside

makes

Modul Praktikum Matlab STMIK CIC

use

of

the following other

40

Modul Praktikum MATLAB Versi 6.5 Create by Luke

% 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

Modul Praktikum MATLAB Versi 6.5 Create by Luke

X=[X; real(a)]; Y=[Y; imag(a)];

n=n+1;

end;

end;

xy=[X Y];

% 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+(y1-

y2)^2);

distmatrix(count2,count1)=distmatrix(count1,count2);

end;

end;

% Generate an initial random path between those cities p=randperm(npts);

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

xdata=newxy(:,1);

ydata=newxy(:,2);

watchoff(WNumber);

plot(xdata,ydata,'r.','Markersize',24);

plothandle=plot(xdata,ydata,'yellow','LineWidth',2);

Modul Praktikum Matlab STMIK CIC

42

Modul Praktikum MATLAB Versi 6.5 Create by Luke

axis off;

drawnow;

len=LocalPathLength(p,distmatrix);

lenhist=len;

while get(axHndl,'Userdata')==play, drawnow;

drawFlag=0;

% Try a point for point swap

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

swpt1=floor(npts*rand)+1;

swpt2=floor(npts*rand)+1;

swptlo=min(swpt1,swpt2);

swpthi=max(swpt1,swpt2);

order=1:npts;

order(swptlo:swpthi)=order(swpthi:-1:swptlo);

pnew = p(order);

lennew=LocalPathLength(pnew,distmatrix); if lennew<len, p=pnew; len=lennew;

drawFlag=1;

end;

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

% Try a single point insertion

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

Modul Praktikum Matlab STMIK CIC

43

Modul Praktikum MATLAB Versi 6.5 Create by Luke

swpt1=floor(npts*rand)+1;

swpt2=floor((npts-1)*rand)+1;

order=1:npts;

order(swpt1)=[];

order=[order(1:swpt2)

1))];

pnew = p(order);

swpt1

order((swpt2+1):(npts-

lennew=LocalPathLength(pnew,distmatrix); if lennew<len, p=pnew; len=lennew;

drawFlag=1;

end

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

Modul Praktikum MATLAB Versi 6.5 Create by Luke

helpwin(mfilename)

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 :

p([end 1:(end-1)])])); Contoh OutPut Trafeling Salesman dengan 25 Kota dihasilkan : Modul Praktikum Matlab STMIK CIC

Modul Praktikum Matlab STMIK CIC

45

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Trafeling Salesman dengan 50 Kota dihasilkan :

MATLAB Versi 6.5 Create by Luke Trafeling Salesman dengan 50 Kota dihasilkan : Modul Praktikum Matlab

Modul Praktikum Matlab STMIK CIC

46

Modul Praktikum MATLAB Versi 6.5 Create by Luke

Modul Praktikum Matlab STMIK CIC

47