Anda di halaman 1dari 14

M ANUAL RINGKAS DAN PRAKTIS UNTUK

K OMPUTASI N UMERIK DAN P EMROGRAMAN

Menggunakan Microsoft EXCEL


dalam
Goal Seek/Macro/VBA (Visual Basic Aplication)

Seri Kuliah Komputasi Numerik untuk Teknik Kimia

Setijo Bismo
Departemen Teknik Kimia – FTUI
Oktober 2017
Bagian Satu
D ASAR -D ASAR P EMROGRAMAN DAN PENGGUNAAN G OAL S EEK

A. CARA PENGGUNAAN PROSEDUR ATAU PERINTAH “GOAL SEEK”

Bagi yang menggunakan MS-Excel tahun 2007 ke atas (2010, 2013, dan seterusnya), berikut ini
adalah garis besar langkah-langkah atau prosedur penggunaan Goal Seek:

Buat lembatang sebar atau lembar lajur (spreadsheet) di MS-Excel yang Anda memiliki,
Klik sel yang ingin Anda ubah...
Dari tab Data, pilih What if Analysis...
Pilih prosedur Goal Seek, akan muncul jendela seperti berikut:

Dalam jendela dialog Goal Seek seperti di atas, pilihlah sel (Set cell) yang akan diubah
nilainya (melalui prosedur Goal Seek) pada suatu nilai tertentu...
Nilai atau harga sel yang dimaksudkan sebagai perubahan seperti di atas, harus disebutkan
pada kotak “To value:” (misalnya: 0 atau nol)
Klik OK

B. “GOAL SEEK” UNTUK SOLUSI PERSAMAAN ALJABAR NON-LINIER TUNGGAL (PANLT)

Coba perhatikan lembatang sebar atau lembar lajur (spreadsheet) dalam MS-Excel seperti di
bawah ini:
Jika Anda diharuskan membuat spreadsheet seperti di atas, maka langkah yang harus diikuti dengan
seksama adalah:
1. Buatlah spreadsheet baru di MS-Excel Anda, sedapat mungkin harus sama seperti di atas!
2. Baris pertama dan kedua hanya diisi komentar-komentar atau catatan-catatan seperlunya,
3. Baris ketiga dan kelima dikosongkan atau blank,
Baris keempat diisi dengan f ( x)  0  3 x 3  2 e x  x  4
2
4.
5. Baris keenam, tepatnya dalam sel B6 diisi dengan “ ”, sedangkan sel C6 diisi
dengan ”nilai tebakan” atau ”nilai awal” atau ”harga awal” yang dikehndaki,
6. Baris ketujuh, tepatnya dalam sel B7 diisi dengan pernyataan f ( x)  , sedangkan sel
C7 merupakan formulasi MS-Excel untuk f ( x)  3 x 3  2 e x  x  4 ,
2

yang isinya adalah “ ”

Untuk mencari solusi PANLT dimaksudkan dalam MS-Excel tersebut, maka Anda harus
mengikuti langkah-langkah berikut:
1. Tempatkan atau klik tetikus (cursor) pada sel C6, isilah dengan nilai awal yang Anda
kehendaki (misalkan: 4), kemudian tekan Enter sehingga tetikus ada di sel C7,
2. Dengan tetikus berada dalam sel C7, panggillah atau munculkan perintah “Goal Seek”
dengan cara: masuk ke menu tab Data, kemudian pilih What if Analysis dan kemudian
Goal Seek, sehingga muncul jendela:

3. Ke dalam jendela Goal Seek di atas, isilah kolom “To value:” dengan nilai 0 (nol) dan
mengisi kolom “By changing cell:” dengan cara menempatkan tetikus pada sel C6,
sehingga kolom (sel) tersebut berisi $C$6
4. Tekan OK, sehingga hasilnya adalah:

C. “GOAL SEEK” UNTUK SOLUSI “PANLT” MENGGUNAKAN “METODE NEWTON-RAPHSON”

Perhatikan juga lembatang sebar atau lembar lajur (spreadsheet) dalam MS-Excel yang telah
dibuat program “Goal Seek” seperti berikut ini:
Jika Anda isi “harga awal” dengan nilai 1 (satu) seperti di atas, dan kemudian menjalankan “Goal
Seek” dengan cara menempatkan tetikus pada sel/kolom C10 dan membuat sel C6 sebagai nilai
“yang harus berubah”, sebagai berikut:

Dan, hasilnya adalah sebagai berikut:

Cobalah sekarang, jalankan “Goal Seek” dengan memberikan harga awal sebesar 4 (empat).
Telitilah hasilnya! Mengapa demikian?
Bagian Dua
D ASAR -D ASAR P ENGGUNAAN DAN PEMROGRAMAN PADA M ACRO VBA

A. LANGKAH AWAL: CARA MEMBUKA DAN MENGGUNAKAN EDITOR MACRO VBA


B. MEMBUAT PROGRAM MACRO SEDERHANA: PERSAMAAN ABC
 Penyederhanaan dari program di atas adalah sbb:

Sub Pers_ABC() 'PROSES HITUNGAN:


