You are on page 1of 7

Meylanie Olivya – P2700209002 1

PROGRAM MENCARI AKAR-AKAR DARI SUATU FUNGSI


DENGAN METODE BISECTION

Algoritma program:
Untuk sembarang f(x) = 0
(1) Tentukan sembarang nilai a dan b, dimana |a|<|b|
(2) Jika f(a) = 0, maka akar fungsi f(x) adalah a
(3) Jika f(b) = 0, maka akar fungsi f(x) adalah b
(4) JIka f(a) < 0 dan f(b) > 0, hitung c = (a+b) / 2 dan f(c).
(5) JIka f(c) < 0, maka c mengganti a
(6) Jika f(c) > 0, maka c mengganti b
(7) Jika (|0 – f(c)|*10000) > 0.01, maka kembali ke (4). Jika tidak, STOP, maka solusi akar
fungsi f(x) adalah c

Diagram alir dari program ini ditunjukkan pada gambar 1. Sedangkan programnya untuk
f(x) = x2 – x – 6 dalam bahasa pascal sebagai berikut:
function f(x:real):real;
begin
f := (x*x) - (x) - 6;
end;

procedure bisection(a,b : real);


var c : real;
begin
c := (a+b)/2;
if (abs(0-f(c)*10000) > 0.01) then
begin
if f(c) < 0 then bisection(c,b)
else bisection(a,c);
end
else writeln('Akar fungsi f(x) adalah ',c:2:7);
end;

