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. {Function ini berfungsi menghasilkan nilai f(x). baik dalam program utama maupun dalam suatu procedure. Function dapat dipanggil kapan saja dan dimana saja. Diagram alir program mencari akar-akar dari sebuah fungsi Penjelasan program : 1.1 begin 1.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. persamaan dapat diubah sesuai keinginan} .(x) .1.6. {Fungsi f(x)=x2 x 6. dimana x dan nilai f(x) bertipe real.} 1. Function selalu dimulai dengan begin dan diakhiri dengan end.1 f := (x*x) . function f(x:real):real. dengan perintah f(x).01 a b a c tidak tidak output : c Gambar 1.

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful