0% menganggap dokumen ini bermanfaat (0 suara)
360 tayangan13 halaman

Bisection Method

Dokumen tersebut membahas metode bisection untuk mencari akar persamaan. Metode ini termasuk dalam metode tertutup yang mencari akar dengan menyempitkan selang yang mengurung akar secara iteratif hingga diperoleh nilai aproksimasi akar dengan galat yang diinginkan. Algoritma metode bisection menghitung nilai tengah dari selang lalu mempersempit selang berdasarkan lokasi akar di bagian kiri atau kanan. Proses ini diul

Diunggah oleh

Prayuda Raharja
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
360 tayangan13 halaman

Bisection Method

Dokumen tersebut membahas metode bisection untuk mencari akar persamaan. Metode ini termasuk dalam metode tertutup yang mencari akar dengan menyempitkan selang yang mengurung akar secara iteratif hingga diperoleh nilai aproksimasi akar dengan galat yang diinginkan. Algoritma metode bisection menghitung nilai tengah dari selang lalu mempersempit selang berdasarkan lokasi akar di bagian kiri atau kanan. Proses ini diul

Diunggah oleh

Prayuda Raharja
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 13

3

MN 03 (Akar-Bisection Method)

1-1

3. AKAR PERSAMAAN
Pengertian
Persoalan mencari akar persamaan pada dasarnya sama dengan mencari
solusi persamaan non linier. Mencari akar secara singkat dapat dirumuskan
sebagai berikut: tentukan nilai x yang memenuhi persamaan f(x) = 0 yaitu
nilai x = s sedemikian sehingga f(s) sama dengan nol.

y = f(x)

Akar

Secara umum ada dua metode pencarian akar, yaitu:


1. Metode tertutup atau metode pengurung (bracketing method).
Pada metode tertutup pencarian akar didahului dengan menetapkan
selang (a,b).
Dalam selang (a,b) dipastikan berisi minimum satu buah akar.
Kemudian dilakukan pendekatan secara berulang (iterasi) dalam
selang (a,b) hingga ditemukan nilai aproksimasi untuk akar dengan
galat terkecil.
Dengan metode ini iterasinya selalu konvergen menuju ke akar.
Karena itu metode tertutup sering juga disebut sebagai metode
konvergen.
2. Metode terbuka.
Pada metode terbuka tidak memerlukan selang (a,b) yang
mengandung akar.
Yang diperlukan adalah perkiraan (guest) awal untuk akar, kemudian
dengan iterasi dihitung nilai aproksimasi akar yang baru
menggunakan nilai aproksimasi akar sebelumnya.
Dengan metode terbuka, proses iterasi bisa konvergen tetapi bisa
juga divergen, karena itu dengan metode terbuka tidak selalu
diperoleh akar.

Drs. Ign. Djoko Irianto, M.Eng.

Revisi : 00 - 20/12/2005

Metode Numerik

MN 03 (Akar-Bisection Method)

2-2

Metode Tertutup
Pertama ditetapkan selang (a,b) yang mengurung akar sejati.
Strategi pencarian akarnya adalah mengurangi lebar selang secara
sistematis sehingga lebar selang tersebut semakin sempit, dan
karenanya akan menuju ke akar yang benar.
Dalam selang yang telah ditetapkan mungkin akan terdapat lebih dari
satu akar atau tidak ada akar sama sekali, karena itu perlu pengujian
selang sbb.:
(1) f(a) f(b) < 0, maka terdapat akar sebanyak bilangan ganjil.

(2) f(a) f(b) > 0, maka terdapat akar sebanyak bilangan genap atau tidak
ada akar sama sekali.

Ada dua metode klasik yang termasuk ke dalam metode tertutup untuk
mencari akar, yaitu:
Metode Bagi Dua (Bisection Method),
Metode Posisi Palsu (Regula Falsi).

Mencari Akar Dengan Metode Bagi Dua


(Bisection Method)
Prinsip
Jika f(x) bernilai riil dan kontinu dalam selang mulai dari xL hingga xR
serta f(xL) dan f(xR) berlawanan tanda, yaitu f(xL) * f(xR) < 0, maka
terdapat paling sedikit satu akar riil di antara xL hingga xR.
Drs. Ign. Djoko Irianto, M.Eng.

Revisi : 00 - 20/12/2005

Metode Numerik

MN 03 (Akar-Bisection Method)

3-3

Algoritma Penentuan Akar dengan Metode Bagi Dua


