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.

1 begin 1.(x) . function f(x:real):real. Function selalu dimulai dengan begin dan diakhiri dengan end. dimana x dan nilai f(x) bertipe real. dengan perintah f(x). Function dapat dipanggil kapan saja dan dimana saja. baik dalam program utama maupun dalam suatu procedure. Diagram alir program mencari akar-akar dari sebuah fungsi Penjelasan program : 1.} 1. {Function ini berfungsi menghasilkan nilai f(x).Meylanie Olivya P2700209002 2 Start input : a. {Fungsi f(x)=x2 x 6.1.1 f := (x*x) .01 a b a c tidak tidak output : c Gambar 1. persamaan dapat diubah sesuai keinginan} .b f(x) f(x) a b ya f(a)=0 tidak f(b)=0 tidak tidak f(a)<0 f(b)>0 ya c (a+b)/2 f(x) c output : a ya output : b a b c b ya f(c)<0 ya (|0-f(c)|*10000) > 0.6.

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

a:2:7) {Panggil function f(x). maka hentikan program dan output yang diperoleh adalah nilai b} 4. maka nilai tersebut akan dimasukkan sebagai nilai b} 4.9999999. tidak memenuhi kondisi ').9 end. Jika f(b) = 0. f(x) x:b. Ujicoba dengan nilai a = 0 dan nilai b = -5 Dari simulasi. diperoleh akar fungsi f(x).0000001)2-3. {Jika tidak memenuhi kondisi f(a)=0. serta f(a)<0 dan f(b)>0. diperoleh : f(x)=x2-x-6=(-1.f(b).b) {JIka f(a) < 0 dan f(b) > 0.Meylanie Olivya P2700209002 4 {Di layar simulasi akan muncul p Masukkan nilai b : . diperoleh akar fungsi f(x).0000005 2.0000001.6 else if f(b) = 0 then writeln('Akar persamaan dari f(x) adalah '. Jika dimasukkan ke dalam f(x)=x2-x-6. maka masuk ke procedure bisection(a. maka hentikan program dan output yang diperoleh adalah nilai a} 4.b) dengan nilai a=a dan nilai b=b} 4.7 else if (f(a) < 0) and (f(b) > 0) then bisection(a.8 else writeln('Nilai f(a) = .0000001-6=0. dan f(b)= . f(x) x:a.0000005 . Jika f(a) = 0. diperoleh : f(x)=x2-x-6=(3. Jika diketik suatu nilai dan ditekan enter. x = 3.5 if f(a) = 0 then writeln('Akar persamaan dari f(x) adalah '. x = -1. Ujicoba dengan nilai a = 0 dan nilai b = 5 Dari simulasi. Jika dimasukkan ke dalam f(x)=x2-x-6.7) { Panggil function f(x). maka program akan berhenti tanpa memberikan output} 4.f(a). f(b)=0.9999999)2-(-1.9999999)-6= -0. A. Ujicoba program pada f(x)=x2-x-6 1.

Sehingga dengan metod numerik. diperoleh dua e akar dari persamaan f(x)=x2-x-6=0 yaitu x1=3.0000000)3-(2. diperoleh akar fungsi f(x). B. diperoleh : f(2. x = 2. x = 2. akan bernilai imajiner (tidak real). Sehingga akar f(x) Karena jika x negative maka hanya akan dicari pada bilangan bulat positif.Meylanie Olivya P2700209002 5 Dari nilai f(x) yang diperoleh. Jika dimasukkan ke dalam f(x)=x3-x-6.0000000.3354563)=(2. 1. diperoleh : f(x)=x3-x-6=(2.0000003 . maka nilai x hanya terdapat pada x positif. tampak bahwa untuk interval -10 s/d 0 tidak diperoleh akar fungsi f(x)= x3x-6.0000001 dan x2=-1.5-x-6=(x2)( Oleh karena terdapat )-x-6 pada fungsi di atas.0000000)-6= 0 2. diperoleh akar fungsi f(x). Ujicoba dengan nilai a = 0 dan b = 5 Dari simulasi. Ujicoba dengan nilai a = 0 dan b = 5 Dari gambar.3354563)-6= -0.( -( 2. Ujicoba program untuk f(x)=x2.3354563)2.3354563. C. Ujicoba program pada f(x)=x3-x-6 1. Jika dimasukkan ke dalam f(x)=x2.5-x-6.9999999. program ini dapat mencari akar suatu fungsi dengan tingkat keakuratan yang sangat baik. Sehingga untuk fungsi f(x)=x3-x-6=0 diperoleh sebuah akar yaitu x=2. Ujicoba dengan nilai a = 0 dan b = -10 Dari simulasi.0000000.

Jika dimasukkan ke dalam f(x)= x5 .0000000) .99 . Ujicoba dengan nilai a = 0 dan b = 5 Dari simulasi.8273467)4 + 5(1. diperoleh akar fungsi f(x).3x4 + 5x3-9x2 + 8x-2.0000000)3 -9(1. D.0000000)2 + 8(1. diperoleh akar fungsi f(x). sehingga untuk fungsi f(x)= x2.8273467)5 .0000002 2.8273467.3(1. diperoleh : f(1. Ujicoba dengan nilai a = 0 dan b = 2 Dari gambar.8273467)2 + 8(1. Ujicoba dengan nilai a = 0 dan b = 0.5-x-6=0 hanya diperoleh sebuah akar yaitu x=2.8273467) . x = 1. diperoleh : f(1. sehingga tidak lagi memenuhi kondisi metode bisection.5 s/d 10 tampak bahwa nilai f(x) naik. Jika dimasukkan ke dalam f(x)= x5 .0000000.3354563.Meylanie Olivya P2700209002 6 2.2 = -0.0000000)5 . Ujicoba untuk f(x)=x5-3x4+5x3-9x2+8x-2 1.5 dan b= 10 Pada interval 2.2 = 0 3.8273467)=(1.0000000)=(1.3x4 + 5x3-9x2 + 8x-2.0000000)4 + 5(1.8273467)3 -9(1.3(1. Ujicoba dengan a=2. x = 1.

3948053)5 .3948053)4 + 5(0. E.0000001 4. dan x3=0.8273467.3(0. Ujicoba dengan nilai a = 0 dan b = -5 Untuk fungsi persamaan f(x)= x5 . harus tetap memenuhi kondisi yang sudah dipersyaratkan . Jika dimasukkan ke dalam f(x)= x5 . Meskipun diuji untuk sembarang nilai.3948053)=(0. x2=1. maka akar tersebut tidak akan dapat diperoleh dengan metode numerik 3.3948053)3 -9(0.3x4 + 5x3-9x2 + 8x-2=0 adalah x1 = 1.3x4 + 5x3-9x2 + 8x-2. nilai f(x) akan turun pada x < 0.3948053) . nilai yang dihasilkan tidak exact 2. Sehingga akar persamaan dari f(x)= x5 . Pada umumnya. diperoleh akar fungsi f(x).3948053.Meylanie Olivya P2700209002 7 Dari gambar. sehingga jika fungsi tersebut ternyata memiliki akar imajiner. x = 0.3x4 + 5x3-9x2 + 8x-2. sehingga tidak akan diperoleh solusi. Ciri-Ciri Penyelesaian Numerik 1.2 = -0. diperoleh : f(0. Tidak ada indikasi apakah akar persamaan yang diperoleh adalah akar kembar ataupun bukan 4.3948053.3948053)2 + 8(0. Hanya nilai riil yang bisa diproses dan diperoleh.0000000.