Metode biseksi dalam matematika merupakan metode yang digunakan untuk mencari akar persamaan nonlinier dengan membagi dua selang dan kemudian memilih selang bagian dimana akar harus terpenuhi untuk proses lebih lanjut.
Ide awal metode ini adalah metode table, dimana area dibagi menjadi N bagian.Hanya saja metode biseksi ini membagi range menjadi 2 bagian, dari dua bagian ini dipilih bagian mana yang mengandung dan bagian yang tidak mengandung akar dibuang.Hal ini dilakukan berulang-ulang hingga diperoleh akar persamaan.
Untuk menggunakan metode biseksi, terlebih dahulu ditentukan batas bawah (a) dan
batas atas (b). Kemudian dihitung nilai tengah :
c = (a+b)/2.
Dari nilai c perlu dilakukan pengecekan keberadaan akar. Secara matematik, suatu selang terdapat akar persamaan jika f(a) dan f(b) berlawanan tanda atau dapat dituliskan:
f(a) . f(b) < 0
Setelah diketahui dibagian mana terdapat akar, maka batas bawah dan batas atas diperbaharui sesuai dengan selang bagian yang mempunyai akar.
Algoritma Biseksi:
1. Definisikan fungsi f(x), tentukan selang [a b].
2. Tentukan toleransi error atau iterasi maksimum.
3. hitung nilai f(a) dan f(b).
4. Jika f(a).f(b) > 0, maka proses dihentikan karena tidak memiliki akar.
5. Jika f(a).f(b) < 0, maka proses dilanjutkan dengan menghitung c = (a+b)/2.
6. Hitung f(c).
7. Jika f(c).f(a) > 0 maka selang baru pada iterasi selanjutnya adalah [c b]. Jika f(c).f(b) > 0, maka selang baru [a c].
8. Jika |cn-cn-1| < error atau iterasi > iterasi soal maka proses dihentikan dan diperoleh akar = c, jika belum maka proses 5 diulangi.
Contoh soal. Diketahui f(x) = x^2 - 3, dengan error = 0.01 dan selang [1 2].
Berikut adalah tabel iterasi dari penyelesaian diatas.
a | b | f(a) | f(b) | c = (a + b)/2 | f(c) | Selang Baru | Error |
1.000 | 2.000 | -2.000 | 1.000 | 1.500 | -0.750 | [ c b ] | 0.500 |
1.500 | 2.000 | -0.750 | 1.000 | 1.750 | 0.062 | [ a c ] | 0.250 |
1.500 | 1.750 | -0.750 | 0.063 | 1.625 | -0.359 | [ c b ] | 0.125 |
1.625 | 1.750 | -0.359 | 0.063 | 1.687 | -0.152 | [ c b ] | 0.063 |
1.687 | 1.750 | -0.152 | 0.063 | 1.718 | -0.046 | [ c b ] | 0.031 |
1.718 | 1.750 | -0.046 | 0.063 | 1.734 | 0.008 | [ a c ] | 0.016 |
1.719 | 1.734 | -0.046 | 0.009 | 1.727 | -0.019 | [ a c ] | 0.008 |
Berikut script pada bahasa pemrograman
MATLAB R2012b untuk mencari akar persamaan nonlinier dengan metode biseksi.
Berdasarkan Iterasi.
% Metode biseksi berdasarkan galat : H. A. Nurham : hmprivates.blogspot.com
clear all
clc; syms x
disp('METODE BISEKSI - Iterasi : hmprivates.blogspot.com')
disp('======================')
f=x^2-3;
a=1; b=2; it=8;
%--------------------------------------------------------------------------
fa=subs(f,a); fb=subs(f,b);
%--------------------------------------------------------------------------
if fa*fb>0
disp('Hampiran akar tidak diketahui!')
return
end
%--------------------------------------------------------------------------
disp(' i a b fa fb c fc')
disp('----------------------------------------------------------')
%--------------------------------------------------------------------------
for i=1:it % atau while i<it
fa=subs(f,a); fb=subs(f,b); c=(a+b)/2; fc=subs(f,c);
fprintf('%3.d %7.3f %7.3f %8.3f %9.3f %9.3f %9.3f\n',i,a,b,fa,fb,c,fc)
if fa*fc>0
a=c;
else
b=c;
end
end
%--------------------------------------------------------------------------
disp('----------------------------------------')
fprintf('Maka nilai hampiran akar = %.4f.\n',c)
Berdasarkan Galat.
% Metode biseksi berdasarkan galat : H. A. Nurham : hmprivates.blogspot.com
clear all
clc; syms x
disp('METODE BISEKSI - Galat : hmprivates.blogspot.com')
disp('======================')
f=exp(x)-5*x^2;
a=1; b=2; gal=0.001; i=0;
%--------------------------------------------------------------------------
fa=subs(f,a); fb=subs(f,b); c=(a+b)/2; fc=subs(f,c); er=abs(c-b);
%--------------------------------------------------------------------------
if fa*fb>0
disp('Hampiran akar tidak diketahui!')
return
end
%--------------------------------------------------------------------------
disp(' i a b fa fb c fc error')
disp('----------------------------------------------------------------------')
%--------------------------------------------------------------------------
while er>gal
fa=subs(f,a); fb=subs(f,b); c=(a+b)/2; fc=subs(f,c);
if fa*fc>0
er=abs(c-a);
else
er=abs(c-b);
end
i=i+1;
fprintf('%3.d %7.3f %7.3f %8.3f %9.3f %9.3f %9.3f %9.3f\n',i,a,b,fa,fb,c,fc,er)
if fa*fc>0
a=c;
else
b=c;
end
end
%--------------------------------------------------------------------------
disp('----------------------------------------')
fprintf('Maka nilai hampiran akar = %.4f.\n',c)
fprintf('Pada iterasi ke %d\n',i)
File perhitungan dengan menggunakan microsoft excel dapat di download
di sini
Semoga bermanfaat.
Comments
Post a Comment