panduan prak metode numerik statistika ub

50
Panduan Praktikum Metode Numerik dengan MATLAB 6.1 Jurusan Matematika Universitas Brawijaya Malang 1 Definisi Masalah Model Matematis Hasil Numerik / Grafik Data Teori Alat pemecahan masalah : komputer, statistika, metode numerik,dll Tatap muka masyarakat : Optimasi, penjadwalan, komunikasi,dll Implementasi TUJUAN Mahasiswa dapat menjelaskan dan menghitung galat dari suatu perhitungan dan dapat membuat program untuk menghampiri fungsi dengan menggunakan deret Taylor dan Mac Laurin. DASAR TEORI Pendahuluan Metode numerik adalah salah satu teknik penyelesaian masalah yang telah diformulasikan secara matematis dengan pendekatan yang dapat dipecahkan dengan menggunakan operasi perhitungan. Pada zaman pra komputer, biasanya para insinyur menggunakan tiga cara yang berbeda dalam memecahkan suatu masalah, yaitu: 1) menggunakan metode analitik atau eksak. 2) menggunakan grafik untuk memberikan ciri perilaku sistem. 3) menggunakan kalkulator manual untuk mengimplementasikan metode numerik. Berikut ini disajikan diagram penyelesaian masalah-masalah rekayasa: Gambar 1.1 PRAKTIKUM - 1 Galat

Upload: rara-aya-tiara

Post on 08-Apr-2016

304 views

Category:

Documents


11 download

DESCRIPTION

metode numerik statistika UB

TRANSCRIPT

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

1

Definisi Masalah

Model Matematis

Hasil Numerik / Grafik

Data Teori

Alat pemecahan masalah : komputer, statistika, metode numerik,dll

Tatap muka masyarakat : Optimasi, penjadwalan, komunikasi,dll

Implementasi

TUJUAN

Mahasiswa dapat menjelaskan dan menghitung galat dari suatu perhitungan dan

dapat membuat program untuk menghampiri fungsi dengan menggunakan deret

Taylor dan Mac Laurin.

DASAR TEORI

Pendahuluan

Metode numerik adalah salah satu teknik penyelesaian masalah yang telah

diformulasikan secara matematis dengan pendekatan yang dapat dipecahkan

dengan menggunakan operasi perhitungan. Pada zaman pra komputer, biasanya

para insinyur menggunakan tiga cara yang berbeda dalam memecahkan suatu

masalah, yaitu:

1) menggunakan metode analitik atau eksak.

2) menggunakan grafik untuk memberikan ciri perilaku sistem.

3) menggunakan kalkulator manual untuk mengimplementasikan metode

numerik.

Berikut ini disajikan diagram penyelesaian masalah-masalah rekayasa:

Gambar 1.1

PPRRAAKKTTIIKKUUMM -- 11

Galat

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

2

Data Numerik Algoritma Keluaran

Algoritma

Algoritma adalah urutan langkah-langkah logika yang menyatakan suatu tugas

dalam menyelesaikan suatu masalah.

Dalam bidang pemrograman, algoritma didefinisikan sebagai suatu metode

khusus yang tepat dan terdiri dari serangkaian langkah yang terstruktur dan

dituliskan secara sistematis yang akan dikerjakan untuk menyelesaikan suatu

masalah dengan bantuan komputer. Algoritma dapat dituliskan dalam bentuk

kalimat atau dinyatakan sebagai pseudocode. Pseudocode tidak bergantung

pada jenis bahasa pemrograman yang digunakan. Terdapat beberapa struktur

program yang biasanya digunakan dalam pseudocod, yaitu:

Struktur berurutan

Gaji Total Gaji + Bonus Harian

Struktur Seleksi

(a) IF Kondisi-1 THEN

Proses-1

ELSE

IF Kondisi-2 THEN

Proses-2

ELSE

….

….

Proses-n

….

END IF

END IF

(b) IF Kondisi-1 THEN

Proses-1

ELSE

(null)

END IF

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

3

Pseudocode untuk seleksi dengan menggunakan perintah CASE tidak berbeda

jauh dengan IF – THEN – ELSE, yaitu

CASE V OF

V1: Proses-1

V2: Proses-2

Vn:Proses-n

END CASE

Contoh :

CASE Pilihan OF

1: C A*B

2: C A+B

3: C A-B

END CASE

Struktur Perulangan (looping)

Untuk Do While pseudode strukturnya sebagai berikut:

Do While (Kondisi)

Perintah-1

Perintah-2

Perintah-n

END DO

Untuk Repeat Until pseudode strukturnya sebagai berikut:

REPEAT

Perintah-1

Perintah-2

Perintah-n

UNTIL (Kondisi)

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

4

Untuk For Next pseudode strukturnya sebagai berikut:

FOR I:=J TO K BY 2

Perintah-1

Perintah-2

Perintah-n

END FOR

Contoh 1.1

Buatlah algoritma dan program dengan menggunakan bahasa pemrograman

Matlab 6.1. untuk menghitung nilai p(x) = 1 + x + x2

+ x3

+…+ xn

Jawab :

Input : n, x

Output: px

1. px 1

2. suku 1

3. iterasi 1

4. WHILE (Iterasi < n) DO

a. suku suku*x

b. px px + suku

c. iterasi iterasi +1

5. cetak px

Output

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

5

Listing Program

function varargout = poliform(varargin)

% TAYLORFORM Application M-file for taylorform.fig

% FIG = TAYLORFORM launch poliform GUI.

% POLIFORM('callback_name', ...) invoke the named callback.

% Last Modified by GUIDE v2.0 26-Feb-2010 22:54:03

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Use system color scheme for figure:

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and

store it.

handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0

varargout{1} = fig;

end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); % FEVAL

switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

end

% ----------------------------------------------------------------

----

function varargout = pushbutton1_Callback(h, eventdata, handles,

varargin)

formku=guidata(gcbo);

n=str2double(get(formku.edit1,'String'));

x=str2double(get(formku.edit2,'String'));

suku=1;

iterasi=1;

px=1;

while(iterasi<n)

suku=suku*x;

px=px+suku;

iterasi=iterasi+1;

end;

set(formku.edit3,'String',num2str(px))

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

6

Tugas 1.1.1

