Secara umum jika f(x) adalah berharga real dan kontinyu pada interval xl-xu
dan harga-harga f(xl) dan f(xu) mempunyai tanda yang berbeda, maka berlaku
persamaan f(xl) X f(xu) < 0. Dan paling tidak aka nada satu persamaan yang
berharga diantara xl-xu.
16
17
a. Jika f(xl) X f(xu) < 0 , maka akar persamaan yang dicari ada pada
interval bawah. Maka set xu = xr dam kembali pada step 2.
b. Jika f(xl) X f (xu) > 0, maka akar persamaan yang dicari ada pada
interval atas. Maka set xl = xr dan kembali ke step 2.
c. Jika f(xl) X f(xu) = 0 , maka akar persamaan yang dicari adalah xr.
Dalam kedua kasus, f(a) dan f(b) baru memiliki tanda berlawanan, sehingga
metode ini dapat diterapkan pada selang baru yang lebih kecil ini. Implementasi
metode ini harus berjaga-jaga terhadap kemungkinan bahwa titik tengah ternyata
merupakan pemecahan.
Ide awal metode ini adalah metode table, dimana area dibagi menjadi N
bagiannya. Hanya saja metode biseksi ini membagi range mennjadi 2 bagian, dari
dua bagian ini dipilih bagian mana yang mengandung dan bagian yang tidak
mengandung akar dibuang. Hal ini dilkakukan berulang-ulang hingga diperoleh
akar persamaan.
5. Jika f(a).f(b) > 0 maka proses dihentikan karena tidak ada akar, bila tidak
dilanjutkan
18
6. Hitung x = (a+b)/2
7. Hitung f(x)
8. Bila f(x).f(a) < 0 maka b = x dan f(b) = f(x), bila tidak a = x dan f(a) =
f(x)
9. Jika |b-a| < e atau iterasi > iterasi maksimum maka proses dihentikan dan
didapatkan akar = x, dan bila tidak, ulangi langkah 6.
III.3 ALGORITMA
1. Mulai
2. Menentukan fungsi persamaan yang akan dicari akar-akarnya
3. Menentukan batas a dan b
4. Memproses batas a dan batas b
5. Hasil akar ditampilkan
6. Selesai
3. Masukkan nilai a.
5. Masukkan nilai b.
11. Jika fa x fc < 0, maka cetak kalimat “akar tidak ditemukan dalam
range”.
12. Jika fa x fb > 0, maka ketika i<=n cetak i, a, b, xr, fa, fb, fxr dengan i
bertambah jumlahnya dengan syarat i<=n.
13. Didalam fungsi perulangan while (i<=0), Jika fx[i]*fa < 0 maka
fb=f(xr) dengan xr = b. Dan jika fx[i]*fa > 0 maka fa=f(xr) dengan xr =
a.
14. Dalam fungsi perulangan while (i<=0), jika fabs(a-b)<=error atau i >
(n-1) maka perulangan while berhenti.
III.4 FLOWCHART
Adapun flowchart untuk program Bisection yang pertama dapat dilihat pada
Gambar 3.1 sebagai berikut:
Mulai
Memprose batas-batas
Hasil akar
Selesai
Adapun flowchart untuk Bisection kedua dapat dilihat pada Gambar 3.2
sebagai berikut .
20
III.5 PSEUDOCODE
A. Adapun program pada C++ untuk Bisection yang pertama adalah sebagai
berikut :
#include<stdio.h>
double func (double x)
{
return x*x*x-2*x*x+3;
}
double e=0.01;
double c;
void bisection (double a, double b)
{
if (func(a)*func (b)>=0)
{
printf ("a dan b salah");
return;
}
c=a;
while((b-a)>=2)
{
c=(a+b)/2;
if (func (c)== 0.0){
printf ("Akarnya = %1f\n",c);
break;
}
else if (func (c)*func (a)<0){
printf ("Akarnya = %1f\n",c);
b=c;
22
}
else {
printf ("Akarnya = %1f\n",c);
a=c;
}
}
}
int main(){
double a,b;
a= -10;
b=20;
printf ("Fungsi yang digunakan adalah X^3-2X^2+3\n");
printf ("a=%1f\n",a);
printf ("b=%1f\n",b);
bisection (a,b);
printf ("\n");
printf ("Akarnya yang benar adalah = %1f\n",c);
return 0;
}
#include<stdio.h>
#include<math.h>
double f(double x)
{
return(exp(-x)-x);
}
main()
23
{
double fx[100],a,b,error;
double fa,fb,xr,fxr;
int n,i;
printf("===========Metode Biseksi===========\n");
printf("Masukkan batas atas a = ");
scanf("%lf",&a);
printf("Masukkan batas bawah b = ");
scanf("%lf",&b);
printf("Input toleransi error=");
scanf("%lf",&error);
printf("Input iterasi maksimum=");
scanf("%d",&n);
fa=f(a);
fb=f(b);
if(fa*fb>0)
printf("Akar tidak ditemukan dalam range %g - %g...\n", a, b); else{
i=0;
while (i<=n){
xr=(a+b)/2;
fx[i]=f(xr);
fxr=f(xr);
printf("%d a=%7lf b=%7lf xr=%7lf fa=%7lf fb=%7lf fxr=
%7lf\n",i,a,b,xr,fa,fb,fxr);
if(fx[i]*fa<0){
a=xr;
fa = f(xr);
}
else{
24
b=xr;
fb = f(xr);
}
i++;
if(fabs(a-b)<=error || i>(n-1)) break;
}
printf("Akarnya adalah %g\n",xr);
printf("Nilai error = %g\n",fabs(fxr));
}
}
A. Kesimpulan
B. Saran
Adapun hasil percobaan program bisection yang pertama dapat dilihat pada
Gambar 3.3 sebagai berikut.
Adapun hasil percobaan program bisection yang kedua dapat dilihat pada
Gambar 3.4 sebagai berikut.