Dim A, B, C, D As Double '----------------
Dim X1, X2 As Double D = B ^ 2 - 4# * A * C
X1 = (-B + Sqr(D)) / 2 / A
' Program Persamaan ABC X2 = (-B - Sqr(D)) / 2 / A
' untuk mencari akar dari
' Persamaan Kuadrat: 'KELUARAN atau HASIL:
' y(x) = A x^2 + b x + c '--------------------
Cells(5,3) = X1
'INPUT: parameter A, B, dan C Cells(6,3) = X2
'---------------------------- Range("C7").Select
A = Cells(3,1)
B = Cells(3,2) End Sub
C = Cells(3,2)

Catatan:
Pernyataan Sub Pers_ABC() setara dengan Program Sub Pers_ABC dalam
FORTRAN 77 atau Pascal (Ezy Pascal),
Pernyataan Dim A, B, C, D As Double setara dengan Real*8 A, B, C, D dalam
FORTRAN 77 atau Var A, B, C, D: Extended (atau Double) dalam Pascal,
Pernyataan Range (“A3”).Select yang diikuti dengan A = ActiveCell.Value dapat diganti
dan disederhanakan menjadi: Cells(3,1)
Pernyataan Range (“A3”).Select yang diikuti dengan A = ActiveCell.Value adalah
perangkat atau instrumen INPUT dalam Bahasa VBA (Macro), yang setara dengan
READ(*,*) A dalam FORTRAN 77 atau Readln(A) dalam Pascal,
Pernyataan B^2 (dalam bagian proses) setara dengan B**2 dalam FORTRAN 77,
Pernyataan 4# (dalam bagian proses), mengindikasikan bahwa angka 4 adalah memiliki
jenis double precision,
Pernyataan Range (”C5”).Value adalah perangkat/instrumen OUTPUT dalam
Bahasa VBA (Macro), yang artinya adalah: mencetak nilai variabel X1 dalam sel C5.
Pernyataan Range (”C5”).Value = X1 dapat disederhanakan menjadi Cells(5,3) =
X1.
C. PROGRAM MACRO VBA UNTUK SOLUSI PANLT DENGAN METODE NEWTON-RAPHSON
Catatan:
1. Pernyataan-pernyataan INPUT di bawah ini:

Range(“J5”).Select dan xold = ActiveCell.Value dapat disederhanakan menjadi xold =


Cells(5,10)

Range(“J6”).Select dan maxiter = ActiveCell.Value dapat disederhanakan menjadi


maxiter = Cells(6,10)

Range(“J9”).Select dan eps = ActiveCell.Value dapat disederhanakan menjadi eps =


Cells(5,10)

2. Pernyataan-pernyataan OUTPUT di bawah ini:

Range(“J10”).Value = x dapat disederhanakan menjadi x = Cells(10,10)

Range(“J11”).Value = iter dapat disederhanakan menjadi iter = Cells(11,10)


D. PROGRAM MACRO VBA UNTUK SOLUSI PANLT DENGAN METODE SECANT

Format lembatang sebar atau lembar lajur (spreadsheet) yang harus Anda buat untuk keperluan
ini adalah sebagai berikut:

Function f(ByVal x As Double) As Double


f = 2 * x ^ 2 + 3 * x - 6
End Function
Sub Secant()
Dim eps, x, x0, x1 As Double
Dim flag, iter, maxiter As Integer
'
' Secant Macro untuk Komputasi Numerik
'
Range("J5").Select
x0 = ActiveCell.Value
Range("J6").Select
x1 = ActiveCell.Value
Range("J7").Select
maxiter = ActiveCell.Value
Range("J8").Select
eps = ActiveCell.Value

iter = 0
flag = 0

Do While (flag = 0)
x = x1 - f(x1) * (x1 - x0) / (f(x1) - f(x0))
If Abs(x - x1) <= eps Then
flag = 1
ElseIf (iter > maxiter) Then
flag = 2
Else
iter = iter + 1
Range("J12").Select
ActiveCell.Value = iter
x0 = x1
x1 = x
End If
Loop

Range("J10").Select
ActiveCell.Value = x
Range("J11").Select
ActiveCell.Value = f(x)

End Sub
PENYEDERHANAAN PROGRAM

Listing dari program untuk komputasi dengan Metode Secant seperti di atas dapat dituliskan
kembali dengan menggunakan sintaks Bahasa VBA yang lebih sederhana, yaitu dengan
menggunakan fungsi Cells(row,col), seperti di bawah ini:

Function f(ByVal x As Double) As Double


f = 2 * x ^ 2 + 3 * x - 6
End Function
Sub Secant()
Dim eps, x, x0, x1 As Double
Dim flag, iter, maxiter As Integer
'
' Secant Macro untuk Komputasi Numerik
'
‘--- INPUT: ---
x0 = Cells(5,10)
x1 = Cells(6,10)
maxiter = Cells(7,10)
eps = Cells(8,10)

‘--- PROSES: ---


iter = 0
flag = 0
Do While (flag = 0)
x = x1 - f(x1) * (x1 - x0) / (f(x1) - f(x0))
If Abs(x - x1) <= eps Then
flag = 1
ElseIf (iter > maxiter) Then
flag = 2
Else
iter = iter + 1
Range("J12").Select
ActiveCell.Value = iter
x0 = x1
x1 = x
End If
Loop

‘--- OUTPUT: ---


Cells(10,10) = x
Cells(11,10) = f(x)

End Sub

Anda mungkin juga menyukai