Buatlah program untuk mengkonversi bilangan desimal N ke sistem bilangan

biner jika

a.) N bilangan bulat.

b.) N Bilangan pecahan

Galat

Galat numerik timbul dari penggunaan hampiran untuk menyatakan besaran

matematika yang eksak.

Penyelesaian secara numerik dari suatu persamaan matematika hanya

memberikan nilai perkiraan yang mendekati nilai eksak dari penyelesaian analitis.

Berarti dalam penyelesaian numerik tersebut terdapat kesalahan terhadap nilai

eksak. Ada tiga macam kesalahan :

Kesalahan bawaan

Kesalahan pembulatan

a.) Chopping

b.) Rounding

Kesalahan pemotongan

Kesalahan Absolut dan Relatif

Hubungan antara nilai eksak, nilai perkiraan dapat diberikan dalam bentuk

sebagai berikut :

P=P*+Ee

Dengan P : Nilai Eksak

P* : Nilai Perkiraan

Ee : Kesalahan terhadap Nilai Eksak

Indeks e menunjukan bahwa kesalahan dibandingkan terhadap nilai eksak. Dari

bentuk persamaan di atas dapat disimpulkan bahwa kesalahan adalah perbedaan

antara nilai eksak dan nilai perkiraan yaitu :

Ee= P-P*

Persamaan diatas disebut Kesalahan Absolut.

Kesalahan Relatif adalah perbandingan kesalahan yang terjadi dengan nilai eksak.

P

Ee

e

atau sering juga ditulis dalm bentuk persen

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

7

%100P

Ee

e

Nilai eksak solusi suatu masalah dapat diketahui bila masalah tersebut dapat

diselesaikan secara analitik. Untuk masalah yang tidak dapat diselesaikan secara

analitis, kesalahan dinyatakan berdasarkan nilai perkiraan terbaik dari nilai eksak,

sehingga kesalahan mempunyai bentuk berikut :

%,100*P

Ea

a

dengan

Ea : Kesalahan terhadap nilai perkiraan terbaik

P* : Nilai perkiraan terbaik.

Index a menunjukkan bahwa kesalahan dibandingkan terhadap nilai perkiraan.

Dalam metode numerik, sering dilakukan pendekatan secara iteratif,

sehingga kesalahan ditentukan dengan menghitung perbedaan antara nilai yang

diperoleh dari suatu dengan iterasi sebelumnya, sehingga kesalahan relatif

diberikan dalam bentuk

%,100*

**

1

1

n

nn

a

P

PP

dengan

*n

P : Nilai perkiraan pada iterasi ke n

*1n

P : Nilai perkiraan pada iterasi ke n+1

Perambatan Galat

Kesalahan yang terjadi karena akumulasi hasil Operasi bilangan : Jumlah, Kurang,

Bagi, Kali.

Deret Taylor

Definisi:

Andaikan f dan semua turunannya, f ’, f ’’,…terdefinisi dalam selang ],[ ba .

Misalkan 0

x ],[ ba , maka untuk nilai-nilai x ],[ ba di sekitar 0

x , )( xf dapat

diekspansikan ke dalam deret Taylor

...)(!

)(...)(''

!2

)()('

!1

)()()(

0

)(0

0

2

0

0

0

0xf

m

xxxf

xxxf

xxxfxf

m

m

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

8

Khususnya, bila fungsi diperluas di sekitar 0

x = 0, maka diperoleh deret Mac

Laurin.

Karena suku-suku deret Taylor tidak berhingga banyaknya, maka untuk alasan

praktis deret Taylor dipotong sampai orde tertentu. Deret Taylor yang dipotong

sampai orde ke-n dinamakan Deret Taylor terpotong, yang dinyatakan oleh

),()(!

)(...)(''

!2

)()('

!1

)()()(

0

)(0

0

2

0

0

0

0xRxf

n

xxxf

xxxf

xxxfxf

n

n

n

dengan

xcxcfn

xxxR

n

n

n 0

)1(

)1(

0,)(

)!1(

)()( disebut galat/ sisa.

Contoh 1.2

Jika nilai ex dapat didekati oleh deret

...!2

1

2x

xex

Buatlah program untuk menghitung ex dengan menggunakan pendekatan deret

tersebut, dimana inputnya adalah x dan iterasi maksimal, dan keluarannya berupa

nilai hampiran dari ex

dan galatnya.

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

9

Listing program function varargout = MacLaur(varargin)

% MACLAUR Application M-file for MacLaur.fig

% FIG = MACLAUR launch MacLaur GUI.

% MACLAUR('callback_name', ...) invoke the named callback.

% Last Modified by GUIDE v2.0 27-Feb-2010 09:01:01

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Use system color scheme for figure:

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and

store it.

handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0

varargout{1} = fig;

end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); %

FEVAL switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

end

% ----------------------------------------------------------------

----

function varargout = edit1_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit2_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = pushbutton1_Callback(h, eventdata, handles,

varargin)

formku=guidata(gcbo);

IterasiMax=str2double(get(formku.edit1,'String'));

x=str2double(get(formku.edit2,'String'));

y=0;

fak=1;

eEksak=exp(x);

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

10

Iterasi=1;

while (Iterasi<=IterasiMax)

if (Iterasi==1)

suku=1;

fak=1;

else

suku= suku * x;

fak=fak*(Iterasi-1);

end;

y=y+ suku/fak;

Iterasi=Iterasi+1;

end;

galat=abs(eEksak-y)/eEksak;

set(formku.edit3,'String',num2str(y))

set(formku.edit4,'String',num2str(galat))

LATIHAN SOAL

1. Buatlah program untuk menghitung nilai fungsi berikut dengan pendekatan

deret Mac Laurin, dengan input berupa harga x, iterasi maksimal dan output

berupa nilai hampiran beserta galatnya.

a. cos(2x)

b. e3x

c. ln(1+2x)

2. Buatlah program untuk menghampiri nilai fungsi ln(x) dengan deret Taylor di

sekitar x0 = 1, dengan input berupa harga x, iterasi maksimal dan output

berupa nilai hampiran beserta galatnya.

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

11

TUJUAN Mahasiswa dapat membuat program untuk mencari akar-akar persamaan tak linier

