- pertama tebakan awal tentukan dua buah titik a dan b pada sumbu x dengan (a<b)
- nilai akar r=c dari suatu fungsi f(x) terletak diantara interval [a,b] yang berlaku c=(a+b)/2
- jika fa=f(a) dan fb=f(b) berlaku fa*fb>0 maka proses mencari akar gagal
- jika fa=f(a) dan fb=f(b) berlaku fa*fb<0 maka proses mencari berlanjut dengan b=c atau fb=fc, jika tidak a=c atau fa=fc
- proses ini berlanjut terus menerus sampai nilai dari |b-a|< toleransi yang diberika diawal
- set c=(a+b)/2
- jika fc=0 maka x=c adalah solusi eksak dari suatu fungsi yang akan dicari
- jika fa.fc<0 maka solusi terletak pada interval (a,c)
- jika fa.fc>0 maka solusi terletak pada interval (c,b)
- dengan mengganti interval (a,b) dengan salah satu dari (a,c) atau (c,b) yang mengandung akar persamaan, kesalahan mencari akar persamaan f(x)=0 secara rata-rata setengah dari jarak interval tersebut
- pengulangan dilakukan samapai solusi eksak ditemukan
- metode bisection sangat sederhana
- selalu konvergen
- harus menebak dua titik
- kekonvergenan relatif lambat
- jika pada selang diamati terdapat akar yang sama (double root) atau closely spaced roots, metode bagi dua memberikan hasil yang tidak akurat
function fsposisisalah(f,a,b,n,toll)
%
----------- FUNGSI BAGI DUA (BISECTION)----------
%
variabel f :fungsi,
% a :batasan titik awal yang mengafit
akar c
% b :batasan titik akhir yang mengafit
akar c
% n :anyaknaya iterasi
% toll: nilai toleransi (epsiolon) yang
membatasi iterasi
syms x;
N=[];
disp('----------------------------------------------------------------');
fprintf('\t interval
\t a\t\t c \t\t b \t\t fa \t\t fc \t
fb\t\n');
disp('----------------------------------------------------------------');
for i=1:n, % i bergerak dari i sampai n
fa=subs(f,x,a); % fa
= f(a)
fb=subs(f,x,b); % fb
= f(b)
c=b-(fb*(b-a)/(fb-fa));
fc=subs(f,x,c); % fc
= f(c)
N=[N;i a c b fa fc fb];
if fa*fc<0 % f(a).f(c) < 0 maka
b=c; % interval akar ada di [a,c]
else % sebaliknay jiak f(b).f(c) < 0 maka
a=c; % interval akar ada di [c,b]
end
if abs(b-a)<toll % iterasi berenti ketika |b-a|< epsilon
break; % epsilon=toll --> didef. diawal
end
end
N
%
-------------------------------------------------------------------------
%
Untuk memanggil di Command Window
%
Pilih interval [a,b]=[2,3] dan n=25 dan toll=10^(-6)
%
>> syms x;
%
>> f=x^3-3*x-5
%
fsbisection(f,2,3,25,1e-6)
Outputnya:
>>
fsbisection(f,2,3,25,1e-6)
--------------------------------------------------------------------------------------------------------------------------------------
interval a c b fa fc fb
--------------------------------------------------------------------------------------------------------------------------------------
N =
1.0000 2.0000
2.5000 3.0000 -3.0000 3.1250
13.0000
2.0000 2.0000 2.2500
2.5000 -3.0000 -0.3594
3.1250
3.0000 2.2500 2.3750 2.5000
-0.3594 1.2715 3.1250
4.0000 2.2500
2.3125 2.3750 -0.3594 0.4290 1.2715
5.0000 2.2500 2.2813 2.3125 -0.3594 0.0281 0.4290
6.0000 2.2500
2.2656 2.2813 -0.3594 -0.1673 0.0281
7.0000 2.2656
2.2734 2.2813 -0.1673 -0.0700
0.0281
8.0000 2.2734 2.2773
2.2813 -0.0700 -0.0211 0.0281
9.0000 2.2773
2.2793 2.2813 -0.0211 0.0035
0.0281
10.0000 2.2773
2.2783 2.2793 -0.0211 -0.0088 0.0035
11.0000 2.2783 2.2788 2.2793 -0.0088 -0.0026 0.0035
12.0000 2.2788
2.2791 2.2793 -0.0026 0.0004 0.0035
13.0000 2.2788
2.2789 2.2791 -0.0026 -0.0011 0.0004
14.0000 2.2789 2.2790 2.2791 -0.0011 -0.0003 0.0004
15.0000 2.2790
2.2790 2.2791 -0.0003 0.0000 0.0004
16.0000 2.2790
2.2790 2.2790 -0.0003 -0.0001 0.0000
17.0000 2.2790
2.2790 2.2790 -0.0001 -0.0001 0.0000
18.0000 2.2790
2.2790 2.2790 -0.0001 -0.0000 0.0000
19.0000 2.2790
2.2790 2.2790 -0.0000 0.0000 0.0000
20.0000 2.2790
2.2790 2.2790 -0.0000 0.0000 0.0000
Dari tabel diatas terlihat bahwa akarnya diperoleh ketika nilai f(c) = 0, sehingga akar persamaan tersebut adalah 2.2790 yang diperoleh pada iterasi ke-20
+ komentar + 1 komentar
link kk manfaat banget nih.....
Posting Komentar