Anda di halaman 1dari 10

BAB III

PERCOBAAN METODE BISECTION

III.1 TUJUAN PERCOBAAN

Adapun tujuan percobaan dari praktikum ini adalah sebagai berikut :

 Dapat memahami penyelesaian persamaan f(x) = 0 dan mencari akar-akar


persamaannya dengan metode penggambaran grafis.
 Memahami metode trial-and-error dengan metode Bisection untuk
mencari akar-akar persamaan f(x) = 0.
 Dapat membuat program metode numeric Bisection untuk mencari akar-
akar persamaan f(x) = 0.

III.3 DASAR TEORI

Metode paling sederhana untuk mencari akar-akar persamaan f(x) = 0


adalah dengan me-plot fungsi yang dicari akar-akarnya. Akar-akar persamaan
adalah harga-harga f(x) yang memotong sumbu x. Metode ini biasa disebut
metode grafis.

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.

Mencari akar-akar persamaan dengan metode Bisection adalah dengan


membagi dua interval xi-xu kemudia mencari akar-akarnya pada tiap-tiap
interval,lalu membagi dua kembali interval yang memuat akar-akar
persamaannya. Step-step algoritma dari metode Bisection adalah sebagai berikut :

Pilih harga rendah xl dan harga tinggi xu dimana akar-akar persamaannya


akan termuat diantaranya. Tentukan estimasi akar persamaan xr = (xl + xu)/ 2

Evaluasi hasilnya dengan cara sebagai berikut :

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.

Metode tabel secara umum sulit mendapatkan penyelesaian dengan error


yang kecil, karena itu metode ini tidak digunakan dalam penyelesaian persamaan
non linier, tetapi metode ini digunakan sebagai taksiran awal mengetahui area
penyelesaian yang benar sebelum menggunakan metode yang lebih baik dalam
menentukan penyelesaian.

Adapun langkah-langkah untuk menyelesaikan persamaan dengan metode


biseksi adalah sebagai berikut :

1. Definisikan fungsi f(x) yang akan dicari akarnya

2. Tentukan nilai a dan b

3. Tentukan toleransi e dan iterasi maksimum N

4. Hitung f(a) dan f(b)

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

Adapun algoritma untuk metode bisection yang pertama adalah sebagai


berikut:

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

Adapun algoritma untuk metode bisection yang kedua adalah sebagai


berikut:

1. Cetak kalimat “===========Metode Biseksi===========”.

2. Cetak kalimat “Masukkan batas atas a : ”.

3. Masukkan nilai a.

4. Cetak kalimat “Masukkan batas bawah b :”.

5. Masukkan nilai b.

6. Cetak kalimat “Input toleransi error”.

7. Masukkan nilai toleransi error (i).

8. Cetak kalimat “Masukkan iterasi maksimum :”.

9. Masukkan nilai iterasi maksimum (n).


19

10. Masukkan perintah fa = f(a); fb = f(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.

15. Cetak akarnya.

16. Cetak nilai error.

III.4 FLOWCHART
Adapun flowchart untuk program Bisection yang pertama dapat dilihat pada
Gambar 3.1 sebagai berikut:

Mulai

Fungsi Persamaan ,batas dan


akar-akar

Memprose batas-batas

Hasil akar

Selesai

Gambar 3.1. Flowchart Bisection Pertama

Adapun flowchart untuk Bisection kedua dapat dilihat pada Gambar 3.2
sebagai berikut .
20

Gambar 3.2. Flowchart Bisection Kedua


21

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;
}

B. Adapun program pada C++ untuk Bisection kedua adalah sebagai


berikut:

#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));
}
}

III.6 KESIMPULAN DAN SARAN

A. Kesimpulan

Adapun kesimpulan yang dapat didapat adalah sebagai berikut :

1. Semakin kecil toleransi error yang dimasukkan, maka tingkat


ketelitian akar yang didapat akan semakin tinggi.

2. Semakin banyak nilai iterasi yang dimasukkan, maka akan


meningkatkan ketelitian akar yang didapat.

3. Header <math.h> berfungsi untuk dapat memanggil fungsi


perhitungan matematika.

B. Saran

Adapun saran yang dapat disampaikan adalah sebagai berikut :

1. Sebaiknya penulisan program dilakukan dengan teliti agar dapat


meminimalisir kesalahan yang terjadi.

2. Sebaiknya praktikan memperhatikan Compiler jika terjadi kesalahan.


Karena Compiler memberitahukan letak kesalahan ang dilakukan oleh
praktikan.

3. Sebaiknya lebih memperhatikan penjelasan yang diberikan oleh


asisten laboratorium agar kesalahan dapat diminimalisir.
25

III.7 HASIL PERCOBAAN

Adapun hasil percobaan program bisection yang pertama dapat dilihat pada
Gambar 3.3 sebagai berikut.

Gambar 3.3. Hasil Percobaan Bisection Pertama

Adapun hasil percobaan program bisection yang kedua dapat dilihat pada
Gambar 3.4 sebagai berikut.

Gambar 3.4. Hasil Percobaan Bisection Kedua

Anda mungkin juga menyukai