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
% tll: 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)
>> fsposisisalah(f,2,3,100,1e-6)
interval a c b fa fc fb
------------------------------------------------------------------------------------------
1.0000
2.0000 2.1875 3.0000
-3.0000 -1.0950 13.0000
2.0000
2.1875 2.2506 3.0000
-1.0950 -0.3518 13.0000
3.0000
2.2506 2.2704 3.0000
-0.3518 -0.1084 13.0000
4.0000
2.2704 2.2764 3.0000
-0.1084 -0.0329 13.0000
5.0000
2.2764 2.2782 3.0000
-0.0329 -0.0100 13.0000
6.0000
2.2782 2.2788 3.0000
-0.0100 -0.0030 13.0000
7.0000
2.2788 2.2789 3.0000
-0.0030 -0.0009 13.0000
8.0000
2.2789 2.2790 3.0000
-0.0009 -0.0003 13.0000
9.0000
2.2790 2.2790 3.0000
-0.0003 -0.0001 13.0000
10.0000
2.2790 2.2790 3.0000
-0.0001 -0.0000 13.0000
Posting Komentar