dengan menggunakan metode bagi dua, posisi palsu, Newton Raphson dan

Secant.

Mahasiswa dapat membandingkan tingkat efisiensi metode-metode tersebut dan

dapat menentukan metode yang tepat untuk menyelesaikan masalah yang

berhubungan dengan penentuan akar-akar persamaan tak linier.

DASAR TEORI

Metode Bagi dua

Kriteria penghentian iterasi pada metode bagi dua menggunakan galat relatif yang

dihitung dengan menggunakan rumus:

%100||

baru

lamabaru

a

c

cc

Algoritma Metode Bagi Dua

Input : a,b, epsilon

Output : akar

1.) Cek f(a)*f(b)

2.) IF cek <=0 THEN

a.) Iterasi 1

b.) cl a

c.) REPEAT

i) c (a+b)/2

ii) cek f(a)*f(c)

iii) if cek<0 then b c

else if cek>0 then a c

else exit

iv) galat Abs((c-cl)/c)

v) cl c

vi) Iterasi Iterasi+1

PPRRAAKKTTIIKKUUMM -- 22

Akar-Akar Persamaan Tak

Linier

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

12

UNTIL(galat<epsilon)

d.) Akar c

e.) Cetak Akar

else

Cetak “Belum Tentu ada Akar”

Contoh 2.1

Buatlah program untuk mencari akar 25)( xexf

x dalam selang [a,b] dengan

menggunakan metode bagi dua !

Jawab.

Listing program function varargout = bagi2(varargin)

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Use system color scheme for figure:

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and

store it.

handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0

varargout{1} = fig;

end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

13

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); %

FEVAL switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

end

% ----------------------------------------------------------------

----

function varargout = pushbutton1_Callback(h, eventdata, handles,

varargin)

clear;

formku=guidata(gcbo);

a=str2double(get(formku.edit4,'String'));

b=str2double(get(formku.edit5,'String'));

epsilon=str2double(get(formku.edit6,'String'));

set(gcf,'UserData',formku.listbox1);

str='';

str2=sprintf(' iterasi a b

c f(a) f(b) f(c)

galat') ;

str=str2mat(str,' ',str2);

set(formku.listbox1,'String',str);

h1=exp(a)-5*a^2;

h2=exp(b)-5*b^2;

if (h1*h2<0)

c=(a+b)/2;

i=0;

h1=exp(a)-5*a^2;

h3=exp(c)-5*c^2;

h2=exp(b)-5*b^2;

str=get(formku.listbox1,'String');

galat=abs(a-c);

str2=sprintf(' %d %5.7f %5.7f %5.7f %5.7f

%5.7f %5.7f %5.7f',i,a,b,c,h1,h2,h3,galat) ;

if(h1*h3<0)

b=c;

else

a=c;

end;

str=str2mat(str,' ',str2);

set(formku.listbox1,'String',str);

while (galat>epsilon)

i=i+1;

c=(a+b)/2;

h1=exp(a)-5*a^2;

h3=exp(c)-5*c^2;

h2=exp(b)-5*b^2;

galat=abs(a-c);

str=get(formku.listbox1,'String');

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

14

str2=sprintf(' %d %5.7f %5.7f %5.7f %5.7f

%5.7f %5.7f %5.7f',i,a,b,c,h1,h2,h3,galat) ;

if(h1*h3<0)

b=c;

else

a=c;

end;

str=str2mat(str,' ',str2);

set(formku.listbox1,'String',str);

end;

end;

Metode Posisi Palsu

Algoritma Metode Posisi Palsu

Input : a,b, epsilon

Output : akar

1.) cek f(a)*f(b)

2.) IF cek <=0 THEN

a.) Iterasi 1

b.) cl a

c.) REPEAT

i) c b-f(b)*(b-a)/(f(b)-f(a))

ii) cek f(a)*f(c)

iii) if cek<0 then

b c

else if cek>0 then a c

else exit

iv) galat Abs((c-cl)/c)

v) cl c

vi) Iterasi Iterasi+1

UNTIL(galat<epsilon)

d.) Akar c

e.) Cetak Akar

ELSE

a. Cetak “Belum Tentu ada Akar”

Contoh 2.2

Buatlah program untuk mencari akar 2

5)( xexfx

didalam selang [a,b] dengan

menggunakan metode posisi palsu!

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

15

Jawab.

function varargout = pospal(varargin)

% POSPAL Application M-file for pospal.fig

% FIG = POSPAL launch pospal GUI.

% POSPAL('callback_name', ...) invoke the named callback.

% Last Modified by GUIDE v2.0 27-Feb-2010 14:27:49

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Use system color scheme for figure:

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and store

it.

handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0

varargout{1} = fig;

end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

end

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

16

% ----------------------------------------------------------------

----

function varargout = pushbutton2_Callback(h, eventdata, handles,

varargin)

clear;

formku=guidata(gcbo);

a=str2double(get(formku.edit4,'String'));

b=str2double(get(formku.edit5,'String'));

epsilon=str2double(get(formku.edit6,'String'));

set(gcf,'UserData',formku.listbox1);

str='';

str2=sprintf(' iterasi a b

c f(a) f(b) f(c)

galat') ;

str=str2mat(str,' ',str2);

set(formku.listbox1,'String',str);

h1=exp(a)-5*a^2;

h2=exp(b)-5*b^2;

if (h1*h2<0)

c=(a+b)/2;

i=0;

h1=exp(a)-5*a^2;

h2=exp(b)-5*b^2;

c=b-h2*(b-a)/(h2-h1);

h3=exp(c)-5*c^2;

str=get(formku.listbox1,'String');

if(h1*h3<0)

galat=abs(c-a);

else

galat=abs(c-b);

end

str2=sprintf(' %d %5.7f %5.7f %5.7f %5.7f

%5.7f %5.7f %5.7f',i,a,b,c,h1,h2,h3,galat) ;

if(h1*h3<0)

b=c;

else

a=c;

end;

str=str2mat(str,' ',str2);

set(formku.listbox1,'String',str);

while (i<10)

i=i+1;

h1=exp(a)-5*a^2;

h2=exp(b)-5*b^2;

c=b-h2*(b-a)/(h2-h1);

h3=exp(c)-5*c^2;

if(h1*h3<0)

galat=abs(c-a);

else

galat=abs(c-b);

end

str=get(formku.listbox1,'String');

str2=sprintf(' %d %5.7f %5.7f %5.7f %5.7f

%5.7f %5.7f %5.7f',i,a,b,c,h1,h2,h3,galat) ;

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

17

if(h1*h3<0)

b=c;

else

a=c;

end;

str=str2mat(str,' ',str2);

set(formku.listbox1,'String',str);

end;

end;

Metode Newton Raphson

Algoritma Metode Newton Raphson

Input : x_lm, IterasiMax

Output : akar, galat

1.) Iterasi 1

2.) REPEAT

a.) x_lm x_br

b.) x_br x_lm-f(x_lm)/f_aks(x_lm)