1. Tentukan nilai xL dan xR sebagai batas kiri dan batas kanan, nilai
toleransi galat, dan jumlah iterasi maksimum.
2. Hitung nilai f(xL) dan f(xR)
3. Periksa apakah antara xL dan xR ada akar?
Apakah f(xL) * f(xR) < 0 ?
Jika ya lanjutkan ke langkah 4
Jika tidak lompat ke langkah 8
4. Taksiran akar x ditentukan oleh X =

XL + XR
2

5. Periksa apakah nilai mutlak (XR XL) < toleransi galat. Jika ya, maka
tuliskan X sebagai hasil perhitungan, dan akhiri program; jika tidak,
lanjutkan ke langkah berikutnya.
6. Periksa apakah jumlah iterasi > jumlah iterasi maksimum. Jika ya,
akhiri program. Jika tidak, lanjutkan ke langkah berikutnya.
7. Periksa lokasi akar
Jika f(xL) * f(x) < 0, akar berada pada bagian interval kiri, maka
tetapkan nilai xR yang baru yaitu xR = x dan kembali ke langkah 2.
Jika f(xL) * f(x) > 0, akar berada pada bagian interval kanan, maka
tetapkan xL = x dan kembali ke langkah 2.
Jika f(xL) * f(x) = 0, berarti akar yang dicari adalah x.
8. Antara xL dan xR tidak ada akar
Jika f(xL) * f(xR) > 0, maka tidak terdapat akar antara xL dan xR, dan
komputasi berhenti tanpa memperoleh hasil. Untuk menghindari hal ini
maka nilai xL dan xR harus ditentukan secara benar.

Drs. Ign. Djoko Irianto, M.Eng.

Revisi : 00 - 20/12/2005

Metode Numerik

MN 03 (Akar-Bisection Method)

4-4

Bagan Alir untuk Metode Bagi Dua


MULAI
DEFINISIKAN FUNGSI
Baca a, b, tol, iter_max
Iter = 0
Fa = F(a)
Fb = F(b)
Fa * Fb > 0
no

yes
Tulis
Fa * Fb > 0

Iter = Iter + 1
m = (a + b)/2
Fm = F(m)

no

m-a < tol


iter > iter_max

yes

2
yes

Fa * Fm < 0

b=m
Fb = Fm

no

a=m
Fa = Fm

Drs. Ign. Djoko Irianto, M.Eng.

Revisi : 00 - 20/12/2005

Metode Numerik

MN 03 (Akar-Bisection Method)

5-5

3
Tulis hasil
m, F(m)

1
SELESAI

Dalam bagan alir di atas XL = a, XR = b, dan X = m


Dalam bahasa pemrograman Pascal, programnya dapat ditulis sbb.:
{**************************************************
* Program to demonstrate Bisection subroutine
*
* ------------------------------------------------------------------------ *
* Example: Find a real root of f(x)=(x+1)^5
*
*
*
* What is the initial range (X0,X1):
*
* X0 = -5
*
* X1 = 0
*
-6
*
* Convergence criterion: 1. E
*
*
* The calculated zero is X = -9.99755859375E-001
*
* The associated Y value is Y = 0.000000000E-000
*
* The number of steps was: 12
*
**************************************************}
PROGRAM Bisection;
Uses WinCrt;
VAR
e,x,x0,x1 : DOUBLE;
m : INTEGER;
{**********************************************}
Function Y(x:DOUBLE): DOUBLE;
Begin
Y := 1+5*x+10*x*x+10*x*x*x+5*x*x*x*x+x*x*x*x*x
Drs. Ign. Djoko Irianto, M.Eng.

Revisi : 00 - 20/12/2005

Metode Numerik

MN 03 (Akar-Bisection Method)

6-6

End;
{**********************************************}
{**********************************************
*
Bisection method subroutine
*
* ------------------------------------------*
* This routine iteratively seeks the zero of
*
* function Y(x) using the method of interval
*
* halving until the interval is less than e
*
* in width. It is assumed that the function
*
* Y(x) is available from a function routine.
*
* ------------------------------------------*
* Input values: range (x0,x1), and e.
*
* Output values: root x, Y(x) and number of
*
* steps m.
*
**********************************************}
PROCEDURE Bisect;
Label 100, fin;
Var y0,yy:double;
Begin
m:=0;
100: y0:=Y(x0);
x:=(x0+x1)/2; yy:=Y(x);
m:=m+1;
if yy*y0=0 then goto fin;
if yy*y0<0 then x1:=x;
if yy*y0>0 then x0:=x;
if ABS(x1-x0)>e then goto 100;
fin: End;
{main program}
BEGIN
clrscr;
writeln;
writeln(' What is the initial range (X0,X1):');
writeln;
write(' X0 = '); read(x0);
write(' X1 = '); read(x1);
writeln;
write(' Convergence criterion: '); read(e);
Drs. Ign. Djoko Irianto, M.Eng.

