Asumsi awal yang harus diambil adalah: ‘menebak’ interval awal [a,b] dimana f(x) adalah kontinu padanya, demikian pula harus terletak ‘mengapit’ (secara intuitif) nilai akar a, sedemikian rupa sehingga:
Misal fungsi inputnya: e^x-4x=0 dengan error 0.1 dan dengan interval [0,1], berikut algoritmanya dalam program matlab.
a=0;
b=1;
galat=0.1;
f=inline('exp(x)-4*x');
iterasi=1;
disp(' i a b fa fb x fx');
while (b-a)>galat
x= (a+b)/2;
disp(sprintf('%3g %10.7f %10.7f %10.7f %10.7f %10.7f %10.7f',iterasi,a,b,f(a),f(b),x,f(x)))
if f(a)*f(x)<0
b=x;
else
a=x;
end
if f(a)*f(b)==0
exit
end
iterasi=iterasi+1;
end
disp(sprintf('Hasil Akar=%11.8f',x))
xg=linspace(-7,7);
yg=f(xg);
plot(xg,yg)
grid on
berikut hasil iterasinya :
i a b fa fb x fx
1 0.0000000 1.0000000 1.0000000 -1.2817182 0.5000000 -0.3512787
2 0.0000000 0.5000000 1.0000000 -0.3512787 0.2500000 0.2840254
3 0.2500000 0.5000000 0.2840254 -0.3512787 0.3750000 -0.0450086
4 0.2500000 0.3750000 0.2840254 -0.0450086 0.3125000 0.1168379
Hasil Akar= 0.31250000
f (a) x f (b) <= 0
Misal fungsi inputnya: e^x-4x=0 dengan error 0.1 dan dengan interval [0,1], berikut algoritmanya dalam program matlab.
a=0;
b=1;
galat=0.1;
f=inline('exp(x)-4*x');
iterasi=1;
disp(' i a b fa fb x fx');
while (b-a)>galat
x= (a+b)/2;
disp(sprintf('%3g %10.7f %10.7f %10.7f %10.7f %10.7f %10.7f',iterasi,a,b,f(a),f(b),x,f(x)))
if f(a)*f(x)<0
b=x;
else
a=x;
end
if f(a)*f(b)==0
exit
end
iterasi=iterasi+1;
end
disp(sprintf('Hasil Akar=%11.8f',x))
xg=linspace(-7,7);
yg=f(xg);
plot(xg,yg)
grid on
berikut hasil iterasinya :
i a b fa fb x fx
1 0.0000000 1.0000000 1.0000000 -1.2817182 0.5000000 -0.3512787
2 0.0000000 0.5000000 1.0000000 -0.3512787 0.2500000 0.2840254
3 0.2500000 0.5000000 0.2840254 -0.3512787 0.3750000 -0.0450086
4 0.2500000 0.3750000 0.2840254 -0.0450086 0.3125000 0.1168379
Hasil Akar= 0.31250000
bro gimana klo persamaanya seperti ini
ReplyDeletef(x) = x^3+x^2-3x-3=0
dimana x = 1 dan x=2