akar sebuah fungsi yang berada di antara dua titik pada sumbu hoizontal (sumbu x). Seperti akan
dicari akar / penyelesaian /solusi dari f(x)= x2 + 3x - 6.
Langkah yang harus dilakukan dalam mencari solusi eksak dari sebuah fungsi dengan metode
bagi dua ini adalah :
Diketahui f(x)= x2 + 3x - 6. Akan dicari solusi persamaan tersebut dengan toleransi 0,01.
Langkah pertama kita akan tetapkan dua nilai batas sebagai interval. kita akan ambil 0 dan 1. Jika
di cari f(1) = -2 dan f(0)=-6. f(1)*f(0) = 12 > 0. Artinya pencarian akar pada selang ini gagal.
Untuk itu kita ambil interval lain yaitu 1 dan 2.
Untuk inerval [1,2] : f(1) = -2, f(2) = 4. f(1)*f(0) = -8 <0 - (*memenuhi syarat 3). Dengan
demikian ini bisa dilanjutkan dengan menggunakan nilai c = (a+b)/2 = (1+2)/2 = 1,5. f(c)= f(1,5)
= 0,4. Karena nilai |f(c) | > Toleransi maka dilanjutkan dengan menguji f(a)*f(c).
f(a) = -2, f(c) = 0,4. Karena f(a)*f(c)= -2*0,4 = -0,8 < 0 , Maka akar yang dicari berada diinterval
baru [a,c] = [ 1, 1.5]. Disini nilai b digantikan oleh c. Lanjutkan lagi mencari c yang baru.
c = (a+b)/2 = (1+1,5)/2 (ingat nilai b sudah digantikan oleh c). Lakukan lagi seperti langkah
sebelumnya. c = 1,375. Lalu cari f(c), bila ditemukan nilai | f(c) | > Toleransi, maka lakukan
perulangan. Perhitungan akan dihentikan saat nilai |f(c)| < Toleransi.
Jika anda melanjutkan hingga 8 kali maka baru akan diperoleh nilah |f(c)| <0. Saat itu nilai |f(c)| =
0,006. Kemudian lihatlah nilai c pada saat itu. Nilai c saat itu adalah 1,367. Maka solusi eksak
dari fungsi tersebut adalah : 1,367
an Kekurangan Metode Bagi 2
Kelebihan melakukan 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.
http://www.marthamatika.com/2016/10/contoh-soal-dan-pembahasan-metode-bagi-dua-metode-
numerik.html
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 :
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 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.
http://www.marthamatika.com/2016/10/contoh-program-metode-bagi-dua-dalam-metode-
numerik.html
Walaupun primitif dan merupakan metode dengan segala keterbatasan yang ada, metode
setengah interval adalah metode paling sederhana dan paling mudah untuk dipahami
sehingga cocok sebagai pembelajaran awal mata kuliah "Komputasi/ Metode Numeris".
Kesederhanaan yang penulis maksud adalah kemudahan untuk menjelaskan istilah
"interval" yang nanti akan kita gunakan pada metode secant pada pembahasan berikutnya.
Metode ini metode iteratif yang digunakan untuk mencari akar persamaan (linier maupun
non-linear) yang memiliki akar real.
Dasar Teori
Metode setengah interval dimulai dari menentukan area (interval) awal sedemikian rupa
sehingga, interval tsb mengapit akar pesamaan yang akan kita cari.
Gambar 1: Penentuan Area Awal
Ini kesulitan pertama metode setengah interval. Area awal yang dipilih HARUS mengapit
akar yang akan dicari. Cara paling mudah adalah menentukan area awal, selebar-lebarnya,
tapi ini akan berakibat pada jumlah iterasi yang semakin banyak.
Okay sementara, abaikan jumlah iterasi yang banyak tersebut, yang penting, ketemu dulu
akarnya. :)
Setelah interval awal kita tentukan, berikutnya, kita bagi area tersebut menjadi dua (red:
inilah yang menyebabkan metode ini disebut metode setengah interval) sehingga grafiknya
menjadi seperti berikut:
Proses ini mudah, tinggal jumlahkan nilai X1 dan X3 kemudian dibagi 2. Dapatlah nilai X2.
Bagian ini sedikit sulit. Jika kita melihat grafik, mungkin tidak sulit bagi kita untuk
menentukan bahwa area yang akan dibuang adalah area antara X1 s.d. X2. Tapi
bagaimana jika dilakukan menggunakan program?
Untuk membuang daerah yang tidak diperlukan kita bisa memasukkan nilai X1, X2 dan X3
pada persamaan yang akan kita cari yaitu f(X1), f(X2) dan f(X3) seperti terlihat pada gambar
berikut:
Gambar 3: Penentuan Titik-Titik Fungsi
Setelah kita tentukan, nilai f(X1), f(X2) dan f(X3), berikutnya kita "pilih" yang mana dari nilai
X1 atu X3 yang akan kita "replace" dengan X2. Kata me-replace di sini artinya dibuang.
Caranya?
Kita pilih di antara X1 dan X3 yang memiliki tanda yang sama dengan X2. Sama-sama
positif atau sama-sama negatif. Menentukannya mana di antara X1 dan X3 yang memiliki
tanda yang sama dengan X2, cukup kalikan saja f(X1) dengan f(X2). Jika menghasilkan nilai
positif ( > 0 ) maka f(X1) memiliki tanda yang sama dengan f(X2). Ini sesuai kodrat alam
yang mengatakan:
"Jika dua bilangan dikalikan menghasilkan bilangan positif, maka kedua bilangan tersebut
sama tandanya dan jika negatif maka kedua bilangan tersebut berbeda tanda"
4. Mencari Error
Kata orang, mencari kesalahan adalah usaha paling mudah. Apalagi "kesalahan orang lain".
Di sinipun, mencari kesalahan bisa menggunakan beberapa cara. Misalnya:
Mencari selisih antara X2 dengan nilai X2 sebelumnya.
Selisih antara nilai mutlak f(X2) dengan 0
Saya menggunakan cara yang kedua.
Apabila selisih antara f(X2) dengan 0 sudah lebih kecil dari toleransi error yang diberikan,
maka selesailah sudah. Nilai X2 itulah yang menjadi akar persamaan. Jika belum, ulangi
langkah 2.
5. Hasil akhir
Setelah kita paham metode bisection, saatnya kita tulis algoritma sederhananya (dulu).
1. Tentukan nilai awal X1 dan X3, toleransi_error=0.0001, f(X2) = 1 dan
jumlah_langkah = 0.
2. Ketika f(X2) > toleransi error:
3. Cari X2 = (X1 + X3) / 2
4. Cari f(X1) dan f(X2)
5. Jika (f(X1) * f(X2)) > 0
6. X1 = X2
7. Jika tidak, X3 = X2
8. Cari nilai mutlak f(X2) = | f(X2)|
9. Loop ke langkah 2.
10. Tampilkan hasil persamaan = X2.
11. Selesai
Algoritma di atas, adalah algoritma sederhana dari metode bisection. Silahkan improvisasi
sendiri untuk anomali-anomali yang ada.
Asumsikan persamaan yang akan kita cari adalah: f(x) = x^2 - x - 6 dimana akar yang akan
kita peroleh seharusnya 3 dan -2.
#include <iostream>
using namespace std;
void main() {
float x1,x2,x3,fx1,fx2,fx3,toleransi_error;
int iterasi;
toleransi_error=1;
iterasi=0;
x2 = (x1 + x3) / 2;
fx2 = (x2 * x2) - x2 - 6;
if (fx2 < 0)
toleransi_error = fx2 * -1;
else
toleransi_error = fx2;
system ("pause");
}
Testing Program
Setelah kita tulis kode program, saatnya kita jalankan program sederhana tersebut.
Gambar 6: Output Program
Ingat, contoh di atas adalah penerapan metode bisection paling sederhana dengan
mengabaikan anomali-anomali yang ada. Silahkan di-improvisasi sendiri untuk anomali-
anomali tersebut.
Versi Excel
Jika f(c) memiliki tanda yang sama seperti f(a), maka akarnya terletak antara c dan b; atau
kemungkinan lain akarnya terletak antara a dan c. Kemudian dikurangi interval dalam menentukan
letak akar menjadi setengah dari lebar rentang aslinya. Kita ulang proses tersebut, pengurangan
interval menjadi 1/4 , 1/8, 1/16, …. sampai kita dapat menentukan akarnya sesuai dengan
keakuratan yang kita inginkan.
1. Hitung fungsi interval yang sama dari x sampai pada perubahan tanda dari fungsi f(xn) dan f(xn+1)
, yaitu apabila f(xn) x f(xn+1) < 0 .
3. Buat evaluasi berikut untuk menentukan di dalam sub interval mana akar persamaan berada :
a. Jika f(xn) x f(xn+1) < 0 , akar persamaan berada pada sub interval pertama, kemudian tetapkan
xn+1 = xt dan lanjutkan pada langkah ke 4.
b. Jika f(xn) x f(xn+1) > 0 , akar persamaan berada pada sub interval kedua, kemudian tetapkan xn =
xt dan lanjutkan pada langkah ke 4.
5. Apabila perkiraan baru sudah cukup kecil (sesuai dengan batasan yang ditentukan ), maka
hitungan selesai, dan xt adalah akar persamaan yang dicari. jika belum, maka hitungan kembali ke
langkah 3.
Gambar Prosedur perhitungan
Contoh 1:
f(x) = x3 + x2 – 3x – 3 = 0
Penyelesaian :
Menerka dua nilai bilangan yang memberikan nilai f(x) berbeda tanda, misal : x = 1 dan x = 2
Oleh karena nilai fungsi berubah tanda antara x = 1,5 dan x = 2 , maka akar terletak diantara kedua
nilai tersebut. Langkah selanjutnya membuat setengah interval berikutnya untuk membuat interval
yang lebih kecil. Adapun hasil perhitungan ada pada Tabel. 1
.. .. .. .. .. .. ..
¥ .. .. 1,73205 .. .. -0,00000
Contoh 2:
f(x) = x3 – 5x2 – 2x + 10 = 0
Penyelesaian :
Menerka dua nilai bilangan yang memberikan nilai f(x) berbeda tanda, misal : x = 1 dan x = 3
Langkah-langkahnya:
[1] Ketik terkaan awal yaitu 1 untuk Xn – nya dan 3 untuk Xn+1 masing-masing pada cell A4 dan C4.
[2] Lalu pada cell B4, Jumlahkan kedua nilai terkaan awal tersebut lalu bagi 2 sebagaimana dapat
dilihat pada formula tersebut.
[3] Pada masing-masing fungsinya, di cell E4, F4, dan G4, masukkan masing akar terkaan awal
dan akar baru (jumlah dua akar terkaan awal dibagi dua) kedalam fungsi yang dimaksud.
[4] Tambahkan satu kolom lagi untuk nge-check tanda perkalian dua buah fungsi, yaitu nilai fungsi
dari salah satu akar terkaan awal dan nilai fungsi dari akar baru.
[5] Pada baris ke-5 penampakan excel diatas, masukkan fungsi If pada cell A5 dan C5 seperti yang
ditunjukkan. U Know what i mean?
[6] Sedangkan untuk cell B5, copy dari cell diatasnya yaitu B4. Demikian pula, cell E5, F5 dan G5,
copy dari cell diatasnya.
[7] Pada baris 5 excel diatas, sorot satu range (A5,G5) lalu copy ke bawah dengan cara men-drag
kursor mouse pada pada pojok kanan bawah range.
[8] Selesai
Sampai iterasi ke-5, salah satu akarnya sudah dapat diperoleh yaitu X=1,406 dengan f(x)= 0,080719.
Dengan meneruskan iterasi-nya maka nilai akarnya dapat dibuat semakin mendekati nol sehingga
keakuratannya lebih tinggi.
https://taufiqurrokhman.wordpress.com/2014/05/02/metoda-interval-bagi-dua-interval-
bisection/?fbclid=IwAR3muy0vX1YU6H8UM6r59uQZH2E9KttmXn-8kVdpPjsJ-MhhVrMdIYtvyj4