15
See discussions, stats, and author profiles for this publication at: http://www.researchgate.net/publication/282122142 Materi Kuliah #1, #2, dan #3: Dasar-Dasar dan Sistematika Pemrograman PASCAL, FORTRAN, MS-EXCEL, dan VBA CHAPTER · SEPTEMBER 2015 READ 1 1 AUTHOR: Setijo Bismo University of Indonesia 101 PUBLICATIONS 13 CITATIONS SEE PROFILE Available from: Setijo Bismo Retrieved on: 24 September 2015

Kuliah Sampai Minggu#3

Embed Size (px)

DESCRIPTION

kuliah minggu 3

Citation preview

Seediscussions,stats,andauthorprofilesforthispublicationat:http://www.researchgate.net/publication/282122142

MateriKuliah#1,#2,dan#3:Dasar-DasardanSistematikaPemrogramanPASCAL,FORTRAN,MS-EXCEL,danVBA

CHAPTER·SEPTEMBER2015

READ

1

1AUTHOR:

SetijoBismo

UniversityofIndonesia

101PUBLICATIONS13CITATIONS

SEEPROFILE

Availablefrom:SetijoBismo

Retrievedon:24September2015

Materi Kuliah

EENNCCHH880000000011 -- PPEEMMOODDEELLAANN TTEEKKNNIIKK KKIIMMIIAA LLAANNJJUUTT

((SS22))

Periode: Minggu ke-1 sampai dengan Minggu ke-3

DEPARTEMEN TEKNIK KIMIA

FAKULTAS TEKNIK UNIVERSITAS INDONESIA

September 2015

Kuliah Minggu#01 sampai dengan Minggu#03:

ENCH800001 - Pemodelan Teknik Kimia Lanjut (S2) (Jumat SIANG)

Kuliah#02:

Pemrograman PASCAL dan FORTRAN “Alat Bantu” Komputasi Numerik

Apa itu PASCAL dan FORTRAN? Lihat Buku “Metode Numerik”: Bab 1-3!

Fenomena “galat” (sesatan atau error) dalam Komputasi Numerik sangat bergantung pada harga “Epsilon MACHINE” dari setiap jenis COMPILER (PASCAL atau FORTRAN, atau juga VBA dalam MS-EXCEL)

Apa itu “galat”?

Galat disebut juga sesatan (error): merupakan kendala yang sangat mungkin dijumpai pada saat melakukan aktivitas komputasi numerik (menggunakan komputer).

Galat dapat muncul (seolah) tanpa terduga, bahkan dapat mengubah konvergensi solusi yang seharusnya didapat, karena adanya keterbatasan pada CPU (central processing unit): processor maupun co-processor

Jenis-jenis COMPILER yang digunakan dalam Kuliah Komputasi Numerik ini:

COMPAQ Visual Fortran 6.5 (sudah discontinue, tidak beredar lagi)

Silverfrost FTN95 (FORTRAN-77, FORTRAN-95, dan FORTRAN “Modern” dari Silverfrost Ltd.) banyak dipakai dalam kuliah ini..!

Kuliah Komputasi Numerik: Resume Kuliah #02 sampai dengan #04) (#1)

TURBO PASCAL 3.0 (versi terakhir dari Borland Corp., sudah discontinue, tidak beredar lagi)

EZY PASCAL 5.x & 6.x (kreasi Michel Meyer dari Dolphin Bay Software, juga banyak digunakan dalam kuliah ini)

Kuliah Komputasi Numerik: Resume Kuliah #02 sampai dengan #04) (#2)

Struktur Pemrograman PASCAL

(Structured Programming in PASCAL)

Kuliah Komputasi Numerik: Resume Kuliah #02 sampai dengan #04) (#3)

Sistematika Pemrograman:

INPUT (Masukan) – PROCESS (Proses) – OUTPUT (Keluaran)

Diagram dan Algoritma Dasar:

PROSES:

Pemodelan Solusi Metodologi Komputasi (Numerik)

CONTOH (Aplikasi) dalam Bahasa PASCAL (Ezy Pascal):

Program Persamaan_ABC;

Var

A,B,C: Extended;

D,X1,X2: Extended;

Begin

{INPUT:}

Write('A = '); Readln(A);

Write('B = '); Readln(B);

Write('C = '); Readln(C);

{PROCESS:}

D := SQR(B) - 4*A*C;

X1 := (-B + SQRT(D))/(2*A);

X2 := (-B - SQRT(D))/2/A;

{OUTPUT:}

Writeln('X1 = ',X1:0:4);

Writeln('X2 = ',X2:0:4);

Readln;

End.

CONTOH (Aplikasi) dalam Bahasa Turbo PASCAL (Borland):

Pada dasarnya mirip dengan yang dilakukan dalam Ezy Pascal, kecuali hanya “tanpa Program HEADING”, sebagai berikut:

Var

A,B,C: Extended;

D,X1,X2: Extended;

Begin

{INPUT:}

Readln;

End.

Kuliah Komputasi Numerik: Resume Kuliah #02 sampai dengan #04) (#4)

