Asumsi awal yang harus diambil adalah sama seperti pada Metode Bisection, yaitu: ‘menebak’ interval awal [a,b] dimana f(x) adalah kontinu padanya, demikian pula interval tersebut harus terletak ‘mengapit’ (secara intuitif) nilai akar a, sedemikian rupa sehingga:
f (a) × f (b) <= 0
Meskipun pada algoritma berikut masih mengandung beberapa kelemahan, namun secara umum masih sangat menguntungkan untuk dipakai. Perbaikan dan modifikasi secara numeris dilakukan
oleh Brent (Atkinson, 1978),
oleh Brent (Atkinson, 1978),
Misal fungsi inputnya : e^x-4x=0 dengan error 0.1 dengan interval [0,1]
berikut algoritmanya dalam program matlab.
f=inline('exp(x)-4*x');
i=1;
err=0.1;
a=0;
b=1;
Tes=(2*b)-a;
xl=Tes;
disp('---------------------metode false position-----------------------')
disp('-----------------------------------------------------------------')
disp(' i a b f(a) f(b) x f(x) ')
disp('-----------------------------------------------------------------')
while Tes>=err
x=b-(f(b)*(b-a))/(f(b)-f(a));
disp(sprintf('%3g %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f',i,a,b,f(a),f(b),x,f(x)))
if f(a)*f(b)<=0
b=x;
else
a=x;
end
i=i+1;
Tes=abs(xl-x)/xl;
xl=x;
end
disp(sprintf('Hasil Akar=%11.8f',x))
xg=linspace(-7,7);
yg=f(xg);
plot(xg,yg)
grid on
berikut hasil iterasinya:
---------------------metode false position-----------------------
-----------------------------------------------------------------
i a b f(a) f(b) x f(x)
-----------------------------------------------------------------
1 0.00000 1.00000 1.00000 -1.28172 0.43827 -0.20305
2 0.00000 0.43827 1.00000 -0.20305 0.36430 -0.01769
3 0.00000 0.36430 1.00000 -0.01769 0.35797 -0.00145
Hasil Akar= 0.35796588
selamat siang,boleh saya mnita penjelasan program ini bang
ReplyDelete