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:
Posting Komentar (Atom)
wah, postingan yang menarik..
BalasHapustapi menurut saya alangkah baiknya jika ditambahkan algoritmanya sehingga yang membaca juga lebih memahami..
Terima Kasih..
Iya benar nih..Coba bung machi dijelaskan algoritmanya supaya pembaca lebih jelas bung dalam memahami isi programnya..terima kasih
BalasHapussalam,
arandityonarutomo.blogspot.com
Sudah kok penjelsan algoritma, makasih ya sudah mengingatkan :D
BalasHapuswah, sampai dengan 1000 iterasi. Super sekali beda daripada yang lain..
BalasHapusNice Posting
wah, ci, panjang bgt penjabarannya. Tapi saya jadi ngerti, ditambah lagi ada penjelasan di awal koding. Nice sob.
BalasHapusci mana hasilnya?
BalasHapushasilnya memang tidak muncul, program saya ditujukan untuk hasil yang benar2 tepat. jadi kalo tidak keluar, maka intervalnya perlu diubah. terima kasih
HapusBagus Ci usahanya. Nice
BalasHapusNice posting, Ci.
BalasHapusbisa lebih disederhanain gak bung machi.. o ya gambarnya disesuaikan dengan ukuran posting biar lebih rapi..
BalasHapusmakasih
punten, mau bertanya. variabel fcek dan fcek 1 kapan terisi ya ? program diatas saya jalankan gagal. sama komentar diatas yang mengtakan fcek = fa*b dan fcek1 = fa*fx dimana di taruhnya dalam list prohram. terimakasih
BalasHapusUntuk Listbox 7 itu yang mana ya ?
BalasHapussedangkan di form hanya sampai listbox 6
Jammy Tango Habanero Salsa Picante de Chile - JTM Hub
BalasHapusJommy Tango Habanero Salsa Picante de Chile Habanero 군포 출장마사지 Salsa Picante de Chile Habanero Salsa Picante 대전광역 출장샵 de 과천 출장안마 Chile 양산 출장안마 Habanero Hot Sauce - 120ml (120ml) is 안성 출장안마 $7.95