CONTOH (Aplikasi) dalam Bahasa FORTRAN (Fortran-77 versi Silverfrost):

CONTOH (Aplikasi) dalam “Pemrograman Worksheet” MS-EXCEL (versi 2003):

Kuliah Komputasi Numerik: Resume Kuliah #02 sampai dengan #04) (#5)

Kuliah#03:

Pemrograman “Goal Seek” dalam MS-EXCEL Program ITERATIF “khas” dalam worksheet MS-EXCEL yang “lebih tepat” digunakan untuk komputasi (perhitungan secara) numerik yang bersifat “iteratif” dan atau “rekursif” (berulang sampai tercapai kondisi “konvergen”).

Kondisi “konvergen” tercapai bila jawab/solusi secara numeris adalah “yang paling mendekati” solusi analitis, yaitu bila solusi pada langkah (iterasi) terakhir adalah (hampir) sama dengan langkah sebelumnya sesuai dengan kriteria (disebut atau epsilon) yang ditentukan.

CONTOH “pemrograman” Goal Seek yang dapat diterapkan adalah: Solusi PANLT (pencarian “akar” dari Persamaan Aljabar Non-Linier Tunggal pada Bab V) atau dapat juga dikembangkan lebih lanjut untuk SPANL (Solusi Persamaan Aljabar Non-Linier)

CONTOH (Goal Seek) dalam MS-EXCEL untuk “pencarian akar” PANLT dengan metode “iteratif eksklusif khas Goal Seek”, yang cukup sederhana sebagai berikut:

Langkah-langkah pemrogramannya adalah sebagai berikut:

Buatlah “workshet” yang semirip mungkin dengan contoh di atas, dengan teknik

penulisan (pada “Sel B4”) menggunakan

“Microsoft Equation” ataupun “MathType Equation”

23( ) 0 3 2 4 xf x x e x

Namun, dari worksheet di atas, yang “terpenting” adalah Sel C6 dan Sel C7: yaitu penggunaan “Sel C6” sebagai “variabel INPUT” (untuk “harga AWAL”) dan sekaligus sebagai “variabel OUTPUT” (untuk HASIL) perhitungan secara iteratif menggunakan Goal Seek; dan penggunaan “Sel C7” sebagai “ekspresi” (ungkapan matematis) dari PANLT yang ingin dicari akar (akar-akar) persamaannya.

Langkah-langkah “Penggunaan Goal Seek” tersebut adalah sbb:

Setelah terbentuk worksheet seperti di atas, maka “berilah harga x-awal” dari PANLT sebesar “3” sehingga didapat harga ,16786( ) 16286f x sbb:

Kuliah Komputasi Numerik: Resume Kuliah #02 sampai dengan #04) (#6)

Kemudian, “posisikanlah cursor” pada Sel C7, kemudian carilah “ menu Goal Seek”, sehingga akan muncul jendela berikut:

Setelan semua baris pada jendela di atas diisi dengan lengkap, maka kemudian tekanlah OK, sehingga diperolah pada jendela “Goal Seek Status” sbb:

Atau tampilan worksheet MS-EXCEL di atas menjadi sbb:

Perhatikanlah dengan seksama, bahwa “akurasi” (ketelitian) dari komputasi seperti di atas adalah sampai “9-angka di belakang koma” pada Sel C6 dan pada Sel C7 berupa format penulisan “E-XX” (engineering format dengan 2-angka desimal). Jika diinginkan “penulisan hasil” pada Sel C6 dan C7 berupa “8-angka desimal di belakang koma”, maka pada Sel-Sel-C6 dan C7 lakukanlah format penulisan hasilnya seperti dalam jendela di bawah ini:

Kuliah Komputasi Numerik: Resume Kuliah #02 sampai dengan #04) (#7)

Sehingga akan diperoleh hasil akar persamaannya dan “nilai akhir” dari ( )f x -nya adalah sbb:

Perhatikan pula, bahwa ternyata ketelitian dari proses komputasi numerik (sering disebut juga sebagai: kriteria) seperti di atas hanyalah “8-angka desimal di belakang koma”. Dalam hal ini, jika “diinginkan ktelitian yang lebih baik lagi” (misalnya: 10-angka desimal di belakang koma), maka lakukanlah “perubahan variabel ketelitian komputasi” dalam MS-EXCEL seperti disajikan dalam jendela berikut ini:

Kuliah Komputasi Numerik: Resume Kuliah #02 sampai dengan #04) (#8)

Sehingga, hasil komputasinya dalam jendela “Goal Seek Status”, setelah dilakukan melalui perintah Goal Seek yang diulang-kembali, adalah sbb:

Atau, hasil komputasinya dalam jendela “worksheet” MS-EXCEL, setelah dilakukan melalui perintah Goal Seek yang diulang-kembali, adalah sbb:

Kuliah Komputasi Numerik: Resume Kuliah #02 sampai dengan #04) (#9)

Kuliah#04:

