Metoda Iterative Bisection dalam kalkulasi solusi persamaan polynomial orde tiga

Pada posting kali ini, saya ingin menyampaikan algoritma kalkulasi solusi persamaan polynomial orde tiga dengan metode iterative bisection pada microsoft Visual Basic.

Dapat diperhatikan pada gambar – gambar dibawah ini, program yang sudah saya buat beserta algoritmanya.

Jadi, pertama – tama, untuk mencari akar persamaan yang koefisiennya sudah diinput,perlu untuk dilihat terlebih dahulu plot dari nilai x terhadap nilai y pada listbox “nilai x” dan “nilai y”. Setelah memasukkan rentang nilai x dan inklinasinya (“Interval”), maka dengan menekan tombol “hitung fungsi” maka plot nilai y pada rentang nilai x yang sudah ditentukan dapat diperhatikan. Seandainya terdapat dua nilai y yang memotong sumbu x, jika y pertama kurang dari nol, maka y kedua lebih dari nol, begitu pula sebaliknya, maka solusi persamaan polinomial terdapat di antara nilai x pertama dan kedua. Jika tidak terdapat kondisi seperti yang telah disebutkan di atas, maka tekan tombol “reset” dan definisikan rentang nilai x yang baru.

Setelah ditemukan rentang nilai x, x pertama dan x kedua, yang di dalamnya terdapat solusi persamaan, maka nilai x pertama tersebut akan diinput ke “textbox” “x1” dan x kedua ke “textbox” “x2”. Setelah diinput nilai keakuratan relatif, dengan menekan tombol “Hitung akar” maka nilai akar akar tercantum di “Listbox” “Akar” dengan jumlah iterasi yang dapat diperhatikan pada “Textbox” “Jumlah Iterasi”. Setelah itu, untuk mencari akar yang kedua dan ketiga, ulangi langkah pencarian rentang nilai x –> Reset x1 dan x2 –> input nilai x1 dan x2 yang baru, dan –> Hitung akar”, Begitu seterusnya sampai semua solusi akar persamaan polinomial ditemukan.

Berikut algoritma yang sudah disusun pada Microsoft Visual Basic.

Yang ditampilkan pada gambat di atas adalah, secara berurutan, algoritma untuk plot nilai x dan y (langkah pertama dalam mencari rentang nilai x yang di dalamnya terdapat solusi persamaan) dan algoritma untuk menghitung akar dengan metode bisection.

Dapat diperhatikan pada gambar pertama, algortitma untuk menghitung nilai x dan y dengan h sebagai nilai inklinasi. Dalam algoritma kali ini, fungsi loop digunakan untuk memplot nilai y selama nilai x masih di bawah batas atas rentang yang telah ditentukan.

Pada gambar kedua, ditampilkan algoritma untuk kalkulasi nilai solusi persamaan dengan metode iterasi bisection, dengan e adalah nilai keakuratan relative. Jadi setelah nilai x1 dan x2 (masing – masing merupakan nilai untuk x pertama dan kedua yang merupakan rentang nilai dimana di dalamnya terdapat solusi persamaan) dimasukkan, akan dikalkulasi nilai x3 yang merupakan nilai tengah x1 dan x2. Kemudian nilai persamaan berdasarkan x1 dan x3 dihitung. Kemudian digunakan fungsi “If” untuk mengkondisikan peran nilai x3 pada “loop” selanjutnya, akan menjadi nilai x1 atau x2. Jadi, jika tanda (+ atau -) nilai persamaan berdasarkan nilai x1 sama dengan tanda nilai persamaan berdasarkan x3, maka pada “loop” selanjutnya, x3 akan berperan sebagai x1. Namun, jika tidak, x3 akan berperan sebagai x2. Begitu seterusnya, “loop” berjalan, hingga keakuratan relatif (Abs((x2-x1)/x2)) kurang atau sama dengan nilai keakuratan relatif yang sudah ditetapkan.

Berikut contoh kalkulasi pada program yang sudah dijalankan untuk mencari solusi persamaan,