Revisi : 00 - 20/12/2005

Metode Numerik

MN 03 (Akar-Bisection Method)

7-7

Bisect; {Call bisection routine}


writeln;
writeln;
writeln(' The calculated zero is X = ',x);
writeln;
writeln(' The associated Y value is Y = ',Y(x));
writeln;
writeln(' The number of steps was: ',m);
writeln;
ReadKey; DoneWinCrt
END.
{End of file bisect.pas}
Penentuan selang antara nilai xL dan xR tidak boleh terlalu lebar dan tidak
boleh terlalu sempit.
Bila terlalu lebar, maka iterasi untuk menuju akar terlalu lama.
Bila terlalu sempit, maka dikawatirkan tidak mengurung akar. Untuk
mengurung akar, digunakan metode penyapuan untuk menentukan lokasi
akar sbb.:

Algoritma Penentuan Lokasi Akar


1. Tentukan nilai xL dan xR sejauh satu satuan jarak. Mulai dari yang
paling kiri.
2. Hitung nilai f(xL) dan f(xR)
3. Periksa apakah antara xL dan xR ada akar ?
Apakah f(xL) * f(xR) < 0 ?
Bila ya berarti ada akar diantara xL dan xR
Bila tidak lanjutkan ke langkah 4
4. Tambahkan nilai xL dan xR masing-masing satu satuan.
5. Periksa batas paling kanan
Apakah XR 10 ?
Bila ya berhenti
Bila tidak kembali ke langkah 2

Drs. Ign. Djoko Irianto, M.Eng.

Revisi : 00 - 20/12/2005

Metode Numerik

MN 03 (Akar-Bisection Method)

8-8

Diagram alir (flow chart) untuk penentuan lokasi akar

START
XL - 10
XR - 9
YL f(XL)
YR f(XR)

YL*YR < 0
?
YES

NO

XL XL+1
XR XR+1

A ROOT LIES
BETWEEN XL
AND XR
XR 10

NO

STOP

YES
STOP
PROGRAM FORTRAN UNTUK FLOWCHART DI ATAS, SBB.:
F(X) = X**4 9.0 * X**3 2.0*X**2 + 120.0*X 130.0
XL = -10.0
XR = - 9.0
10 YL = F(XL)
YR = F(XR)
Drs. Ign. Djoko Irianto, M.Eng.

Revisi : 00 - 20/12/2005

Metode Numerik

MN 03 (Akar-Bisection Method)

20

9-9

IF(YL*YR .LT. 0.0) GOTO 20


XL = XL + 1
XR = XR + 1
GOTO 10
..

Cara di atas kurang efektif maka diperbaiki sbb.:


START
XL - 10
YL f(XL)
XR XL + 1
YR f(XR)

YL*YR < 0
?
YES
A ROOT LIES
BETWEEN XL
AND XR

NO

XR 10
?
YES

NO

XL XR
YL YR

STOP

STOP

PROGRAM FORTRAN UNTUK FLOWCHART DI ATAS, SBB.:


Drs. Ign. Djoko Irianto, M.Eng.

Revisi : 00 - 20/12/2005

Metode Numerik

MN 03 (Akar-Bisection Method)

10

20

10 - 10

F(X) = X**4 9.0 * X**3 2.0*X**2 + 120.0*X 130.0


XL = -10.0
YL = F(XL)
XR = XL + 1.0
YR = F(XR)
IF(YL*YR .LT. 0.0) GOTO 20
IF(XR .GE. 10.0) STOP
XL = XR
YL = YR
GOTO 10
..

Kriteria Penghentian dan Taksiran Galat


Taksiran galat aproksimasi dapat dihitung dengan rumusan sbb.:

x lama
x baru
r
r

ea =

x baru
r

100%

dimana

x baru
adalah akar untuk iterasi sekarang
r
x lama
adalah akar untuk iterasi sebelumnya
r
x baru
x lama
=
r
r
dan

x baru
=
r

xR xL
2

xR + xL
2

maka rumusan galat aproksimasi menjadi

ea =

xR xL
100 %
xR + xL

iterasi pencarian akar akan dihentikan jika nilai ea < es . es adalah toleransi
galat yang telah ditentukan sebelumnya.
Drs. Ign. Djoko Irianto, M.Eng.

Revisi : 00 - 20/12/2005

Metode Numerik

MN 03 (Akar-Bisection Method)