var a, b: real;
begin
clrscr;
write('Masukkan nilai a : '); readln(a);
write('Masukkan nilai b : '); readln(b);
if f(a)=0
then writeln('Akar fungsi f(x)adalah ',a:2:7)
else if f(b)=0
then writeln('Akar fungsi f(x)adalah ',b:2:7)
else if (f(a) < 0) and (f(b) > 0) then bisection(a,b)
else writeln('Nilai f(a) = ’,f(a),’ dan f(b)= ‘,f(b),’ tidak
memenuhi kondisi ');
readln;
end.
Meylanie Olivya – P2700209002 2

Start

input : a,b

f(x) ← a
f(x) ← b

ya
f(a)=0 output : a

tidak
ya
f(b)=0 output : b

f(atidak
)<
tidak 0
f(b
)>
0ya

c ← (a+b)/2
f(x) ← c

ya ya
a←c (|0-f(c)|*10000)
f(c)<0 > 0.01
b←b

a←a tidak tidak


b←c

output : c

Gambar 1. Diagram alir program mencari akar-akar dari sebuah fungsi

Penjelasan program :
1. function f(x:real):real;
{Function ini berfungsi menghasilkan nilai f(x), dimana x dan nilai f(x) bertipe real.
Function dapat dipanggil kapan saja dan dimana saja, baik dalam program utama
maupun dalam suatu procedure, dengan perintah f(x). Function selalu dimulai
dengan begin dan diakhiri dengan end.}
1.1 begin
1.1.1 f := (x*x) - (x) - 6;
{Fungsi f(x)=x2 – x – 6; persamaan dapat diubah sesuai keinginan}
Meylanie Olivya – P2700209002 3

1.2 end;
2. procedure bisection(a,b : real);
{procedure bisection berguna untuk menjalankan algoritma utama yaitu sesuai
dengan metode bisection. Procedure hanya bisa dipanggil dari program utama dan
dari dalam procedure itu sendiri dengan perintah bisection(a,b). Procedure selalu
dimulai dengan begin dan diakhiri dengan end}
2.1 var c : real;
{Merupakan deklarasi lokal dari procedure bisection, yaitu c bertipe real}
2.2 begin
2.2.1 c := (a+b)/2;
{Menghasilkan nilai c yang merupakan nilai rata-rata dari a dan b}
2.2.2 if (abs(0-f(c)*10000) > 0.01) then
begin
2.2.3.1 if f(c) < 0 then bisection(c,b)
2.2.3.2 else bisection(a,c);
{Merupakan inti dari procedure bisection. Jika f(c) < 0, maka
procedure masuk lagi dengan bisection(c,b) dengan nilai a=c dan
nilai b=b. Sedangkan jika tidak (f(c) > 0), maka masuk lagi ke
procedure bisection(a,c) dengan nilai a=a dan nilai b=c}
end
2.2.3 else writeln('Akar persamaan f(x) adalah ',c:2:7);
{e=|0-f(c)|*10000. Jika e > 0.01 maka iterasi dilanjutkan. Jika e  0.01,
maka iterasi dihentikan dan dihasilkan output adalah nilai c; c:2:7 berarti
koma berada pada posisi ke 2, dan terdapat 7 angka di belakang koma,
misalnya 2.0000001}
2.3 end;
3. var a, b: real;
{Dekalarasi untuk program utama dimana terdapat variabel a dan b bertipe real}
4. program utama
4.1 begin
4.3 write('Masukkan nilai a : '); readln(a);
{Di layar simulasi akan muncul  Masukkan nilai a : ; Jika diketik suatu nilai dan
ditekan enter, maka nilai tersebut akan dimasukkan sebagai nilai a}
4.4 write('Masukkan nilai b : '); readln(b);
Meylanie Olivya – P2700209002 4

{Di layar simulasi akan muncul  Masukkan nilai b : ; Jika diketik suatu nilai dan
ditekan enter, maka nilai tersebut akan dimasukkan sebagai nilai b}
4.5 if f(a) = 0 then writeln('Akar persamaan dari f(x) adalah ',a:2:7)
{Panggil function f(x). f(x)←x:a; Jika f(a) = 0, maka hentikan program dan output
yang diperoleh adalah nilai a}
4.6 else if f(b) = 0 then writeln('Akar persamaan dari f(x) adalah ',7)
{ Panggil function f(x). f(x)←x:b; Jika f(b) = 0, maka hentikan program dan output
yang diperoleh adalah nilai b}
4.7 else if (f(a) < 0) and (f(b) > 0) then bisection(a,b)
{JIka f(a) < 0 dan f(b) > 0, maka masuk ke procedure bisection(a,b) dengan nilai
a=a dan nilai b=b}
4.8 else writeln('Nilai f(a) = ’,f(a),’ dan f(b)= ‘,f(b),’ tidak memenuhi kondisi ');
{Jika tidak memenuhi kondisi f(a)=0, f(b)=0, serta f(a)<0 dan f(b)>0, maka
program akan berhenti tanpa memberikan output}
4.9 end.

A. Ujicoba program pada f(x)=x2-x-6

1. Ujicoba dengan nilai a = 0 dan nilai b = 5

Dari simulasi, diperoleh akar fungsi f(x), x = 3.0000001. Jika dimasukkan ke dalam
f(x)=x2-x-6, diperoleh :
f(x)=x2-x-6=(3.0000001)2-3.0000001-6=0.0000005
2. Ujicoba dengan nilai a = 0 dan nilai b = -5

Dari simulasi, diperoleh akar fungsi f(x), x = -1.9999999. Jika dimasukkan ke dalam
f(x)=x2-x-6, diperoleh :
f(x)=x2-x-6=(-1.9999999)2-(-1.9999999)-6= -0.0000005
Meylanie Olivya – P2700209002 5

Dari nilai f(x) yang diperoleh, program ini dapat mencari akar suatu fungsi dengan
tingkat keakuratan yang sangat baik. Sehingga dengan metode numerik, diperoleh dua
akar dari persamaan f(x)=x2-x-6=0 yaitu x1=3.0000001 dan x2=-1.9999999.

B. Ujicoba program pada f(x)=x3-x-6

1. Ujicoba dengan nilai a = 0 dan b = 5

Dari simulasi, diperoleh akar fungsi f(x), x = 2.0000000. Jika dimasukkan ke dalam
f(x)=x3-x-6, diperoleh :
f(x)=x3-x-6=(2.0000000)3-(2.0000000)-6= 0
2. Ujicoba dengan nilai a = 0 dan b = -10

Dari simulasi, tampak bahwa untuk interval -10 s/d 0 tidak diperoleh akar fungsi f(x)= x 3-
x-6. Sehingga untuk fungsi f(x)=x3-x-6=0 diperoleh sebuah akar yaitu x=2.0000000.

C. Ujicoba program untuk f(x)=x2.5-x-6=(x2)(√ x)-x-6

Oleh karena terdapat √ x pada fungsi di atas, maka nilai x hanya terdapat pada x positif.
Karena jika x negative maka √ x akan bernilai imajiner (tidak real). Sehingga akar f(x)
hanya akan dicari pada bilangan bulat positif.
1. Ujicoba dengan nilai a = 0 dan b = 5

Dari gambar, diperoleh akar fungsi f(x), x = 2.3354563. Jika dimasukkan ke dalam
f(x)=x2.5-x-6, diperoleh :
f(2.3354563)=(2.3354563)2.(√ 2.3354563¿ -( 2.3354563)-6= -0.0000003

2. Ujicoba dengan a=2.5 dan b= 10


Meylanie Olivya – P2700209002 6

Pada interval 2.5 s/d 10 tampak bahwa nilai f(x) naik, sehingga tidak lagi memenuhi
kondisi metode bisection, sehingga untuk fungsi f(x)= x 2.5-x-6=0 hanya diperoleh sebuah
akar yaitu x=2.3354563.

D. Ujicoba untuk f(x)=x5-3x4+5x3-9x2+8x-2

1. Ujicoba dengan nilai a = 0 dan b = 5

Dari simulasi, diperoleh akar fungsi f(x), x = 1.8273467. Jika dimasukkan ke dalam
f(x)= x5 - 3x4 + 5x3-9x2 + 8x-2, diperoleh :
f(1.8273467)=(1.8273467)5 - 3(1.8273467)4 + 5(1.8273467)3 -9(1.8273467)2 +
8(1.8273467) - 2 = -0.0000002
2. Ujicoba dengan nilai a = 0 dan b = 2

Dari gambar, diperoleh akar fungsi f(x), x = 1.0000000. Jika dimasukkan ke dalam
f(x)= x5 - 3x4 + 5x3-9x2 + 8x-2, diperoleh :
f(1.0000000)=(1.0000000)5 - 3(1.0000000)4 + 5(1.0000000)3 -9(1.0000000)2 +
8(1.0000000) - 2 = 0
3. Ujicoba dengan nilai a = 0 dan b = 0.99

Dari gambar, diperoleh akar fungsi f(x), x = 0.3948053. Jika dimasukkan ke dalam
f(x)= x5 - 3x4 + 5x3-9x2 + 8x-2, diperoleh :
Meylanie Olivya – P2700209002 7

f(0.3948053)=(0.3948053)5 - 3(0.3948053)4 + 5(0.3948053)3 -9(0.3948053)2 +


8(0.3948053) - 2 = -0.0000001
4. Ujicoba dengan nilai a = 0 dan b = -5

Untuk fungsi persamaan f(x)= x5 - 3x4 + 5x3-9x2 + 8x-2, nilai f(x) akan turun pada x < 0,
sehingga tidak akan diperoleh solusi. Sehingga akar persamaan dari f(x)= x 5 - 3x4 + 5x3-9x2
+ 8x-2=0 adalah x1 = 1.8273467, x2=1.0000000, dan x3=0.3948053.

E. Ciri-Ciri Penyelesaian Numerik

1. Pada umumnya, nilai yang dihasilkan tidak exact


2. Hanya nilai riil yang bisa diproses dan diperoleh, sehingga jika fungsi tersebut
ternyata memiliki akar imajiner, maka akar tersebut tidak akan dapat diperoleh
dengan metode numerik
3. Tidak ada indikasi apakah akar persamaan yang diperoleh adalah akar kembar
ataupun bukan
4. Meskipun diuji untuk sembarang nilai, harus tetap memenuhi kondisi yang
sudah dipersyaratkan

You might also like