c.) Iterasi Iterasi+1

UNTIL (galat<epsilon) or (Iterasi>=IterasiMax) ;

3.) IF iterasi<IterasiMax THEN

a.) akar x_br

b.) Cetak akar

ELSE

a.) Cetak “Akar belum ditemukan”

Metode Secant

Algoritma Metode Secant Input : x0, x1, IterasiMax

Output : akar, galat

1.) Iterasi 1

2.) REPEAT

a.) x x1-f(x1)*(x1-x0)/(f(x1)-f(x0))

b.) galat Abs((x-x1)/x)

c.) x0 x1

d.) x1 x

e.) Iterasi Iterasi+1

UNTIL (galat<epsilon) or (Iterasi>IterasiMax)

3.) IF iterasi<IterasiMax THEN

a.) akar x

b.) Cetak akar

ELSE

b.) Cetak “Akar belum ditemukan”

LATIHAN SOAL

1) Buatlah program untuk mencari akar 22

)( xexfx

dengan menggunakan

metode Newton Raphson!

2) Buatlah program untuk mencari akar 22

)( xexfx

dengan menggunakan

metode Secant!

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

18

3) Buatlah program untuk mencari akar 35)( xexf

x dengan menggunakan

metode bagi dua dan metode posisi palsu!. Kemudian bandingkan hasilnya.

4) Suatu arus osilasi dalam sebuah rangkaian listrik diberikan oleh

)2sin(10 teIt

, dengan t menyatakan waktu dalam detik. Buatlah

program metode Newton Raphson untuk menentukan semua t yang

memberikan nilai I =2.

5) Kecepatan seorang penerjun payung yang sedang jatuh diberikan oleh

tmce

c

gmv

)/(1[ , dengan g = 9,8. Untuk penerjun payung dengan koefisien

tarik c = 13,5 kg / detik, hitunglah massa m agar t = 6 detik diperoleh

kecepatan sebesar v = 3600 m/detik. Buatlah program metode posisi palsu,

metode bagi dua dan metode secant untuk mencari hampiran nilai m dengan

galat 0,01 .

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

19

TUJUAN

Mahasiswa dapat membuat program untuk menyelesaikan sistem persamaan linier

dengan menggunakan metode Gauss Jordan, metode dekomposisi LU dan reduksi

Crout.

DASAR TEORI

Sistem Persamaan Linier

Sistem persamaan linier (SPL) dengan n peubah dinyatakan sebagai:

11212111... bxaxaxa

nn

…………………………

nnnnnnbxaxaxa ...

2211

Dengan menggunakan perkalian matriks, sistem persamaan linier tersebut dapat

ditulis oleh:

Ax=B

Contoh 3.1

Buatlah program penyulihan mundur .

Jawab

Listing Program

fprintf('Metode Sulih Mundur \n');

fprintf('--------------------\n');

n=input('ordo :');

fprintf('Matrik A (Segitiga atas): \n');

for (i=1:n)

for (l=1:n)

fprintf('A [ %d, %d] =',i,l);a(i,l)=input('');

end;

end;

fprintf('Matrik B: \n');

for (i=1:n)

fprintf('B [ %d] =',i);b(i)=input('');

end;

PPRRAAKKTTIIKKUUMM -- 33

Sistem Persamaan Linear

22222121... bxaxaxa

nn

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

20

x(n)=b(n)/a(n,n);

for (k=1 : n-1)

sigma=0;

for (l=n+1-k : n)

sigma=sigma+a(n-k,l)*x(l);

end;

x(n-k)=(b(n-k)-sigma)/a(n-k,n-k);

end;

fprintf('x: \n');

for (i=1:n)

fprintf('X[%d] =%4.2f',i,x(i));

end;

Contoh 3.2

Buatlah program eliminasi Gauss dengan memperhatikan elemen pivot .

Jawab

fprintf('Eliminasi Gauss dengan Pivoting \n');

fprintf('--------------------\n');

ordo=input('ordo :');

fprintf('Matrik A : \n');

for (i=1:ordo)

for (l=1:ordo)

fprintf('A [ %d, %d] =',i,l);A(i,l)=input('');

end;

end;

for (i=1 : ordo)

fprintf('B [ %d] =',i);B(i)=input('');

end;

%........ logika element pivot ..........

k=1;

singular=0;

while(k<=ordo-1) & (singular~=1)

pivot=A(k,k);

r=k;

for (t=k+1 : ordo)

if (abs(A(t,k)) > abs(pivot))

pivot=A(t,k);

r=t;

end;

end;

if (pivot==0)

singular=1

else

if (r>k)

for (s=1 : ordo)

tampung=A(k,s);

A(k,s)=A(r,s);

A(r,s)=tampung;

end;

tampung=B(k);

B(k)=B(r);

B(r)=tampung;

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

21

end;

for (i=k+1 : ordo)

m=A(i,k)/A(k,k);

for (j=k: ordo )

A(i,j)=A(i,j)-m*A(k,j);

end;

B(i)=B(i)-m*B(k);

end;

end;

k=k+1;

end;

X(ordo)=B(ordo)/A(ordo,ordo);

for (k=1 : ordo-1)

sigma=0;

for (l=ordo+1-k : ordo)

sigma=sigma+A(ordo-k,l)*X(l);

end;

X(ordo-k)=(B(ordo-k)-sigma)/A(ordo-k,ordo-k);

end;

fprintf('x: \n');

for (i=1:ordo)

fprintf('X[%d] =%4.2f \n',i,X(i));

end;

Metode Dekomposisi LU

Jika A adalah matriks non singular maka ia dapat difaktorkan (diuraikan atau

didekomposisi) menjadi matriks segitiga bawah L dan matrik segitiga atas U

sedemikian sehingga

A = LU

Dalam bentuk matriks, pemfaktoran tersebut ditulis sebagai:

nnnn

n

n

aaa

aaa

aaa

,2,1,

,22,21,2

,12,11,1

....

..........................

....

....

=

1....

..........................

0....1

0...01

2,1,

1,2

nnll

l

nn

n

n

u

uu

uuu

,

,22,2

,12,11,1

....00

..........................

....0

....

Langkah-langkah penyelesaian Ax = B dengan metode dekomposisi LU adalah

sebagai berikut.

Faktorkan A menjadi L dan U sedemikian sehingga A = LU. Dengan demikian,

Ax= LU x=B

Misalkan Ux = y, maka Ly = B

Untuk memperoleh y1, y2, ... , yn digunakan metode penyulihan maju terhadap

Ly = B, yaitu

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

22

1....

..........................

0....1

0...01

2,1,

1,2

nnll

l

ny

y

y

.....

2

1

=

nb

b

b

.....

2

1

Selanjutnya, untuk memperoleh solusi SPL x1, x2, ..., xn digunakan teknik

penyulihan mundur terhadap Ux = y, yaitu

nn

n

n

u

uu

uuu

,

,22,2

,12,11,1

....00

..........................

....0

....

nx

x

x

.....

2

1

=

nb

b

b

.....

2

1

sehingga diperoleh x1, x2, ..., xn.

Contoh 3.3

Buatlah program untuk mencari matriks U dari sebuah matrik A.

Jawab

fprintf('Mencari Matriks U \n');

fprintf('--------------------\n');

ordo=input('ordo :');

fprintf('Matrik A : \n');

for (i=1:ordo)

for (l=1:ordo)

fprintf('A [ %d, %d] =',i,l);A(i,l)=input('');

end;

end;

%........ logika gauuus ..........

for (k=1 : ordo-1)

for (i=k+1 : ordo)

m=A(i,k)/A(k,k);

for (j=k : ordo )

A(i,j)=A(i,j)-m*A(k,j);

end;

end;

end;

A

Contoh 3.4

Buatlah program untuk mencari matrik L dari sebuah matrik A.

Jawab

fprintf('Mencari Matriks L \n');

fprintf('--------------------\n');

ordo=input('ordo :');

fprintf('Matrik A : \n');

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

23

for (i=1:ordo)

for (l=1:ordo)

fprintf('A [ %d, %d] =',i,l);A(i,l)=input('');

end;

end;

for (i=1:ordo)

for (l=1:ordo)

if (i~=l)

L(i,l)=0;

else

L(i,l)=1;

end;

end;

end;

%........ logika gauuus ..........

for (k=1 : ordo-1)

for (i=k+1 : ordo)

m=A(i,k)/A(k,k);

L(i,k)=m;

for (j=k : ordo )

A(i,j)=A(i,j)-m*A(k,j);

end;

end;

end;

L

LATIHAN SOAL 1) Buatlah program untuk mencari matrik L berdasarkan aturan Dekomposisi LU

dengan memperhatikan elemen pivot!

2) Buatlah program untuk mencari matrik U berdasarkan aturan Dekomposisi LU

