Senin, 26 Maret 2012

Latihan Metode Bisection pada VB


Pada kesempatan kali ini saya akan mencoba Metode Iterative : Bisection.





Masukkan perintah berikut :













Ubah intervalnya :











Penjelasan Algoritma :

Diketahui sebuah persamaan f(x)  = x^2-5x+6
Secara matematis biasa di dapat nilai akar persamaan x = 3 dan x = 2

Karena metode bisection adalah metode iterasi terbuka, maka jika ingin konvergen, batas intervalnya memang sering perlu kita ubah.


z1 = 0.001
z2 = -0.001

nilai z ini adalah batas toleransi, dimana jika nilai f(x) diantara kedua z maka metode bisection sudah konvergen.

bisection adalah metode bagi 2, di mana batas interval akan dibagi terus menjadi 2 hingga menemukan nilai yang konvergen.

---------------------------------------------------------

a = TextBox2.Text
b = TextBox3.Text
n = 1000
z1 = 0.001
z2 = -0.001
x = a / 2 + b / 2
fx = x ^ 2 - 5 * x + 6
fa = a ^ 2 - 5 * a + 6
fb = b ^ 2 - 5 * b + 6
fcek = fa * fb
fcek1 = fa * fx
---------------------------------------------------------

a dan b adalah batas interval yang kita inginkan.
n adalah jumlah iterasi.
x adalah nilai di tengah-tengah antara a dan b = (a+b)/2
pertama2, cari nilai f(x), f(a), dan f(b)
kemudian fcek = f(a) x f(b) dan fcek1= f(a) x f(x)

kemudian pada fungsi if :

--------------------------------------------------------

If fx = 0 Then
    TextBox1.Text = x

--------------------------------------------------------

jika nilai f(x) sudah 0, maka diketahui salah satu akar persamaannya adalah x, dan sudah konvergen.

jika tidak,


--------------------------------------------------------


Else
    If fcek > 0 Then
    MsgBox "batas interval ubah"
    ElseIf fcek = 0 Then
        If fa = 0 Then
        TextBox1.Text = a
        ElseIf fb = 0 Then
        TextBox1.Text = b
        End If

--------------------------------------------------------
Jika tidak, maka lihat fcek, di mana nilainya adalah f(a) x f(b).
jika f(a) x f(b) lebih besar dari 0, maka di antara interval a dan b tidak ada akar persamaan. Sehingga muncul MsgBox : batas interval harus di ubah.
jika fcek = 0, maka salah satu antara nilai a dan b adalah akar persamaan. kemudian dengan fungsi if, jika f(a) = 0, maka nilai a adalah akar persamaan, jika f(b) = 0 maka nilai b adalah akar persamaan.

Algoritma di bawah ini jika nilai fcek < 0.
-------------------------------------------------------------
    Else
        For i = 1 To n
        z1 = 0.001
        z2 = -0.001
            If fcek1 < 0 Then
------------------------------------------------------------
jika nilai fcek1 < 0, maka akar persamaannya ada di antara nilai a dan x, sehingga nilai b diubah ke nilai x. Dan nilai x yang baru adalah nilai a dan b(yang baru) dibagi 2.

-------------------------------------------------------------
                If (fx < z1 And fx > z2) Then
                TextBox1.Text = x
                Else
                a = a
                b = x
                x = a / 2 + b / 2
                fx = x ^ 2 - 5 * x + 6
                fa = a ^ 2 - 5 * a + 6
     
                ListBox1.AddItem a
                ListBox2.AddItem b
                ListBox3.AddItem x
                ListBox4.AddItem fx
                ListBox5.AddItem fa
                ListBox6.AddItem i + 1
                ListBox7.AddItem fcek
                End If
                If (fx < z1 And fx > z2) Then
                TextBox1.Text = x
                Else
                a = x
                b = b
                x = a / 2 + b / 2
                fx = x ^ 2 - 5 * x + 6
                fa = a ^ 2 - 5 * a + 6
     
                ListBox1.AddItem a
                ListBox2.AddItem b
                ListBox3.AddItem x
                ListBox4.AddItem fx
                ListBox5.AddItem fa
                ListBox7.AddItem fcek
                End If
------------------------------------------------------
fungsi begitu seterusnya, hingga pada iterasi ke - n nilai a dan b sudah tidak bisa dibagi lagi mendekati nilai batas toleransi.

------------------------------------------------------


Pada algoritma di bawah ini adalah ketika fcek1 > 0 sehingga nilai akar persamaannya ada di antara nilai x dan b.


------------------------------------------------------


            ElseIf fcek1 > 0 Then
                If (fx < z1 And fx > z2) Then
                TextBox1.Text = x
                Else
                a = x
                b = b
                x = a / 2 + b / 2
                fx = x ^ 2 - 5 * x + 6
                fa = a ^ 2 - 5 * a + 6
     
                ListBox1.AddItem a
                ListBox2.AddItem b
                ListBox3.AddItem x
                ListBox4.AddItem fx
                ListBox5.AddItem fa
                ListBox6.AddItem i + 1
                ListBox7.AddItem fcek
                End If
                If (fx < z1 And fx > x2) Then
                TextBox1.Text = x
                Else
                a = a
                b = x
                x = a / 2 + b / 2
                fx = x ^ 2 - 5 * x + 6
                fa = a ^ 2 - 5 * a + 6
     
                ListBox1.AddItem a
                ListBox2.AddItem b
                ListBox3.AddItem x
                ListBox4.AddItem fx
                ListBox5.AddItem fa
                ListBox7.AddItem fcek
                End If
         
            End If
        Next i
    End If
 
End If
------------------------------------------------------------------


Algoritma berikut adalah untuk jika pada iterasi terakhir, nilai f(x) masih lebih besar dari nilai toleransi error, maka batas interval harus diubah karena belum konvergen. Namun jika sudah akan muncul MsgBox bahwa interval sudah benar dan nilai x yang konvergen akan keluar.

If fx > z1 Then
    MsgBox "interval harus diubah pula"
ElseIf (fx <= z1 And fx >= z2) Then
    MsgBox "perhitungan anda benar"
End If

------------------------------------------------------


Sekian. Mohon komentarnya ya