Selasa, 27 Maret 2012

Metode Iterative Bisection

Depok, 28 Maret 2012

Setelah membahas mengenai teori metode iterative, maka pada postingan kali ini akan dijelaskan mengenai aplikasi dari metode iterative tersebut. metode yang dipilih pada contoh aplikasi ini adalah metode bisection. Berikut akan dijelaskan sedikit tentang metode bisection.

Metode Bidang Bebas atau lebih spesifik lagi ‘Metode Bidang Paruh’ (Bisection) adalah “pemaruhan”(nilai rata-rata) dari nilai estimasi akar suatu persamaan aljabar non-linear tunggal yang dibentuk dengan cara menebak 2 buah harga awal pada interval [a,b] yang bertempat-kedudukan ‘mengapit’ (di kiri dan kanan) akar atau jawab yang sebenarnya. Metode ini pada umumnya memerlukan 2 (dua) buah tebakan untuk harga-harga x-awal (x0 dan x1).

Untuk contoh aplikasi metode bisection menggunakan contoh 3.1 buku rajaraman halaman 38 dengan persamaan :

X2 – d = f (x) = 0
dimana nilai tebakan awal d = 25.0 ; x0 = 2.0 ; dan x1 = 7.0

Dengan metode bisection ini kita akan mencari akar-akar dari persamaan di atas.

Berikut adalah langkah-langkah untuk menjalankan metode bisection :

1. Buat userform dan buatlah kotak-kotak sesuai kebutuhan sesuai gambar di bawah ini :



2. Buat variabel dan rumus untuk metode bisection, yaitu nilai X2, f (X0), f(X1), f(X2), iterasi X2, iterasi f(X0), iterasi f(X1) dan iterasi f(X2)

3. Buatlah program seperti dibawah ini pada commandbutton :


Private Sub CommandButton1_Click()
'Program ini adalah program metode iterative bisection
'Komputasi Teknik
'Arandityo Narutomo 1106107782

'METODE BISECTION
'Persamaan dari program ini adalah X^2-d = f(x) = 0

'Definisi variabel

'y0=F(x0)
'y1=F(x1)
'y2=F(x2)

Dim x0, x1, x2, y0, y1, y2, n, e, d As Double
x0 = Int(TextBox1.Text)
x1 = Int(TextBox2.Text)
n = Int(TextBox7.Text)
d = 25

'Rumus perhitungan bisection

x2 = (x0 + x1) / 2
TextBox3.Text = x2
y0 = x0 ^ 2 - d
TextBox4.Text = y0
y1 = x1 ^ 2 - d
TextBox5.Text = y1
y2 = x2 ^ 2 - d
TextBox6.Text = y2

'Perhitungan Error

e = ((x2 - x1) / x2) * 100
If e < 0 Then e = e * -1

TextBox8.Text = e

'Persamaan iterasi f(x)=X^2-d
For i = 0 To n
      x2 = (x0 + x1) / 2
  If (x0 ^ 2 - d) * (x2 ^ 2 - d) <= 0 Then
      x1 = x2
  Else
      x0 = x2
  End If
  ListBox1.AddItem x2

'Listbox F (x0)
y0 = x0 ^ 2 - d

'Listbox F (x1)
y1 = x1 ^ 2 - d

'Listbox F (x2)
y2 = x2 ^ 2 - d

ListBox2.AddItem y0
ListBox3.AddItem y1
ListBox4.AddItem y2

'Iterasi error
e = ((x2 - x1) / x2) * 100
If (((x2 - x1) / x2) * 100) < 0 Then e = e * -1
ListBox5.AddItem e

Next i


End Sub



4. Tampilkan hasilnya sebagai berikut

Masukkan Input 


Maka hasilnya seperti di bawah ini



Dari data di atas, kita ketahui bahwa nilai X2 berkisar 5. Dengan melihat bahwa error sudah mendekati nol atau bahkan nol, nilai X2 tetap ada dikisaran 5. Karena persamaan yang ingin dicari akar-akarnya mengindikasikan bahwa akar kembar, maka nilai X0 dan X1 adalah sama, sehingga dari data X2 yang telah diketahui sekitar 5, maka

Jumlah X0 dan X1 = 2 x 5 = 10, sehingga nilai X0 dan X1 adalah 1/2 x 10 = 5.

Apabila dilihat dari buku Rajaraman hasilnya sebagai berikut :

Dari nilai di atas terlihat baik hasil X0 dan X1 hampir serupa yaitu sekitar 5. Hal ini menunjukkan bahwa metode iterative bisection yang telah dibuat pada visual basic hampir sama dengan versi buku Rajaraman