dengan memperhatikan elemen pivot!

3) Buatlah program untuk metode dekomposisi LU untuk menyelesaikan sistem

persamaan linier!

4) Buatlah program untuk mencari matrik L berdasarkan aturan reduksi Crout!

5) Buatlah program untuk mencari matrik U berdasarkan aturan reduksi Crout!

6) Buatlah program reduksi Crout untuk menyelesaikan sistem persamaan linier !

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

24

TUJUAN

Mahasiswa dapat membuat program untuk melakukan interpolasi dengan

menggunakan polinomial dan dapat memilih metode interpolasi yang tepat untuk

menyelesaikan suatu masalah.

DASAR TEORI

Interpolasi Polinomial

Interpolasi polinom ada banyak jenis yaitu tergantung dari derajat dari polinom,

misalnya Interpolasi linier, Interpolasi Kuadratik, Interpolasi Kubik dan

Interpolasi berderajat n.

Interpolasi linier adalah interpolasi dua buah titik dengan sebuah garis lurus.

Polinom yang menginterpolasi titik-titik (x0,y0) dan (x1,y1). Polinom yang

menginterpolasi kedua titik itu berbentuk : p1(x)=a0+a1x.

Contoh 5.1

Buatlah program untuk memperikirakan jumlah penduduk Amerika serikat antara

tahun a sampai tahun b, jika disediakan data sebagai berikut:

Tahun a b

Jumlah Penduduk (Juta) T1 T2

Jawab :

PPRRAAKKTTIIKKUUMM -- 44

Interpolasi Polinomial

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

25

Listing Program

function varargout = Interpolasi(varargin)

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Use system color scheme for figure:

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and store

it.

handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0

varargout{1} = fig;

end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

end

% ----------------------------------------------------------------

----

function varargout = edit1_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit2_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit3_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit4_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit6_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit7_Callback(h, eventdata, handles,

varargin)

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

26

% ----------------------------------------------------------------

----

function varargout = pushbutton2_Callback(h, eventdata, handles,

varargin)

formku=guidata(gcbo);

x0=str2double(get(formku.edit1,'String'));

x1=str2double(get(formku.edit2,'String'));

y0=str2double(get(formku.edit3,'String'));

y1=str2double(get(formku.edit4,'String'));

global a0 a1

a0=((y1*x0)-(y0*x1))/(x0-x1);

a1=(y0-y1)/(x0-x1);

str='P(T)=';

if (a1>0)

str=strcat(str,num2str(a0));

str=strcat(str,'+');

str=strcat(str,num2str(a1));

str=strcat(str,'T');

else

str=strcat(str,num2str(a0));

str=strcat(str,num2str(a1));

str=strcat(str,'T');

end;

set(formku.text8,'String',str);

% ----------------------------------------------------------------

----

function varargout = pushbutton3_Callback(h, eventdata, handles,

varargin)

formku=guidata(gcbo);

global a0 a1

x2=str2double(get(formku.edit6,'String'));

