Thursday, 29 March 2012

Bisection : Alogaritma, pemograman menggunakan VBA

salah satu metode iterative untuk mencari akar persamaan adalah metode bisection, penjelasan lengkap tentang apa itu metode bisection dan metode lainya silahkan berkunjung ke sini
http://bloghasnan.blogspot.com/2012/03/metode-iterative-dan-aplikasinya.html

kali ini saya menggunakan module untuk membuat fungsi dalam VBA, sehingga dapat digunakan kapan saja fungsi tersebut dipanggil
membuat module


1. buka MS Excell
2. Masuk ke Developer Tab (ms. 2007),
3. klik Visual basic icon, maka kita akan masuk ke penulisan program
4. insert module, caranya klik kanan, insert, module seperti gambar dibawah berikut


setelah itu anda tinggal menuliskan coding untuk function nya saja

Alogaritma Bisection
kali ini saya menggunakan loop until, penjelasan dan contohnya dapat dilihat disini nie struktur looping

1. baca x0,x1 error
2. loop = 0
3. do
4. loop = loop + 1
5. baca fungsi f(x0), x0
6. baca fungsi f(x1), x1
7. xmid = (xl + xr) / 2
8. fxmid = fx(xmid)
9.  If   (f(xl )* fxmid) > 0 Then
10.   xl = xmid
11.  else
12. x1=xmid
13. end if
14. loop until |fxmid| < error
15. hasil = xmid
16. stop

kurang lebih seperti itu, bila ingin menambahkan minimal iterasi 100 misalnya, maka alogaritma no 14, dapat kita tabahkan menjadi

14. 14. loop until |fxmid| < error atau loop > 100

Source Code
masukkan coding dibawah ini, kedalam module untuk membuat fungsi baru didalam excell


Function bisect(xl, xr, err)
ilps = 0
Do
  ilps = ilps + 1
  fxl = fx(xl)
  fxr = fx(xr)
  xmid = (xl + xr) / 2
  fxmid = fx(xmid)
  If (fxl * fxmid) > 0 Then
     xl = xmid
   Else
     xr = xmid
  End If
  Debug.Print "x=", xmid, "   fx=", fxmid
  Loop Until (Abs(fxmid) < err) Or (ilps > 100)
bisect = xmid
End Function


Function fx(x)
fx = x ^ 2 - 25
End Function

setelah selesai save file anda, secara otomatis anda sudah memasukkan fungsi baru yaitu bisect pada excell yang bisa dipanggil sewaktu-waktu dengan memberikan nilai x1,xr, dan error yang diingikan, tentunya semua tersebut harus dilakukan di cells excel.

Contoh dan Cara memanggil fungsi
sebagai contoh sesuai dengan buku rajaraman : computer oriented numerical control, hal 39, yaitu metode bisectio, diambil fungsi x^2 - d = 0, dengan x0=2, x1=7 dan d = 25

1. funsi tersebut saya tulis pada module

Function fx(x)
fx = x ^ 2 - 25
End Function

2. save file anda
3. kembali ke excell, lalu ketikkan nilai x1,x0, error pada cell yang berbeda
4. panggil fungsi dengan mengetikkan =bisect(x1,x0,error) pada cell yang dituju, lihat gambar berikut bila kurang jelas


hasilnya bisa dilihat pada gmabar dibawah ini

Kesimpulan
dari hasil iterasi didapatkan nilai yang sama yaitu 5.00, besarnya hasil akan sangat tergantung dari nilai error yang dimasukkan, semakin kecil nilai error yang diinginkan maka hasilnya semakin valid, lihat pada gambar diatas.

8 comments:

Wah pencerahan sekali ternyata bisection bisa juga diterapkan di microsoft excel, sangat berguna sekali ini mas..

salam,

arandityonarutomo.blogspot.com

Wah mas Hasnan..
Bagus neyh isi blognya..
Tapi saya mau nanya, bedanya penggunaan Module dan Userform apa ya??
dan apa alasan mas Hasnan menggunakan module pada tulisan kali ini..??
Terima Kasih

iya mas kenapa tidak mencoba di userform saja.. makasih

ada beberapa alasan
1. lebih cepat, ga perlu desain form
2. dengan module dapat dipanggil kapan saja jika diperlukan
3. nilai varibel yang dimasukkan ga perlu berurutan letaknya
kekuranganya
1. persamaanya ditulis dulu
2. agak susah programmingnya

nah kalw agak susah programnya, nanti ajarin kita2 yo master
yang ini ternyata bisa di save ya mas, sepertinya memena glebih menarik ,

numpang tanya mas hasnan. fungsi untuk memanggil nilai dari excel itu kira2 yang mana ya?? mohon pencerahan. terima kasih

oh bgtu toh.. nanti di kelas ajarin mas, thq ya

@irawan : bisa download aja, tapi pake ecel 2007, klo 2003 harus konvert dulu
@novviali : fungsi ya kita buar sendiri, kebetulan saya kasih nama bisect, ntar bisa dpanggil gt
@almer, beres...

Post a Comment