Thursday, November 15, 2012

Metode Bisection pada Matlab

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: 
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

1 comment:

  1. bro gimana klo persamaanya seperti ini
    f(x) = x^3+x^2-3x-3=0
    dimana x = 1 dan x=2

    ReplyDelete