y2=a0+a1*x2;

set(formku.edit7,'String',num2str(y2));

Misalkan diberikan tiga buah titik data, (x0,y0),(x1,y1) dan (x2,y2). Polinom yang

menginterpolasi ketiga buah titik itu adalah polinom kuadrat yang berbentuk:

p1(x)=a0+a1x+a2x2

LATIHAN SOAL

1.) Diketahui pasangan x dan f(x) yang tidak diketahui, sebagai berikut:

X 0,1 0,3 0,5 0,7

f(x) 0,003 0,067 0,148 0,248

Buatlah program untuk mencari nilai f(x) dengan interpolasi kubik .

2.) Diketahui pasangan x dan f(x) yang tidak diketahui, sebagai berikut:

X 0,1 0,3 0,5 0,7 0,9

f(x) 0,003 0,067 0,148 0,248 0,370

Buatlah program untuk mencari nilai f(x) dengan interpolasi derajat 4 .

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

27

3.) Buatlah program untuk memperikirakan jumlah penduduk Amerika serikat

antara tahun a sampai tahun d, jika disediakan data sebagai berikut:

Tahun a b c d

Jumlah Penduduk (Juta) T1 T2 T3 T4

4.) Buatlah program untuk mencari nilai f(x) dengan menggunakan metode

polinom derajat n!

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

28

TUJUAN

Mahasiswa bisa membuat program untuk masalah-masalah interpolasi.

Mahasiswa bisa memilih metode interpolasi yang tepat untuk menyelesaikan

suatu permasalahan

DASAR TEORI

Interpolasi Lagrange

Bentuk umum interpolasi Lagrange untuk (n+1) titik yang berbeda adalah sebagai

berikut:

n

i

iinxLaxp

0

)()( dimana niyaii

..1, dan n

ij

j ji

j

i

xx

xxxL

0 )(

)()(

Contoh 6.1

Diketahui fungsi y=f(x), diberikan oleh 3 buah titik data dalam tabel:

X a b c

f(x) F1 F2 F3

Buatlah program untuk membuat rumus polinom Lagrange derajat 2 !

Jawab

PPRRAAKKTTIIKKUUMM -- 55 Interpolasi Lagrange, Selisih Terbagi Newton,

Newton Gregory Maju dan Newton Gregory Mundur

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

29

Listing Program

function varargout = lagrang(varargin)

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Use system color scheme for figure:

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and store

it.

handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0

varargout{1} = fig;

end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

end

% ----------------------------------------------------------------

----

function varargout = edit1_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit2_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit3_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit4_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit5_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit6_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

30

function varargout = pushbutton2_Callback(h, eventdata, handles,

varargin)

formku=guidata(gcbo);

x(1)=str2double(get(formku.edit1,'String'));

x(2)=str2double(get(formku.edit2,'String'));

x(3)=str2double(get(formku.edit7,'String'));

y(1)=str2double(get(formku.edit3,'String'));

y(2)=str2double(get(formku.edit4,'String'));

y(3)=str2double(get(formku.edit8,'String'));

xx=str2double(get(formku.edit5,'String'));

Ly=0;

for (i=1 :3 )

L(i)=1;

for (j=1 : 3 )

if (i~= j)

L(i)=L(i)*(xx-x(j))/(x(i)-x(j));

end;

end;

Ly=Ly+y(i)*L(i);

end;

set(formku.edit6,'String',num2str(Ly));

% ---------------------------------------------------------------

-----

function varargout = edit7_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit8_Callback(h, eventdata, handles,

varargin)

Polinom Interpolasi Selisih-Terbagi Newton

Polinom interpolasi terbagi Newton mempunyai bentuk:

],,,...,[)(

)....)((....],,[))((],[)()()(

0121

10012100100

xxxxfxx

xxxxxxxfxxxxxxfxxxfxP

nn

n

dimana

],[ji

xxf =ji

ji

xx

xfxf )()(

],,[kji

xxxf =ki

kjji

xx

xxfxxf ],[],[

…………………………………

], ,...,,[011

xxxxfnn

=0

011],...,[],...,[

xx

xxfxxf

n

nn

Contoh 6.2

Diketahui fungsi y=f(x), diberikan oleh 3 buah titik data dalam tabel:

X x1 x2 x3

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

31

f(x) y1 y2 y3

Buatlah program interpolasi selisih terbagi Newton untuk mencari nilai f(x) .

Jawab

Listing Program

function varargout = newt(varargin)

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Use system color scheme for figure:

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and store

it.

handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0

varargout{1} = fig;

end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

32

end

% ----------------------------------------------------------------

----

function varargout = edit1_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit2_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit3_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit4_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit5_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit6_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = pushbutton1_Callback(h, eventdata, handles,

varargin)

formku=guidata(gcbo);

x(1)=str2double(get(formku.edit1,'String'));

x(2)=str2double(get(formku.edit2,'String'));

x(3)=str2double(get(formku.edit7,'String'));

y(1)=str2double(get(formku.edit3,'String'));

y(2)=str2double(get(formku.edit4,'String'));

y(3)=str2double(get(formku.edit8,'String'));

x1=str2double(get(formku.edit5,'String'));

for (k=0:2 )

ST(k+1,1)=y(k+1);

end;

for (k=1:2)

for (i=0:2-k)

ST(i+1,k+1)=(ST(i+2,k)-ST(i+1,k))/(x(i+k+1)-x(i+1))

end;

end;

jumlah=ST(1,1);

for (i=1 : 2)

suku=ST(1,i+1);

for (k=0 : i-1 )

suku=suku*(x1-x(k+1));

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

33

end;

jumlah=jumlah+suku;

end;

y1=jumlah;

set(formku.edit6,'String',num2str(y1));

% ----------------------------------------------------------------

----

function varargout = edit7_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit8_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = listbox1_Callback(h, eventdata, handles,

varargin)

LATIHAN SOAL

1.) Diketahui pasangan x dan f(x) yang tidak diketahui, sebagai berikut:

X 0,1 0,3 0,5 0,7 0,9

f(x) 0,003 0,067 0,148 0,248 0,370

a.) Buatlah program untuk mencari nilai f(x) dengan menggunakan

metode polinom lagrange dan polinom iterpolasi selisih terbagi