11 - 11

Contoh program untuk mencari akar persamaan non linier menggunakan


Metode Bagi Dua dalam bahasa C++
// Metode Bisection
#include <stdio.h>
#include <math.h>
/* Daftar Variabel
a
= batas bawah
b
= batas atas
tol
= toleransi
iter_max
= jumlah iterasi maksimum */
float a, m, b, F_a, F_m, F_b, tol;
int iter_max;
float f(float x)
{
return tan(x) - x - 0.5;
}
void main()
{
int it;
float epsilon;
printf("Batas bawah
= "); scanf("%f", &a);
printf("Batas atas
= "); scanf("%f", &b);
printf("Toleransi
= "); scanf("%f", &tol);
printf("Jumlah iterasi maksimum = "); scanf("%d", &iter_max);
it = 0;
F_a = f(a);
F_b = f(b);
if(F_a * F_b > 0) printf("
else
{
printf("It a
m
b
printf("
epsilon\n");
do
Drs. Ign. Djoko Irianto, M.Eng.

Nilai F(a) x F(b) > 0\n");


f(a)

f(b)");

Revisi : 00 - 20/12/2005

Metode Numerik

MN 03 (Akar-Bisection Method)

12 - 12

{
it = it + 1;
m = (a + b) / 2;
F_m = f(m);
epsilon = fabs(m - a);
printf("%2d %6.5f %6.5f %6.5f %6.5f %6.5f %6.2e\n",
it, a, m, b, F_a, F_b, epsilon);
if(F_a * F_m <= 0) {b = m; F_b = F_m;}
else {a = m; F_a = F_m; }
}
while(it <= iter_max && epsilon > tol);
if(it <= iter_max)
{
printf("Toleransi terpenuhi \n");
printf("Hasil akhir = %g \n", m);
}
else printf("Toleransi tidak terpenuhi \n");
}
}

Drs. Ign. Djoko Irianto, M.Eng.

Revisi : 00 - 20/12/2005

Metode Numerik

MN 03 (Akar-Bisection Method)

13 - 13

Contoh hasil eksekusi program untuk mencari akar dengan metode bagi
dua menggunakan bahasa C++ yang dilakukan dalam selang [0,1],
toleransi 10-5 dan jumlah iterasi maksimum sebanyak 30, adalah sbb.:
Batas bawah
Batas atas
Toleransi
Jumlah iterasi maksimum
It
a
m
1 0.00000 0.50000
2 0.50000 0.75000
3 0.75000 0.87500
4 0.87500 0.93750
5 0.93750 0.96875
6 0.96875 0.98438
7 0.96875 0.97656
8 0.96875 0.97266
9 0.97266 0.97461
10 0.97461 0.97559
11 0.97461 0.97510
12 0.97461 0.97485
13 0.97485 0.97498
14 0.97498 0.97504
15 0.97498 0.97501
16 0.97501 0.97502
17 0.97501 0.97501
Toleransi terpenuhi
Hasil akhir = 0.975014

=
0
=
1
=
0.00001
=
30
b
f(a)
1.00000 -0.50000
1.00000 -0.45370
1.00000 -0.31840
1.00000 -0.17750
1.00000 -0.07543
1.00000 -0.01345
0.98438 -0.01345
0.97656 -0.01345
0.97656 -0.00511
0.97656 -0.00089
0.97559 -0.00089
0.97510 -0.00089
0.97510 -0.00036
0.97510 -0.00009
0.97504 -0.00009
0.97504 -0.00002
0.97502 -0.00002

f(b)
0.05741
0.05741
0.05741
0.05741
0.05741
0.05741
0.02078
0.00337
0.00337
0.00337
0.00124
0.00018
0.00018
0.00018
0.00004
0.00004
0.00001

epsilon
5.00e-01
2.50e-01
1.25e-01
6.25e-02
3.12e-02
1.56e-02
7.81e-03
3.91e-03
1.95e-03
9.77e-04
4.88e-04
2.44e-04
1.22e-04
6.10e-05
3.05e-05
1.53e-05
7.63e-06

Latihan Soal.
Hitung akar persamaan berikut:
1. f(x) = ex 5 x2
2. f(x) = ex + x2 3 x 2
3. f(x) = -0.9x2 + 1.7x + 2.5
4. f(x) = x3 98
5. f(x) = x2 * sin(x) 4.1

Drs. Ign. Djoko Irianto, M.Eng.

Revisi : 00 - 20/12/2005

0.605263
-0.390266
-0.971214
4.61044
-3.48577

Metode Numerik

Anda mungkin juga menyukai