TUGAS KOMPUTASI
KE-2
METODE NUMERIK 1
ANALISIS KOMPUTASI
OLEH
NAMA ANDA
NIM. XXXXXXXX
A. Permasalahan
Permasalahan mencari akar atau solusi dari suatu persamaan nonlinear f ( x) 0 merupakan
permasalah yang cukup besar dalam matematika. Teknik mencari solusinya dapat dilakukan baik
secara analitik maupun numerik. Apabila cara analitik tidak bisa dilakukan, maka cara
numeriklah yang dapat diandalkan.
Banyak metode dalam numerik yang dapat digunakan untuk mencari akar dari suatu persamaan
nonlinear. Beberapa diantaranya adalah tergolong metode dasar, yaitu : metode Bisection,
Newton dan Secant. Bentuk iterasi dari metode iterasi ini adalah sebagai berikut.
Metode Bisection
ab
S1. Definisikan c
2
S2. Jika c b maka akar pendekatan = c dan STOP.
S3. Jika f (b). f (c) 0 maka tetapkan a c
Jika tidak, tetapkan b c. Kembali ke langkah S1.
Metode Newton
f ( xn )
xn1 xn , n 0,1,2,
f ' ( xn )
dengan x 0 : adalah nilai awal dan f ' ( xn ) 0.
Metode Secant
xn xn1
xn1 xn f ( xn ) , n 1,2,
f ( xn ) f ( xn1 )
dengan x0 dan x1 adalah nilai awal.
Dalam tugas ini saya akan menyelesaikan beberapa persamaan nonlinear dengan ketiga metode
yang disebutkan di atas. Hasil perhitungan dengan ketiga metode tersebut akan dianalisis untuk
melihat metode mana yang lebih unggul.
2
Adapun persamaan nonlinear yang digunakan adalah :
f1 ( x) x 6 x 1, x [1,2]
f 2 ( x) x e x , x [0,1]
C. Algoritma/program
Program Bisection
function root=bisect(a0,b0,error_bd,max_iterate,index_f)
if a0 >= b0
disp('a0 < b0 is not true. Stop!')
return
end
format short e
a = a0; b = b0;
fa = f(a,index_f); fb = f(b,index_f);
if sign(fa)*sign(fb) > 0
disp('f(a0) dan f(b0) bertanda sama. Stop!')
return
end
c = (a+b)/2;
it_count = 0;
while b-c > error_bd & it_count < max_iterate
it_count = it_count + 1;
fc = f(c,index_f);
fprintf('%2d %8.6f %8.6f %8.6f %8.6f \n',it_count,a,b,c,abs(b-c));
if sign(fb)*sign(fc) <= 0
a = c;
fa = fc;
else
b = c;
fb = fc;
end
c = (a+b)/2;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function value = f(x,index)
% fungsi/persamaan nonlinear yang akan diselesaikan.
switch index
case 1
value = x.^6 - x - 1;
case 2
value = x - exp(-x);
end
3
Program Newton
function root = newton(x0,error_bd,max_iterate,index_f)
%
format short e
error = 1;
it_count = 0;
while abs(error) > error_bd & it_count <= max_iterate
fx = f(x0,index_f);
dfx = deriv_f(x0,index_f);
if dfx == 0
disp(‘Turunan fungsi nol. Stop')
return
end
x1 = x0 - fx/dfx;
error = abs(x1 - x0);
it_count = it_count + 1;
fprintf('%2d %8.6f %8.6f \n',it_count,x0,error);
x0 = x1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function value = f(x,index)
% fungsi/persamaan nonlinear yang akan diselesaikan.
switch index
case 1
value = x.^6 - x - 1;
case 2
value = x - exp(-x);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function value = deriv_f(x,index)
% turunan fungsi
switch index
case 1
value = 6*x.^5 - 1;
case 2
value = 1 + exp(-x);
end
4
Program Secant
function root = secant(x0,x1,error_bd,max_iterate,index_f)
format short e
error = 1;
fx0 = f(x0,index_f);
it_count = 0;
%iteration = [it_count x0 fx0]
while abs(error) > error_bd & it_count <= max_iterate
it_count = it_count + 1;
fx1 = f(x1,index_f);
if fx1 - fx0 == 0
disp('f(x1) = f(x0); Pembagian dengan nol; Stop')
return
end
x2 = x1 - fx1*(x1-x0)/(fx1-fx0);
error = abs(x2 - x1);
fprintf('%2d %8.6f %8.6f %8.6f\n',it_count,x0,x1,error);
x0 = x1;
x1 = x2;
fx0 = fx1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function value = f(x,index)
% fungsi/persamaan nonlinear yang akan diselesaikan.
switch index
case 1
value = x.^6 - x - 1;
case 2
value = x - exp(-x);
end
5
D. Hasil Komputasi
Hasil komputasi yang diperoleh dengan me-run tiga program di atas disajikan dalam bentuk
tabel. Perintah yang digunakan adalah sebagai berikut:
Tabel. Perintah yang digunakan untuk komputasi
No Bentuk Perintah Output Keterangan
1. bisect(1,2,0.01,100,1) Tabel 1a Untuk fungsi pertama
2. bisect(0,1,0.01,100,2) Tabel 1b Untuk fungsi kedua
3. newton(1,0.01,100,1) Tabel 2a Untuk fungsi pertama
4. newton(0,0.01,100,2) Tabel 2b Untuk fungsi kedua
5. secant(1,2,0.01,100,1) Tabel 3a Untuk fungsi pertama
6. secant(0,1,0.01,100,2) Tabel 3b Untuk fungsi kedua
Hasil lengkap komputasi dengan error_bd (ε) = 0.01 disajikan dalam Tabel 1a sampai Tabel 3b
sebagai berikut.
6
Tabel 2b. Hasil Komputasi f 2 ( x) x e x , x [0,1] dengan Metode Newton
---------------------------------
n xn |xn-xn-1|
---------------------------------
1 0.500000 0.500000
2 0.566311 0.066311
3 0.567143 0.000832
---------------------------------
E. Kesimpulan
Dari Tabel 4 dapat dilihat bahwa untuk kedua contoh fungsi yang diberikan, metode Newton
lebih cepat menenukan akar pendekatan yang diharapkan. Akar yang ditemukan dengan
menggunakan metode Newton lebih akurat dibandingkan dua metode lainnya karena error
perhitungannya lebih kecil. Jadi dapat disimpulkan bahwa metode Newton lebih unggul
dibandingkan dua metode lainnya.