Berikut ini adalah CONTOH (Goal Seek) dalam MS-EXCEL untuk “pencarian akar” PANLT dengan metode “Newton-Raphson” (tentang dasar teorinya dapat dilihat pada Bab 5 dalam “Buku Metode Numerik” milik kalian, yang dapat dituliskan sebagai berikut:

Langkah-langkah pemrogramannya menggunakan Goal Seek adalah seperti telah dijelaskan di atas (halaman #5).

Ternyata, komputasi dengan cara Goal Seek seperti di atas menghasilkan “solusi divergen”, alias tidak menghasilkan jawaban yang konvergen..!

Mengapa demikian?

Hal tersebut dapat terjadi, (tampaknya) karena algoritma komputasi yang digunakan dalam perintah Goal Seek bukanlah sepenuhnya berupa “formula rekursif” dari Metode Newton-Raphson. Kemungkinan, formula yang digunakan adalah serupa dengan “Metoda Half-Section” atau yang serupa dengannya...?

Jika hal ini memang demikian adanya, maka kita harus mencari metode komputasi atau pun pemrograman alternatif yang dapat menggantikan prosedur Goal Seek yang kita gunakan selama ini..?!

Metode apakah itu???

Jawabannya adalah: Metode Pemrogram menggunakan VBA (Visual Basic Application), yang seringkali menyatu dengan perintah Macro dalam lembar kerja (worksheet), sebagai bahasa pemrograman yang identik dengan Bahasa BASIC versi Microsoft yang disembunyikan dalam perintah-perintah “Macro” dalam “worksheet” MS-Excel.

Bagaimana cara pemrograman atau penggunaannya???

1. Pemrogram VBA pada dasarnya serupa dengan PASCAL atau FORTRAN

2. Perhatikan dan pelajari contoh-contoh yang diberikan!

3. Di halaman-halaman berikut ini diberikan beberapa pemrograman VBA (dalam Macro) secara ringkas yang dapat kalian pergunakan...!

Kuliah Komputasi Numerik: Resume Kuliah #02 sampai dengan #04) (#10)

Kuliah Komputasi Numerik: Resume Kuliah #02 sampai dengan #04) (#11)

CONTOH: Deklarasi variabel-variabel “Matriks” dan “Vektor”

Dim Am(10, 10), xs(10), bv(10) As Double

CONTOH: (Aplikasi) VBA untuk Pemrograman Subprogram “Eliminasi Gauss”:

Sub ElimGauss(ByRef A(), x(), b() As Double, n As Integer)

'Dim A(10, 10) As Double

'Dim x(10), b(10) As Double

Dim i, j, k As Integer

Dim pivot, mult, top As Double

'SUBROUTINE Eliminasi Gauss

'Begin the subprogram

For j = 1 To n - 1

' Begin [outer For..Next loop]

' Begin the "Triangularisation"

pivot = A(j, j)

For i = j + 1 To n

' Begin [middle For..Next loop]

mult = A(i, j) / pivot

For k = j + 1 To n

A(i, k) = A(i, k) - mult * A(j, k)

Next

b(i) = b(i) - mult * b(j)

Next

' End [middle For..Next loop]

Next

' End [outer For..Next loop]

' End of Triangularisation

' *--- Substitusi Balik ---*

x(n) = b(n) / A(n, n)

For i = n - 1 To 1 Step -1

top = b(i)

For k = i + 1 To n

top = top - A(i, k) * x(k)

Next

x(i) = top / A(i, i)

Next

End Sub

Kuliah Komputasi Numerik: Resume Kuliah #02 sampai dengan #04) (#12)

CONTOH: Aplikasi VBA untuk Pemrograman Sub SPAL2P():

Sub SPAL2P()

Dim i, j, k, neq As Integer ' ' INPUT "element" dari matriks "A": neq = 2 For i = 1 To neq For j = 1 To neq Am(i, j) = Cells(i + 7, 15 + j) Next Next ' INPUT "element" dari vektor "b": For i = 1 To neq bv(i) = Cells(i + 7, 22) Next Call ElimGauss(Am, xs, bv, 2) ' Hasil dan Tampilan ke Excel: For i = 1 To neq Cells(i + 7, 19) = xs(i) Next End Sub

Kuliah Komputasi Numerik: Resume Kuliah #02 sampai dengan #04) (#13)

CONTOH: Aplikasi VBA untuk Pemrograman Sub SPALM2P():

Sub SPALM2P()

'

' INPUT "element" dari matriks "A":

neq = 2

For i = 1 To neq

For j = 1 To neq

A(i, j) = Cells(i + 13, 2 + j)

Next

Next

' INPUT "element" dari vektor "b":

For i = 1 To neq

b(i) = Cells(i + 13, 9)

Next

'

Range(Cells(14, 6), Cells(15, 6)).Select

' Sama dengan: Range("F14:F15").Select

' Range("Cells(14, 6), Cells(15, 6)") = "=MMULT(MINVERSE(C14:D15),I14:I15)"

Selection.FormulaArray = "=MMULT(MINVERSE(C14:D15),I14:I15)"

' Call ElimGauss(2)

' Hasil dan Tampilan ke Excel:

' For i = 1 To neq

' Cells(i + 13, 6) = x(i)

' Next

End Sub