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
Langganan:
Postingan (Atom)