Secara analitik, untuk mencari akar persamaan kuadrat sangat mudah, bisa dengan cara faktorisasi atau menggunakan persamaan roots of a quadratic function yang lebih dikenal sebagai rumus ABC. Tetapi bagaimana dengan mencari akar polinomial yang berderajat tinggi lebih dari dua. Jelas sekali cukup sulit mencari akarnya dengan metode analitik.
Jika metode analitik susah dilakukan maka perlu metode numerik. Salah satu metode numerik untuk mencari solusi akar pada persamaan polinomial adalah metode bisection (atau dalam bahasa indonesia metode bagi paruh). Metode ini bisa mencari akar polinomial real derajat berapa saja. Metode Bisection merupakan metode mencari akar suatu fungsi dengan menetapkan batas interval di mana di dalam interval tersebut memuat nilai akar yang dicari. Nanti interval ini dibagi dua kemudian diambil interval baru yang masih memuat nilai akar. Proses pembagian ini dilakukan terus menerus sehingga batas interval mendekati nilai akar.
Dari pada bingung kita berikan contoh mudah dahulu yakni persamaan kuadrat $f(x)=x^2 – 2x – 3$ yang diplot sebagai berikut.
Terlihat pada gambar bahwa c semakin mendekati akar yang mau kita cari yakni 3. Nilai c menggantikan nilai a supaya kita mendapati sebuah interval baru c sampai b yang masih memuat akar yang kita cari. Andai kita menggantikan b bukan a maka interval baru yakni a sampai c yang tidak memuat akar yang kita cari. Jelas ini tidak sesuai dengan ketentuan awal yang kita jelaskan sebelumnya.
Bagaimana cara menentukan a atau b yang akan diganti dengan c tanpa melihat gambar plot? Coba perhatikan gambar di bawah ini
Nilai f(a) dan f(c) yang sama-sama bernilai negatif. Sedangkan nilai f(b) bernilai positif. Kalau kita mengalikan f(c) dengan f(a) maka hasilnya positif
$f(c)f(a) > 0.$
Sedangkan kalau kita mengalikan f(c) dengan f(b) maka hasilnya negatif
$f(c)f(b) < 0.$
Dari perbedaan tersebut, kita bisa mengambil kesepakatan bahwa jika $f(c)f(a) > 0$ atau $f(c)f(b) < 0$ , maka nilai a diganti dengan nilai c. Kemudian kita mendapatkan batas baru c sampai b.
Agar mudah, kita beri nama c sebagai a kembali yang dapat dilihat pada gambar di bawah ini:
Sama seperti proses sebelumnya, kita tentukan nilai tengah yakni c antara a dan b
$c = \frac{a+b}{2} $.
Coba perhatikan gambar ini
Jelas sekali pada gambar bahwa nilai c semakin mendekat ke akar yang kita cari yakni 3. Kita menetapkan c sebagai batas baru sebelah kanan menggantikan b. Nilai b diganti dengan nilai c supaya kita mendapati sebuah interval baru yang masih memuat akar yang kita cari. Caranya jika $f(c)f(b) > 0$ atau $f(c)f(a) < 0.$ , maka nilai b diganti dengan nilai c sehingga didapatkan interval baru.
Proses ini terus diulang dengan interval baru yang didapatkan dari proses sebelumnya. Sehingga sampai di suatu keadaan di mana a dan b sangat dekat sekali dengan akar yang kita cari. Tentu proses ini akan terus berlangsung kalau kita tidak membuat suatu keadaan yang dapat menghentikan proses ini. Kita buat keadaannya di mana jika $ε = \left | a-b \right |\leq 0.0001$, maka proses berhenti.
Sebenarnya bebas mau ε-nya berapa, tetapi jika semakin kecil maka semakin teliti hasil perhitungan akar.
Jika proses sudah berhenti kita ambil nilai c akhir sebagai akar yang kita cari. Ralat dari akar yang kita cari adalah nilai ε yang kita tetapkan. Bagaimana mencari akar yang lainnya? Caranya sama seperti mencari akar yang pertama, kita harus menentukan batas awal a dan b yang mana harus memuat akar ini. Oleh sebab itu, kelemahan metode bisection adalah kita harus bisa membuat batas awal yang tepat sehingga di dalam batas tersebut memuat akar yang kita cari. Jika tidak, maka akar yang kita cari tidak akan kita temukan.
def f(x): f = x**2 -2*x -3 return f
def bisection(a, b): eps = 0.1 while (eps >= 0.0001): c=(a+b)/2.0 if (f(c)*f(a) > 0.0): a = c else: b = c eps = abs(a-b) return c
Kemudian dipanggil bisectionnya dengan batas a =0 dan b =10 didapatkan
bisection(0,10) 2.9999542236328125
f = x**2 -2*x -3 dapat diganti dengan persamaan yang memiliki akar real sesuai dengan yang kita inginkan.
Tidak ada komentar:
Posting Komentar