f(x) = (x^3) – 4x + 1

Pada ketiga gambar di atas, secara berurutan, adalah langkah – langkah dalam kalkulasi solusi akar persamaan pertama, kedua, dan ketiga. Dengan nilai – nilai akar dapat diperhatikan pada “Listbox” “Akar”.

Kiranya sekian yang dapat saya sampaikan kali ini. Semoga Bermanfaat.

Wassalam

 

Catatan: untuk identifikasi tanda pada suatu besaran numerik, pada microsoft Visual Basic, digunakan fungsi sgn (), jadi jika terdapat code sgn (-3), maka visual basic akan membacanya sebagai -1, dan jika terdapat code sgn (3), maka visual basic akan membacanya sebagai 1.

  1. menarik nie, untuk pemogramannya polinomial pangkat tiga, nilai konstantanya bisa dirubah2, yang saya agak bingung, berhubung tombolnya banyak banget, dan ditampilan code cuman untuk satu yaitu command button 1, bisa dijelaskan lebih terperinci, pemograman pada setiap action buttonnya.
    thanks, http://bloghasnan.blogspot.com/,

    • Iya, Mas, jadi saya cuma tampilkan code untuk command button “Hitung fungsi” dan command button “Hitung akar”. Niatnya untuk memnghemat ruang aja. Karena selain code untuk dua command button di atas, codenya itu cuma me – reset textbox sama listbox aja.
      Tapi, thanks masukannya.

  2. fungsi “sgn” dalam visual basic itu maksudnya apa ya?? mohon penjelasannya dan tampilan interfacenya banyak banget dan tidak beraturan sehingga membuat bingung dalam mengertinya.
    thnks ^0^

    • oiya, yang itu lupa dijelasin. jadi itu fungsinya buat identifikasi tanda plus atau minus. jadi kalau ada code sgn (-3), visual basic akan membacanya sebagai -1, dan jika terdapat code sgn (3), maka visual basic akan membacanya sebagai 1.
      Thanks Gil masukannya.

  3. Wah menarik sekali postnya, kebetulan untuk soal bisection saya masih salah-salah, iterasi di beberapa bagian masih tidak berurutan hasilnya.
    Ketika baca diatas, pertanyaan saya sm dengan ragil, tp sudah dijawab ternyata. Postingannya bs dijadikan referensi belajar, Terima kasih, salam,
    http://mhs.blog.ui.ac.id/aisha.anastasia11/

  4. waduh.. banyak tombolnya ya.. jadi bingung.. mohon pencerahan..

    • Arandityo Narutomo
    • Maret 29th, 2012

    Wah menarik nih bisa mencari akar persamaan dari pangkat 3..tapi itu kenapa tampilannya harus ada 3 gambar? Kenapa ga sekali saja tampilannya tetapi ketiga akar langsung dapat diketahui??

    salam,

    arandityonarutomo.blogspot.com

  5. Mas mas.. yang sgn itu di pakeny dimana ya?

  6. agung..kenapa sgn(-3) dibaca -1 bukan -3??
    malah bingung -,-

  7. pertanyaan saya sma dengan ragil. kalau memang dia identifikasi plus ato minus, kenapa jadi dibaca -1, bukan -3? mohon penjelasannya, karena saya sangat tertarik untuk mencoba program ini. hehe

    • Ossy
    • Mei 21st, 2014

    Apa ini bisa dibuat menggunakan matlab?
    Kalau bisa codingnya seperti apa ya?
    Saya ingin membuat dengan matlab tetapi bingung codingnya
    Mohon tanggapannya
    Terima kasih

    • Saya juga masih belajar. Tapi, fundamentalnya dapat diambil dari referensi berikut,
      HK. Versteeg, Malalasekera W., An Introduction to Computational Fluid Dynamic : Chapter 6. Longman Scientific & Technical.1995.
      Kalo coding numeriknya, tinggal pakai finite difference juga bisa.

  1. Mei 21st, 2012
    Trackback from : muhammadagungsantoso

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: