Beriklan di Blog Ini? .
MURAH DAN MUDAH.
Info Lebih Lanjut [ KONTAK KAMI]

Contoh Program Metode bagi Dua dalam Matlab

Metoda bagi dua atau dikenal dengan bisection method adalah metoda tertutup, maksudnya metoda ini digunakan untuk menentukan akar sebuah fungsi yang berada di antara dua titik pada sumbu hoizontal (sumbu x). Contohnya, diketahui r = akar yang belum diketahui dari sebuah fungsi f(x) dimana f(x) kontinu.
Adapun langkah yang harus dilakukan adalah :
  1. Menentukan 2 titik, misalkan a dan b pada sumbu x. Syaratnya a < b.
  2. nilai untuk r = c, berada diantara a dan b. Sehingga karena berada di antara adan b berlaku hubungan  c = (a+b)/2.
  3. Bila f(a) * f(b) > 0, maka pencarian akar gagal.
  4. Bila f(a)*f(b)< 0, dilanjutkan dengan b=c atau a=c
  5. Proses ini dilanjutkan hingga nilai |b-a| < dari toleransi yang telah diberikan di awal.
c = (a+b)/2. Dalam hal ini bila f(c)=0 maka, akar persamaan yang dicari  adalah c atau r=c. Kemungkinan lain adalah jika f(c) bukan 0. Maka akan harus diuji. Jika f(a).f(c) < 0 maka akarpersamaan ada di antara a dan c. Sebaliknya jika f(a).f(c)>0 maka akar persamaan berada di antara a dan b. Langkah seperti ini dilakukan hingga ditemukan penyelesaian eksak.

Keuntungan menggunakan metode bagi dua (bisection method) ini adalah karena kesederhanaannya. Kemudian ini termasuk konvergen (selalu). Sayangnya ketika menggunakan ini agak lama, karena harus menebak dua titik dan dilakukan perulangan. Dengan perulangan tersebut pastinya untuk menemukan keknvergenan terolong lambat. Kemudian, bila dalam interval terdapat akar yang sama metoda ini dirasa kurang akurat. Untuk lebih memahami secara manual bisa di baca : Contoh Soal dan Pembahasan Metode bagi Dua (Metode Numerik)

Untuk mempermudah pencarian ini bisa digunakan program matlab. Adapun penulisan kode tersebut seperti berikut.

function fsposisisalah(f,a,b,n,toll)
% ----------- Bisection Method----------
% variabel f :fungsi,
%          a :batasan titik awal yang mengafit akar c
%          b :batasan titik akhir yang mengafit akar c
%          n :banyaknaya 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 jika 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)


Akan didapat hasil seperti gambar di atas. Dari contoh tersebut kita mencari akar persamaan dari  f(x) =x3-3x-5 dalam interval [2,3]. Nilai yang didapat dari iterasi dengan toleransi 10-6 ada pada perhitungan ke 20. Jika diperhatikan, bagian yang saya warnai biru adalah data permasalahan. Anda pasti bisa menganalisa bagia bagian tersebut.