Newton!

2.) Buatlah program untuk mencari nilai f(x) dengan menggunakan metode

polinom Newton Gregory Mundur!

3.) Buatlah program untuk mencari nilai f(x) dengan menggunakan metode

polinom Newton Gregory Maju!

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

34

TUJUAN

Mahasiswa bisa membuat program untuk menyelesaikan masalah turunan

DASAR TEORI

Turunan

Turunan fungsi didefinisikan sebagai

h

xfhxfimlxfx

)()()('

0

Turunan numerik adalah menentukan hampiran nilai turunan fungsi f yang

diberikan dalam bentuk tabel.

Misal diberikan nilai-nilai x di x0 – h, dan x0 + h serta nilai fungsi untuk nilai –

nilai tersebut. Titik-titik yang diperoleh adalah (x-1, f -1), (x0, f0), dan (x1, f1), yang

dalam hal ini x-1= x0 – h dan x1= x0 + h. Terdapat tiga pendekatan untuk

menghitung nilai f’(x0) :

Hampiran Selisih Maju

Hampiran Selisih Mundur

Hampiran Selisih Pusat

h

ff

h

hxfhxfxf

22

)()()('

1100

0

Contoh 7.1

PPRRAAKKTTIIKKUUMM -- 66

Turunan Numerik

h

ff

h

xfhxfxf

0100

0

)()()('

h

ff

h

hxfxfxf

0100

0

)()()('

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

35

Buatlah program untuk menghitung turunan pertama (f’)dari fungsi y=x2 pada x=a

dengan menggunakan metode Selisih Maju .

Jawab

Listing Program

function varargout = maju(varargin)

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Use system color scheme for figure:

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and

store it.

handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0

varargout{1} = fig;

end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); %

FEVAL switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

end

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

36

% ----------------------------------------------------------------

----

function varargout = edit1_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit2_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit4_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = pushbutton1_Callback(h, eventdata, handles,

varargin)

formku=guidata(gcbo);

a=str2double(get(formku.edit1,'String'));

h=str2double(get(formku.edit2,'String'));

x0=a;

x1=a+h;

f0=x0*x0;

f1=x1*x1;

Turun=(f1-f0)/h;

set(formku.edit4,'String',num2str(Turun));

Contoh 7.2

Buatlah program untuk menghitung turunan pertama (f’) dari fungsi y=x2 pada

x=a dengan menggunakan metode Selisih Mundur .

Jawab

Listing Program

function varargout = Mundur(varargin)

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

37

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Use system color scheme for figure:

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and

store it.

handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0

varargout{1} = fig;

end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); %

FEVAL switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

end

% ----------------------------------------------------------------

----

function varargout = edit1_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit2_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit3_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = pushbutton1_Callback(h, eventdata, handles,

varargin)

formku=guidata(gcbo);

a=str2double(get(formku.edit1,'String'));

h=str2double(get(formku.edit2,'String'));

x0=a-h;

x1=a;

f0=x0*x0;

f1=x1*x1;

Turun=(f1-f0)/h;

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

38

set(formku.edit3,'String',num2str(Turun));

Contoh 7.3

Buatlah program untuk menghitung turunan pertama (f’)dari fungsi y=x2 pada x=a

dengan menggunakan metode Selisih Terpusat!

Jawab

Listing Program

function varargout = pusat(varargin)

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Use system color scheme for figure:

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and

store it.

handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0

varargout{1} = fig;

end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); % FEVAL

switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

end

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

39

% ----------------------------------------------------------------

----

function varargout = edit1_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit2_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit3_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = pushbutton1_Callback(h, eventdata, handles,

varargin)

formku=guidata(gcbo);

a=str2double(get(formku.edit1,'String'));

h=str2double(get(formku.edit2,'String'));

x0=a-h;

x1=a+h;

f0=x0*x0;

f1=x1*x1;

Turun=(f1-f0)/(2*h);

set(formku.edit3,'String',num2str(Turun));

LATIHAN SOAL

1.) Buatlah program untuk menyelesaikan turunan pertama (f’) dari f(x)=

sin(2x) pada x=a (satuan radian) dengan menggunakan metode :

a.) Selisih Maju

b.) Selisih Mundur

c.) Selisih Terpusat

2.) Buatlah program untuk menghitung turunan keempat (f(4)

)dari f(x)=cos(x)

pada x=a dengan menggunakan metode

a.) Selisih Maju

b.) Selisih Terpusat

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

40

TUJUAN

Mahasiswa bisa membuat program untuk menyelesaikan masalah integral .

DASAR TEORI

Integral

Integral merupakan anti turunan, integral dapat diperoleh secara analitik dan

secara numerik. Ada berbagai masalah integral yang sulit dikerjakan bila

menggunakan secara analitik sehingga harus diselesaikan secara numerik.

Integral tertentu menangani perhitungan integral antara batas-batas yang telah

