Setelah pada postingan sebelumnya kita membahas salah satu metode dalam penyelesaian persamaan tak linear dengan metode tabulasi. Pada metode tabulasi perhitungan cukup banyak dan memakan waktu yang lama. Untungnya, ada metode yang lain untuk menyelesaikan masalah ini. Metode ini, cenderung lebih baik dari pada metode tabulasi metode ini dikenal dengan nama metode bisection (bagi dua). Seperti apa metode ini mari kita pelajari bersama.
Dasar Teori Metode Bisection
- Secara umum, jika f(x) bernilai real dan kontinu pada selang [a, b] dengan f(a).f(b) < 0, maka ada peluang paling sedikit terdapat satu akar real pada interval tersebut. Ujung-ujung selang, yaitu a dan b disebut dengan tebakan awal.
- Interval [a, b] dibagi dua menjadi interval [a, c] dan [c, b] dengan c = a+b/2.
- f(a).f(c)> 0, maka akar berada pada [c, b]
- f(a).f(c)= 0, maka akar = c
- f(a).f(c)< 0, maka akar berada pada [a, c]
atau - f(c).f(b) > 0, maka akar berada pada [a, c]
- f(c).f(b)= 0, maka akar = c
- f(c).f(b) < 0, maka akar berada pada [c, b]
Algoritma Bisection
INPUT: Function f, endpoint values a, b, tolerance TOL, maximum iterations NMAX CONDITIONS: a < b, either f(a) < 0 and f(b) > 0 or f(a) > 0 and f(b) < 0 OUTPUT: value which differs from a root of f(x)=0 by less than TOL N ← 1 While N ≤ NMAX # limit iterations to prevent infinite loop c ← (a + b)/2 # new midpoint If f(c) = 0 or (b – a)/2 < TOL then # solution found Output(c) Stop EndIf N ← N + 1 # increment step counter If sign(f(c)) = sign(f(a)) then a ← c else b ← c # new interval EndWhile Output("Method failed.") # max number of steps exceeded
Langkah-Langkah Pengerjaan
- Ambil sembarang nilai untuk mengisi x1 dan x2. Sehingga f(x1) dikalikan f(x2) lebih kecil dari 0. Dengan asumsi bahwa ada nilai x diantara x1 dan x2 yang menyebabkan f(x) menjadi. Logikanya jika f(x1)*f(x2) < 0 maka diantara dua nilai ini ada x yang menyebabkan 0. Coba lihat lagi tabel dibawah. Anggap x1 = a dan x2 = b. ketika f(x1) bernilai negatif dan f(x2) bernilai positif maka diantar a dan b terdapat sebuah niali yang bernama c. c ini akan membuat f(x) menjadi 0.
- Cari nilai c, dimana c = (a+b)/2. Proses ini mempercepat pencarian nilai c yang menyebabkan f(c) menjadi 0 dibandingkan dengan metode tabulasi.
- Cari nilai f(c). Proses ini bertujuan untuk mengetahui batas perhitungan selanjutnya (interval hitungan selanjutnya).
- Cek f(a)*f(c), f(c)*f(b). Mana diantara kedua perkalian itu yang menghasilkan nilai kurang dari 0 (<0). Logikanya sama seperti logika di poin 1 dan bertujuan pada poin 3.
- Jika sudah lakukan perhitungan seperti pada poin 1 sampai 4. Dengan ketentuan jarak interval dirubah mengikuti hasil perhitungan di poin 4.
Contoh soal
Cari satu nilai x pada f(x)=x^3-7x+1, sehingga f(x) = 0 ! (Gunakan metode bisection/bagi dua)jawab. Cari sampai ketelitian 10^-5
Iterasi 1
- ambil 2 buah angka secara acak. Semisal a=0 dan b=1 untuk perhitungan awal (perhatikan kedua angka tersebut harus memenuhi syarat f(a)*f(b)<0). Kita cek apakah f(0)*f(1)<0.
- f(0) = 0^3-7(0)+1 = 1.
- f(1) = 1^3-7(1)+1 = -5.
- Ternyata memenuhi syarat f(0)*f(1)<0 (1*(-5) = -5).
- cari nilai c, yaitu c = (0+1)/2 = 0,5. c=0,5.
- cari nilai f(c).
- f(c) = c^3-7(c)+1
- f(0,5) = (0,5)^3-7(0,5)+1
- f(0,5) = -2,375
- cek f(a)*f(c),f(c)*f(b).
- f(a)*f(c) = -2,375*1 = -2,375 (memenuhi syarat f(x1)*f(x2)<0)
- f(c)*f(b) = -2,375*5 = 11,875
- yang memenuhi batas baru adalah f(c)*f(a). jadi interval selanjutnya adalah [0,0.5].
- Pada iterasi 1 didapat interval baru yaitu [0,0.5]. Maka perhitungan dilakukan dengan menganggap a=0 dan b=0,5.Didapat dari perhitungan sebelumnya f(0) = 1 dan f(0,5) = -2,375
- c = (0+0,5) = 0,25, f(c) -> f(0,25) = (0,25)^3 - 7(0,25) + 1 = -0,7344
- cek f(a)*f(c),f(c)*f(b).
- f(a)*f(c) = f(0)*f(0,25) = 1 * (-0,7344) = -0,7344 (memenuhi syarat f(x1)*f(x2)<0)
- f(c)*f(b) = f(0,25)*f(0,5) = -0,7344 * (-2,375) = 1,7442
- yang menjadi interval selanjutnya adalah [0,0.25]
- Pada iterasi 2 didapat interval baru yaitu [0,0.25]. Maka perhitungan dilakukan dengan menganggap a=0 dan b=0,25. Didapat dari perhitungan sebelumya f(0) = 1 dan f(0,25) = -0,7344.
- c = (0+0,25)/2 = 0,125, f(c) -> f(0,125) = (0,125)^3 - 7(0,25) + 1 = 0,12695
- cek f(a)*f(c),f(c)*f(b).
- f(a)*f(c) = f(0)*f(0,125) = 1*0,12695 = 0,12695
- f(c)*f(b) = f(0,125)*f(0,25) = 0,12695*(-0,7344) = -0,09323208 (memenuhi syarat f(x1)*f(x2)<0)
- yang menjadi interval selanjutnya adalah [0.125,0.25]
Sebenarnya perhitungan anda bisa selesai di iterasi 18, tetapi karena keisengan penulis maka dilanjutkan sampai nemu ketelitian lebih dari 10^-7 :D.
Untuk file excelnya bisa didownload di sini : JUSTCLICK (direct from google drive)
Sumber :
- Algorithm : https://en.wikipedia.org/wiki/Bisection_method
- Utama : PPT Metnum S-1 Informatika Unpad 2015
Posting Komentar untuk "Penyelesaian Persamaan Tak Linear : Metode Bisection"
Berilah komentar, saran, dan kritik dengan bijak