Anda di halaman 1dari 14

See

discussions, stats, and author profiles for this publication at: http://www.researchgate.net/publication/281995573

Komputasi Numerik 2015: Bahan-bahan Kuliah


ke-2 sampai dengan ke-4

CHAPTER SEPTEMBER 2015

VIEW

1 AUTHOR:

Setijo Bismo
University of Indonesia
96 PUBLICATIONS 13 CITATIONS

SEE PROFILE

Available from: Setijo Bismo


Retrieved on: 22 September 2015
Kuliah #02 sampai dengan #04:
ENEE600031-Komputasi Numerik
(Kleas PAGI dan 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)

Silverfros 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 f ( x ) 0 3 x 3 2 e x x 4 (pada Sel B4) menggunakan
2

Microsoft Equation ataupun MathType Equation


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 f ( x) 16286,16786 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)
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) (#11)
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) (#12)
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

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