22 komentar:

  1. bang rantot, wahh.. semakin jagoan aja nie, kalau sy lihat model interasi trus ditampilkan seperti itu jadi menyebabkan bingung yang baca ya? betul tidak, kalau one click one result bisa ga?

    BalasHapus
  2. Iya memang mas, sebenernya yang mau saya tampilkan disitu adalah lebih fokus ke X2-nya..Kan itu akar-akar persamaannya kembar, jadi cukup dilihat dari nilai X2-nya sudah bisa ketahuan, kan penjelasannya sudah saya jabarkan. namun memang paling baik itu nilai X0 dan X1 langsung terlihat sebagai hasil iterasi, kira-kira mas hasnan tahu caranya??

    salam hangat..

    BalasHapus
  3. bukan itu maksud saya, maksud saya tanpa menampilkan proses iterasinya, mungkin hal ini berguna untuk fungsi yang dipanggil ulang khan, saya sudah bikin, tp blum posting untuk bisection, ntar check blog saya ya untuk bisection
    thanks

    BalasHapus
    Balasan
    1. Oh begitu maksudnya mas..Iya itu memang sengaja mau ditampilkan proses iterasinya. Tapi boleh tuh mas, nanti kasih linknya ya supaya saya bisa lihat postingan mas hasnan tentang bisection.

      Salam hangat

      Hapus
  4. makasih atas postingannya mas rantot.. kebetulan saya masih bingung membuat programnya.. lanjutkan

    BalasHapus
    Balasan
    1. Iya sama sama bung gerry..Selamat mecoba, siapa tahu kita bisa saling share, sama-sama saling belajar bung..

      Salam hangat

      Hapus
  5. sebuah tulisan yang membuat saya lebih mengerti neyh tentang bisection..
    sering2 sharing ilmu ya mas Rantot, biar newbie kaya saya bisa terus belajar.. hehe..
    Makasih..

    BalasHapus
  6. Waduh, penjelasan yang sederhana,singkat dan padat dari Bro Rantot..Sering-sering adja ntar sharing ilmunya..

    BalasHapus
  7. waahhh mantap! sangat membantu saya untuk memahami metode ini. penggunaan Int itu buat apa ya?? fungsinya apa ada penambahan itu??

    BalasHapus
    Balasan
    1. penggunaan Int itu hanya model penulisan saja yang menyatakan nilai itu harus dimasukkan sebagai input. Sama seperti kalau kita mengetik Val (x1) itu merupakan fungsi yang menyatakan x1 didefinisikan sebagai value. Jadi Int juga merupakan fungsi yang penggunaannya menandakan kalau nilai tersebut sebagai input dan harus dimasukkan. Fungsinya sama apabila kita hanya menuliskan x0 = textbox1.text

      Salam hangat

      Hapus
  8. bung randi ini masih bermasalah di iterasi selain nilai x2 ya? saya jg nih bung.. yg bs di share ya.. thq semua

    BalasHapus
    Balasan
    1. Iya nih almer, masih bermasalah di X2, tapi untuk akar kembar masih tidak terlalu berdampak signifikan..Tapi kalau ada teman-teman yang mau share bisa tolong share yaaa...

      salam hangat

      Hapus
  9. Postingannya sangat bermanfaat buat newbie seperti saya untuk mengerti metode ini...

    Nice share

    Daniel - mhs.blog.ui.ac.id/daniel81

    BalasHapus
  10. postingannya sangant bagus bung randi
    o iya, cara menentukan nilai awal dari metode bisection apakah sama dengan false position ya?

    BalasHapus
  11. Bang rantot suda mencoba memasukkan nilai awal yang berbeda? gimana hasilnya?

    BalasHapus
  12. mas Randy,

    pembahasan menarik,
    bisa gak diaplikasikan untuk mencari persamaan fisis?
    misalnya profil kecepatan aliran pada pelat datar.
    artinya bukan suatu polinomial akan tetapi grafiknya polinomial.
    pertanyaan lainnya adalah saya pernah mendengar istilah error function,itu maksudnya apa yah? saya sudah men-google tapi belum mengerti mas.
    lalu apa yg mesti diperhatikan dalam menentukan jumlah iterasi yah?

    Thanks a lot,
    Deberland
    http://mhs.blog.ui.ac.id/christoforus.d

    BalasHapus
  13. Wehh ini postingannya menarik dan jelas, sejujurnya referensi perguruan farhan untuk masalah ini, banyak berdiskusi dengan bung rantoti,hehehe

    salam hangat

    BalasHapus
  14. nice posting Ran. Mau nanya nih, kenapa nilai yg dipilih 4.988, buka 5.00. Memang nilai f(x) yg lebih mendekati nol adalah nilai x = 4.988, namun x = 5.00 memiliki nilai error = 0. Mohon pencerahan untuk menentukan nilai x yang digunakan. Thx Ran.

    BalasHapus
  15. Bro mau nanya, itu for i nya perannya apaan? Variabel i nya yg sy maksud gan. Mohon pencerahannya segera, terimakasih

    BalasHapus