ditentukan,yang dinyatakan sebagai:

)()(|)()( aFbFxFdxxfIb

a

b

a

Integrasi numerik adalah menghitung integral secara numerik.

Kaidah Segiempat

Luas satu pias adalah

)()(0

1

0

xhfdxxfI

x

x

dimana )(0

xf adalah tinggi pias atau

)()(1

1

0

xhfdxxfI

x

x

dimana )(1

xf adalah tinggi pias

PPRRAAKKTTIIKKUUMM -- 77

Integrasi Numerik

)( xfy

h

x0 x1

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

41

Untuk memperkecil galat maka daerah harus dipecah menjadi pias-pias yang lebih

kecil sehingga berdasarkan kaidah segi empat integral dapat dihitung dengan

rumus:

)](...)()([2

)(110

0

n

x

x

xfxfxfh

dxxfI

n

dengan n

bah

Contoh 8.1

Dengan menggunakan kaidah segiempat buatlah program untuk menghitung

integral

b

a

dxxI2

Jawab

Listing Program function varargout = Segi4(varargin)

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Use system color scheme for figure:

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and

store it.

handles = guihandles(fig);

guidata(fig, handles);

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

42

if nargout > 0

varargout{1} = fig;

end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); %

FEVAL switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

end

% ----------------------------------------------------------------

----

function varargout = pushbutton1_Callback(h, eventdata, handles,

varargin)

formku=guidata(gcbo);

a=str2double(get(formku.edit1,'String'));

b=str2double(get(formku.edit2,'String'));

n=str2double(get(formku.edit3,'String'));

h=(b-a)/n;

x=a;

Integral=x*x;

sigma=0;

for (i=1 : n-1)

x=x+h;

sigma=sigma+x*x;

end;

Integral=(Integral+sigma)*h;

set(formku.edit4,'String',num2str(Integral));

Kaidah Trapesium

Luas satu trapesium adalah

)]()([2

)(10

1

0

xfxfh

dxxfI

x

x

)( xfy

h

x0 x1

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

43

Rumus diatas dikenal sebagai kaidah trapesium. Untuk memperkecil galat maka

daerah harus dipecah menjadi pias-pias yang lebih kecil sehingga berdasarkan

kaidah trapesium integral dapat dihitung dengan rumus:

)]()(2...)(2)([2

)(110

0

nn

x

x

xfxfxfxfh

dxxfI

n

Contoh 8.2

Dengan menggunakan kaidah trapesium buatlah program untuk menghitung

integral

b

a

dxxI2

Jawab

Listing Program function varargout = Trapesium(varargin)

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Use system color scheme for figure:

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and

store it.

handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0

varargout{1} = fig;

end

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

44

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); %

FEVAL switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

end

% ----------------------------------------------------------------

----

function varargout = pushbutton1_Callback(h, eventdata, handles,

varargin)

formku=guidata(gcbo);

a=str2double(get(formku.edit1,'String'));

b=str2double(get(formku.edit2,'String'));

n=str2double(get(formku.edit3,'String'));

h=(b-a)/n;

x=a;

sigma=0;

for (i=0 : n )

if (i==0) | (i==n)

sigma=sigma+(x+i*h)*(x+i*h);

else

sigma=sigma+2*(x+i*h)*(x+i*h);

end;

end;

Integral=(sigma)*h/2;

set(formku.edit4,'String',num2str(Integral));

Kaidah Titik Tengah

Luas satu pias adalah

)()2

()(2/10

1

0

xhfh

xfhdxxfI

x

x

)( xfy

h

x0 x1/2 x1

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

45

Untuk memperkecil galat maka daerah harus dipecah menjadi pias-pias yang lebih

kecil sehingga berdasarkan kaidah titik tengah integral dapat dihitung dengan

rumus:

)](...)()([2

)(2/)1(2/32/1

0

n

x

x

xfxfxfh

dxxfI

n

Contoh 8.3

Dengan menggunakan kaidah Titik Tengah buatlah program untuk menghitung

integral

b

a

dxxI2

Jawab

Listing Program

function varargout = titiktengah(varargin)

if nargin == 0 % LAUNCH GUI

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and store

it.

handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0

varargout{1} = fig;

end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

46

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

end

% ----------------------------------------------------------------

----

function varargout = edit1_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit2_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit3_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit4_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = pushbutton1_Callback(h, eventdata, handles,

varargin)

formku=guidata(gcbo);

a=str2double(get(formku.edit1,'String'));

b=str2double(get(formku.edit2,'String'));

n=str2double(get(formku.edit3,'String'));

h=(b-a)/n;

x=a+h/2;

Integral=x*x;

sigma=Integral;

for (i=1 : n-1)

x=x+h;

sigma=sigma+x*x;

end;

Integral=sigma*h;

set(formku.edit4,'String',num2str(Integral));

Kaidah Simpson

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

47

Kaidah Simpson 1/3

Kaidah simpson 1/3 dirumuskan oleh:

)]()(2)(4)((3

)]()(4)([3

...)].()(4)([3

)]()(4)([3

)(

2

,..6,4,2

1

,..5,3,1

0

12

432210

0

n

n

i

i

n

i

i

nnn

x

x

xfxfxfxfh

xfxfxfh

xfxfxfh

xfxfxfh

dxxfI

n

n harus genap.

Kaidah Simpson 3/8

Kaidah simpson 3/8 dirumuskan oleh:

)]()(2)(3)((8

3

)]()(3)(3)([8

3

...)].()(3)(3)([8

3)]()(3)(3)([

8

3)(

3

,..9,6,3

1

9,6,3

1

0

123

65433210

0

n

n

i

i

n

i

i

i

nnnn

x

x

xfxfxfxfh

xfxfxfxfh

xfxfxfxfh

xfxfxfxfh

dxxfI

n

n harus habis dibagi 3.

Contoh 8.4

Dengan menggunakan kaidah Simpson 3/8 buatlah program untuk menghitung

integral

b

a

dxxI2

Jawab

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

48

Listing Program

function varargout = simpson(varargin)

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Use system color scheme for figure:

set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

% Generate a structure of handles to pass to callbacks, and

store it.

handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0

varargout{1} = fig;

end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); % FEVAL

switchyard

else

feval(varargin{:}); % FEVAL switchyard

end

catch

disp(lasterr);

end

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

49

end

% ----------------------------------------------------------------

----

function varargout = edit1_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit2_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit3_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = edit4_Callback(h, eventdata, handles,

varargin)

% ----------------------------------------------------------------

----

function varargout = pushbutton1_Callback(h, eventdata, handles,

varargin)

formku=guidata(gcbo);

a=str2double(get(formku.edit1,'String'));

b=str2double(get(formku.edit2,'String'));

n=str2double(get(formku.edit3,'String'));

h=(b-a)/n;

x=a;

Integral=a*a+b*b;

sigma=Integral;

for (i=1 : n-1)

x=x+h;

if (rem(i,3) ~=0)

sigma=sigma+3*x*2;

else

sigma=sigma+2*x*x;

end;

end;

Integral=sigma*h*3/8;

set(formku.edit4,'String',num2str(Integral));

Panduan Praktikum Metode Numerik dengan

MATLAB 6.1

Jurusan Matematika Universitas Brawijaya Malang

50

LATIHAN SOAL

1.) Buatlah program untuk menghitung integral

b

a

dxx

xI

21

2 dengan menggunakan metode

a.) Kaidah segiempat

b.) Kaidah Trapesium

c.) Kaidah Titik Tengah

d.) Simpson 1/3

e.) Simpson 3/8

f.) Romberg