Anda di halaman 1dari 36

PEMROGRAMAN NUMERIK

MENGGUNAKAN BAHASA FORTRAN

Oleh:
Ahmad Zakaria

Jurusan Teknik Sipil


Fakultas Teknik Universitas Lampung
2005
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

1. Pendahuluan
Fortran merupakan bahasa pemrograman tingkat tinggi yang
paling banyak dipergunakan orang untuk pemrograman, terutama
untuk pemrograman yang membutuhkan perhitungan numerik yang
rumit. Selain Fortran, banyak juga bahasa pemrograman lain yang
dikembangkan orang seperti Basic, Pascal, C, Cobol, ada, dan masih
banyak lagi. Bahasa-bahasa pemrograman seperti yang disebutkan ini
merupakan bahasa pemrograman yang sering disebut sebagai bahasa
pemrograman under DOS, ini dikarenakan bahasa pemrograman ini
dijalankan lewat DOS. Setelah itu berkembang bahasa pemrograman
yang sering disebut sebagai bahasa pemrograman berorientasi objek
atau Object Oriented Programming. Bahasa-bahasa pemrograman itu
antara lain Visual Compaq Fortran, Visual Basic, Borland Delphi,
Visual C++ dan lain-lain. Disamping itu juga berkembang bahasa
pemrograman yang berjenis Script seperti java, matlab, dan beberapa
bahasa pemrograman WEB seperti, bahasa php dan Java Script.
Banyak sekali materi bahasa pemrograman yang menarik untuk
dipelajari dan dikembangkan untuk kepentingan didalam bidang
Teknik, akan tetapi sepanjang pengetahuan penulis, Fortran
merupakan bahasa yang paling banyak dipergunakan oleh para
Scientist dan Engineer untuk aplikasi-aplikasi praktis dalam rangka
penyelesaikan permasalahan-permasalahan di dalam bidang teknik.
Sehubungan dengan makin banyaknya penggunaan Fortran
oleh Scientist dan Engineer, Program Fortran juga mengalami
perkembangan dari Fortran 77, Fortran 90 dan Fortran 95. Program
Fortran ini juga bisa didapat baik untuk yang menggunakan Operating
Sistem Win32 (Windows 31, Windows 98, Windows 2000, Win NT dan
Windows Xp) maupun yang menggunakan operating sistem lain
seperti LINUX ( Mandrake, RedHat, Slackwere, SuSe dll), UNIX, OS2,
BeOs yang mana Fortran 77 dikenal sebagai g77 (ji_seventiseven) atau
f77 (ef_seventiseven). Selain itu juga Fortran 77 juga mengalami

Ahmad Zakaria 1
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

perkembangan dalam hal tampilan program, yang biasanya disebut


dengan Front End yang sebenarnya hanya tampilan muka program,
akan tetapi program ini tetap menggunakan Fortran 77 dan Fortran 90
sebagai Compilernya seperti Lahey Fortran, NF Fortran, F Fortran,
FTN77, FORT99, Salford Fortran, BC Fortran, PyFort, RATFOR,
VFORT, WATCOM, Fortran FORCE dan masih banyak lagi. Ini
merupakan salah satu bukti bahwa Compiler Fortran tetap eksis
didalam perkembangan ilmu pengetahuan, dalam hal perkembangan
berbagai macam bahasa pemrograman. Salah satu program Fortran 77
yang akan dipergunakan pada pelatihan ini adalah Fortran FORCE
yang juga menggunakan Fortran 77 sebagai Compilernya.

Bila seseorang ingin menggunakan komputer, orang tersebut


tidak harus bisa dan mengetahui benar seluk beluk mengenai
komputer. Hal ini dapat dimisalkan sebagaimana halnya bila
seseorang ingin menggunakan atau mengendarai sebuah mobil, apa
seseorang harus mempunyai pengetahuan yang lengkap mengenai
mobil, jika hanya untuk bisa menjalankan atau mengendarainya?

Kita sebagai pemakai, untuk dapat menjalankan sebuah


program, kita tidak harus mengetahui benar seluk beluk mengenai
komputer, walaupun lebih banyak pengetahuan dan, berpengalaman
dan lebih mengenal seluk beluk komputer adalah lebih baik.

Sebagai pengguna yang ingin membuat program komputer


hanya perlu mengenal pengetahuan pemrograman yang diminatinya
dalam hal ini kita akan belajar bahasa pemrograman Fortran. Jadi
untuk dapat membuat dan bisa menjalankan program Fortran tentu
kita perlu mengetahui bahasa (Sintax) sebagai intruksi yang
dimengerti oleh bahasa pemrograman Fortran. Biasanya untuk dapat
membuat sebuah program yang baik, kita perlu membuat atau

Ahmad Zakaria 2
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

melengkapinya dengan sebuah Flow Chart, yang menggambarkan


jalan fikiran algoritma program.

Untuk dapat mempelajari bahasa pemrograman Fortran kita


perlu mengetahui aturan-aturan penting dan Sintax-Sintax dasar yang
selalu dipergunakan didalam pembuatan sebuah program Fortran.
Dengan berbekal mengetahui Sintax-Sintax Dasar tersebut kita sudah
dapat membuat sebuah program yang besar.
Program Fortran ditulis dalam suatu file dengan ekstensi *.f ,
*.ftn, atau *.for. Dalam menulis program Fortran pada suatu file
dengan berekstensi seperti tersebut di atas ( Fortran 77) harus
mengikuti aturan-aturan penulisan sebagai berikut,
1. Pernyataan untuk program Fortran yang bisa dimengerti
oleh program apabila ditulis dalam selang kolom 7 sampai
dengan kolom 72.
2. Kolom ke 6 disebut sebagai kolom sambungan dan
dipersiapkan hanya untuk keperluan tersebut. Apabila
pernyataan Fortran terlalu panjang dan akan melebihi kolom
72 maka pernyataannya dapat dilanjutkan di bawahnya
dengan menambahkan satu karakter pada kolom ke 6.
3. Kolom 1 s/d kolom 5 dapat dipergunakan untuk untuk
pengenal atau acuan.
4. Isi kolom 73 s/d 80 diabaikan komputer, dan kolom ini
dapat dipergunakan sebagai identifikasi atau untuk
keperluan lain.

Ahmad Zakaria 3
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

Untuk aturan penulisan Fortran tersebut dapat dilihat pada Gambar


berikut,

1 56 7 Kode sambungan 72 80

Label
pernyataan Pernyataan fortran identitas

Ahmad Zakaria 4
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

2. Sintax Dasar Program Fortran


2.1. Perhitungan Aritmatik
Operasi perhitungan yang dilakukan oleh komputer
sebenarnya hanya berupa operasi aritmatik seperti penjumlahan
(+), pengurangan (-), perkalian (*), dan pembagian(/). Selain itu
juga dapat dilakukan operasi perpangkatan (**), logaritma,
perhitungan sudut, sinus dan kosinus, serta perhitungan
bilangan imaginer yang dilambangkan dengan IMAG. Untuk
perhitungan aritmatik biasa, semua bahasa pemrograman
tingkat tinggi lain juga memiliki sintax yang hampir sama
jumlahnya, akan tetapi untuk perhitungan bilangan imaginer
sepanjang pengetahuan penulis hanya bahasa pemrogram
fortran yang bisa melakukannya. Operasi Aritmatik dalam
bentuk aljabar dan Fortran dapat dilihat pada Tabel berikut,

Operasi Bentuk Aljabar FORTRAN


Penjumlahan A+B A+B
Pengurangan A–B A-B
Perkalian A×B A*B
Pembagian A A/B
Perpangkatan A2 A**2

Nama konstanta dan variabel yang dimulai huruf I, J, K, L, M,


N menyimpan nilai dalam bentuk Integer, dan yang dimulai
dengan huruf selain yang disebutkan, menyimpan nilai dalam
bentuk Real.

2.2. Masukkan dan Keluaran(Input/Output)


Biasanya suatu program untuk melakukan perhitungan-
perhitungan membutuhkan data masukan atau data input yang
berasal dari layar monitor atau file input, dan mengeluarkan
hasil perhitungannya berupa data keluaran atau data Output

Ahmad Zakaria 5
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

didalam file Output atau pada layar monitor. Ini untuk


membaca data dari suatu file atau mengeluarkan data ke dalam
suatu file. Pernyataan Fortran untuk membuka file dapat
dilakukan dengan sintax sebagai berikut,

OPEN(unit = ekspresi integer, FILE = nama file, STATUS = literal)

Untuk literal dapat dipergunakan ‘OLD’ ( file lama dan sudah


ada) , ‘NEW’ (membuat file baru dan tidak dapat di update) dan
‘UNKNOWN’ (membuat file baru dan dapat di update).
Untuk membaca data dari suatu file dapat dipergunakan
perintah READ. Akan tetapi bila data yang dibaca pada posisi
kolom tertentu maka dapat dipergunakan perintah atau sintax
berformat. Aturan penggunaan perintah READ adalah sebagai
berikut,

READ (nomor unit,nomor acuan berformat)daftar variabel

Untuk menulis data ke dalam suatu berkas file dapat dilakukan


dengan melakukan perintah sbb,

WRITE(nomor unit,nomor acuan berformat)daftar variabel

Bentuk umum penggunaan pernyataan berformat adalah


sebagai berikut,

k FORMAT(daftar rincian)

Ahmad Zakaria 6
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

Secara keseluruhan penggunaan sintax OPEN, READ, WRITE


dan FORMAT dapat dilihat pada contoh program berikut,

Contoh Pernyataan FORTRAN

OPEN(UNIT=1,FILE=’input.inp’,STATUS=’OLD’)
OPEN(UNIT=2,FILE=’output.out’,STATUS=’UNKNOWN’)

READ(1,*)A,B
C = A + B
D = A*B
WRITE(2,*)’hasilnya =’
WRITE(2,10)A,B,C,D
10 FORMAT(F4.2,2X,F4.1,2X,F6.2,2X,F6.4)
stop
end

Contoh untuk Open file Input dan File Output adalah sebagai
berikut,

Contoh File input.inp

2 3

Contoh File output.out

hasilnya =
2.00 3.0 5.00 6.0000

Dari Contoh program sederhana di atas dapat dilihat


bagaimana penggunaan sintax READ, WRITE, FORMAT dan
penggunaan OPEN file Input dan OPEN file Output. Dari
contoh di atas juga dapat dipelajari pencirian X, I, dan F yang

Ahmad Zakaria 7
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

banyak dipergunakan untuk pernyataan berformat. Pencirian X


dipergunakan apabila dalam pembacaan atau penulisan data
akan melompati beberapa posisi pada baris data bentuk
umumnya adalah nX. Pencirian I dipergunakan apabila kita
ingin membaca suatu nilai ke dalam suatu bilangan integer.
Bentuk umum dari pencirian I adalah Iw. Pencirian F dapat
dipergunakan untuk membaca atau menuliskan nilai suatu
variabel real ke dalam atau dari suatu berkas. Bentuk umum
dari pencirian F adalah Fw.d. Dimana w menunjukkan jumlah
posisi total, dan d menandakan jumlah desimal.

2.3. Struktur Kontrol


Struktur kontrol yang paling banyak dipakai dalam
pembuatan sebuah program Fortran adalah IF Logika. Ekspresi
logika menyatakan suatu kondisi itu benar atau salah, diterima
atau tidak. Ekspresi logika dibentuk dengan menggunakan
salah satu dari operator relasional berikut,

Operasi relasional Tafsiran Aljabar


.EQ. Sama dengan
.NE. Tidak sama dengan
.LT. Lebih kecil daripada
.LE. Lebih kecil daripada atau sama dengan
.GT. Lebih besar dari pada
.GE. Lebih besar dari pada atau sama dengan

Untuk melengkapi struktur logika, bentuk pernyataan untuk


penggunaan operator Relasional dapat dilihat pada bentuk
berikut,

Ahmad Zakaria 8
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

IF (ekspresi logika) pernyataan terlaksana

IF (ekspresi logika) THEN


…….
Pernyataan
……..
ENDIF

IF (ekspresi logika) THEN


Pernyataan
IF (ekspresi logika) THEN
…….
Pernyataan
……..
ENDIF
Pernyataan
ENDIF

Contoh penggunaan struktur kontrol IF dapat dilihat pada


contoh program berikut,

Contoh penggunaan IF

OPEN(UNIT=2,FILE=’output1.out’,STATUS=’unknown’)
A = 2
B = 3
IF(A.GE.B)THEN
C = A + B
ENDIF
IF(A.LT.B)THEN
C = A * B
ENDIF
WRITE(2,*)’hasilnya =’
WRITE(2,10)A,B,C
10 FORMAT(F4.2,2X,F4.1,2X,F6.2)
stop
end

Ahmad Zakaria 9
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

Contoh File output1.out untuk penggunaan IF

hasilnya =
2.00 3.0 6.00

2.4. Looping Berlapis


Lop DO dapat dilakukan berlapis, lop yang satu dapat
diletakkan di dalam lop yang lainnya, akan tetapi antara satu
lop dengan yang lain tidak boleh tumpang tindih. Penggunaan
lop secara umum dapat ditulis sbb,

DO I=m,n
DO J = mm,nn
........................
pernyataan
.......................
END DO
END DO

Didalam penggunaan looping DO, m, mm, n, nn merupakan


ekspresi integer. m dan mm merupakan variabel lop awal, n dan
nn merupakan variabel lop akhir.

Penggunaan looping DO dapat dilihat pada contoh program


berikut,

Ahmad Zakaria 10
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

Contoh penggunaan Looping DO

OPEN(UNIT=2,FILE=’output2.out’,STATUS=’unknown’)
DO I=1,2
DO J=1,3
WRITE(2,10)I,J
10 FORMAT(2X,I4,2X,I6)
END DO
END DO
stop
end

Contoh File output2.out keluaran Looping DO

00---100-----1
00---100-----2
00---100-----3
00---200-----1
00---200-----2
00---200-----3

Dengan menggunakan looping DO, kita dapat melakukan


perhitungan secara berlapis. Perhitungan berlapis diperlukan
antara lain untuk pemodelan numerik, misalnya pemodelan
numerik 1 dimensi (1-D), 2 dimensi (2-D) dan 3 dimensi (3-D).

2.5. Jajaran (array)


Untuk melakukan perhitungan perhitungan yang besar,
biasanya selama melakukan perhitungan membutuhkan tempat
penyimpanan hasil perhitungan kedalam suatu variabel.
Pernyataan yang dipergunakan untuk melakukan penyimpanan
tersebut adalah dengan menggunakan perintah sebagai berikut,

DIMENSION array1(ukuran), array 2 (ukuran),..

Ahmad Zakaria 11
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

Contoh penggunaan DIMENSION dapat dilihat pada program


berikut,

Contoh program untuk penggunaan DIMENSION

DIMENSION IA(2,3),JA(2,3)
OPEN(UNIT=2,FILE=’output3.out’,STATUS=’unknown’)
DO I=1,2
DO J=1,3
IA(I,J) = I+J
JA(I,J) = I*J
END DO
END DO
DO I=1,2
DO J=1,3
WRITE(2,10)IA(I,J),JA(I,J)
10 FORMAT(2X,I4,2X,I6)
END DO
END DO
stop
end

Contoh File output3.out keluaran penggunaan DIMENSION

00---200-----1
00---300-----2
00---400-----3
00---300-----2
00---400-----4
00---500-----6

Dengan menggunakan pernyataan DIMENSION, perhitungan


yang dilakukan dengan looping DO dapat disimpan ke dalam
suatu variabel, sehingga dalam melakukan perhitungan
aritmatik menjadi lebih cepat.

Ahmad Zakaria 12
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

2.6. Pernyataan GOTO


Pernyataan GOTO termasuk struktur looping. Dengan
menggunakan struktur GOTO looping dapat dilakukan dengan
bebas dibandingkan dengan looping dengan menggunakan
struktur DO…END DO. Bentuk umum dari penggunaan
pernyataan GOTO adalah sebagai berikut,

n pernyataan
………………
GOTO n

Contoh penggunaan struktur GOTO dapat dilihat dari program


berikut,

Contoh program untuk penggunaan GOTO

A = 0
10 A = A + 1
write(*,*)A
IF(A.LE.5)GOTO 10
stop
end

Contoh hasil keluaran program di layar monitor untuk


penggunaan GOTO

1.
2.
3.
4.
5.
6.

Ahmad Zakaria 13
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

Program di atas dimaksudkan untuk melakukan perhitungan


dari 1 sampai dengan 6 dengan menggunakan pernyataan
GOTO.

2.7. Sub Program


Subprogram yang sering dipergunakan didalam
perhitungan aritmatik dalam suatu program besar adalah
SUBROUTINE. Penggunaan SUBROUTINE secara umum
adalah sbb,

……………
CALL Nama(argumen)
…………… MAIN PROGRAM
STOP
END

SUBROUTINE Nama(argumen)
……….. SUBPROGRAM
RETURN
END

Contoh penggunaan subprogram SUBROUTINE dapat dilihat


pada contoh program berikut,

Contoh program untuk penggunaan SUBROUTINE

A=2
CALL Func(A,F)
write(*,*)A,F
stop
end

SUBROUTINE Func(X,F)
F = X*X
return
end

Ahmad Zakaria 14
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

Dari contoh di atas terlihat bahwa untuk memanggil subroutine


Func(A,F) yang melakukan perintah F = X × X dilakukan
dengan perintah CALL. Nilai A=2 yang dimasukkan ke dalam
Func merupakan variabel X. Selanjutnya hasil yang didapat
berupa nilai variabel F.

2.8. Pernyataan Double Precision


Pernyataan Double Precision dipergunakan bila didalam
perhitungan aritmatik dari suatu program kita ingin
mendapatkan hasil dengan ketelitian yang lebih baik. Dengan
mendeklarasikan variabel sebagai variabel double precision atau
presisi ganda maka variabel tersebut mempunyai akurasi
perhitungan yang lebih baik. Bentuk umum dari penggunaan
DOUBLE PRECISION adalah sebagai berikut,

DOUBLE PRECISION nama nama variabel

Penggunaan pernyataan DOUBLE PRECISION dapat dilihat


pada contoh program berikut ini.

Contoh program yang menggunakan DOUBLE PRESISSION

DOUBLE PRECISION A,C


A =1.D+00/3.D+00
B = 1./3.
C = A - B
write(*,20)A,B,C
20 FORMAT(2X,F25.20,2X,F25.20)
stop
end

Ahmad Zakaria 15
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

Hasil keluaran dari program ini adalah,

0.33333333333333331000 0.33333334326744080000
-0.00000000993410748107

Dari hasil keluaran ini terlihat bahwa perhitungan aritmatik


yang menggunakan double precision dan yang tidak
menggunakan double precision mempunyai selisih yang cukup
besar yaitu lebih kurang 10-9.
Untuk program yang melakukan perhitungan numerik, selisih
ini sangat berarti untuk mendapatkan hasil yang lebih akurat.

Ahmad Zakaria 16
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

2.9. Fungsi Intrinsik


Beberapa Fungsi Intrinsik yang sering dipergunakan
didalam penulisan program Fortran adalah sebagai berikut,

Nama Fungsi Jenis Fungsi Definisi

SQRT(X) Real X

DSQRT(X) Double Precision DX

ABS(X) Real X

DABS(X) Double Precision DX

EXP(X) Real eX
DEXP(X) Double Precision e DX
LOG(X) Real ln X
LOG10(X) Real Log10X
REAL(GX) Real Ubah GX ke nilai real
FLOAT(IX) Real Ubah IX ke nilai real
SIN(X) Real Sudut dalam radian
COS(X) Real Sudut dalam radian
TAN(X) Real Sudut dalam radian
ASIN(X) Real Arc. Sin
ACOS(X) Real Arc. Cos
ATAN(X) Real Arc. Tan

Selain dari fungsi-fungsi di atas masih banyak lagi fungsi-fungsi


intrinsik yang tidak dipresentasikan di tutorial ini dapt
didapatkan dari buku pedoman pemrograman fortran.

Dengan mempelajari dan menguasai sintax dasar pemrograman


Fortran di atas, dan dapat menggunakan pendekatan-pendekatan
untuk pemrograman numerik dengan baik, kita dapat membuat
program numerik.

Ahmad Zakaria 17
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

3. Kesalahan dan Pendekatan Numerik


Metode numerik merupakan suatu teknik atau cara
untuk menganalisa dan menyelesaikan masalah – masalah di
dalam bidang rekayasa teknik dan sain dengan menggunakan
operasi perhitungan matematik. Masalah-masalah tersebut
biasanya diidealkan dan diformulasikan secara matematis.
Operasi perhitungan matematik di dalam metode matrik ini
biasanya dilakukan secara berulang ulang. Bila dilakukan secara
manual operasi perhitungan ini akan membutuhkan waktu
yang sangat lama. Oleh karena itu, untuk operasi perhitungan
metode numerik diperlukan bantuan komputer. Dengan
bantuan komputer operasi perhitungan yang dilakukan
berulang-ulang dapat diselesaikan dengan sangat cepat.
Metode numerik sudah lama sejak lama dikembangkan
orang. Akan tetapi pada awal perkembangannya aplikasi
metode tersebut dalam menyelesaikan permasalahan masih
sangatlah jarang. Hal ini disebabkan karena alat bantu operasi
perhitungan matematik, yaitu komputer masih sangatlah
kurang. Setelah perkembangan teknologi komputer semakin
pesat dan pemakaian komputer sudah semakin meluas, metode
numerik ini menjadi metode yang handal untuk menganalisa
dan menyelesaikan masalah-masalah yang terjadi dalam segala
bidang ilmu pengetahuan. Masalah-masalah yang dapat
diselesaikan dengan metode numerik tersebut tidak hanya
masalah sederhana yang masih dapat diselesaikan secara
analitis, akan tetapi juga masalah-masalah kompleks yang tidak
dapat lagi diselesaikan secara analitis.
Pada awalnya metode numerik banyak diperkenalkan
oleh para ahli matematik. Akan tetapi selanjutnya dalam
perkembangan metode numerik juga banyak konstribusi dari

Ahmad Zakaria 18
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

ahli rekayasa sipil, mesin, elektro, ekonomi, sosial dan bidang


ilmu lainnya.
Didalam metode numerik, permasalahan-permasalahan
yang diformulasikan secara matematis merupakan suatu
pendekatan. Akurasi perhitungan dari permasalahan yang
didekati secara matematis sangat tergantung pada asumsi-
asumsi yang diberikan. Misalnya, untuk aliran air sungai satu
dimensi, profil kecepatan setiap titik hitung diasumsikan sama.
Semakin akurat data yang dipergunakan untuk perhitungan
operasi matematik dan semakin sedikit asumsi yang diberikan
maka pendekatan akan memberikan hasil yang lebih baik.
Ukuran akurasi dari pendekatan ini lebih dikenal dengan nama
error atau kesalahan.

3.1 Kesalahan (error)


Hasil operasi perhitungan matematik dari persamaan
matematik (yang merupakan pemodelan dari permasalahan)
merupakan suatu perkiraan yang mendekati nilai eksak, apabila
persamaan tersebut dapat diselesaikan secara analitis.

Tiga macam kesalahan dalam operasi perhitungan matematik


adalah sebagai berikut,

1. kesalahan bawaan
2. kesalahan pembulatan
3. kesalahan pemotongan

Kesalahan bawaan adalah suatu kesalahan yang terjadi karena


kesalahan input data yang dipergunakan untuk perhitungan.
Kesalahan ini terjadi karena kurang telitinya pencatatan data

Ahmad Zakaria 19
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

dari lapangan maupun pencatatan dari data primer dan


sekunder.

Kesalahan pembulatan terjadi karena pemotongan desimal dari


bilangan yang diperhitungkan, baik untuk input data maupun
pada waktu operasi perhitungan matematik. Contoh dari
kesalahan pembulatan ini adalah sebagai berikut:

2,71828183 dibulatkan menjadi 2,71


3,14159265 dibulatkan menjadi 3,14

Kesalahan pemotongan terjadi karena didalam operasi


matematik tidak dilakukan prosedur perhitungan matematik
yang sesuai dengan pemodelannya. Misalnya suatu persamaan
tak hingga dimodelkan menjadi persamaan berhingga seperti
pendekatan untuk metode beda hingga yang diturunkan dari
deret Taylor.

3.2 Kesalahan Absolut dan kesalahan Relatif

Kesalahan Absolut dapat dipresentasikan sebagai berikut,

Ee = p − p *

dimana:
Ee = kesalahan absolut
p = nilai eksak
p* = pendekatan nilai eksak

Kesalahan relatif dapat ( ε exact ) dipresentasikan sebagai berikut,

Ahmad Zakaria 20
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

Ee
εe = .100 %
p

Jika nilai eksak tidak diketahui, perhitungan kesalahan relatif


( ε approximate ) juga dapat ditulis sebagai berikut,

Ea
εa = .100 %
p*

perhitungan kesalahan relatif juga dapat dipresentasikan,

p*n +1 − p*n
εa = .100 %
p*n

3.3 Deret Taylor


Pendekatan fungsi f ( x + ∆x ) dan fungsi f ( x − ∆x ) dengan

menggunakan deret Taylor dapat dipresentasikan sebagai


berikut,

Pendekatan untuk f ( x + ∆x ) ,

∂f ∆x ∂ 2 f (∆x ) ∂ 3 f (∆x ) ∂ n f (∆x )


2 3 n
f ( x + ∆x ) = f (x ) + . + 2. + 3. +K+ n .
∂x 1! ∂x 2! ∂x 3! ∂x n!

Pendekatan untuk f (x − ∆x ) ,

∂f ∆x ∂
f ( x − ∆x ) = f ( x ) − . +
2
f
.
(∆x ) ∂ 3 f (∆x )
2
− 3.
3
∂ n f (∆x )
+K+ n .
n

∂x 1! ∂x 2 2! ∂x 3! ∂x n!

Ahmad Zakaria 21
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

1. Pendekatan untuk satu suku pertama (orde nol) dapat


ditulis sebagai,

f ( x + ∆x ) ≈ f ( x ) + Ο ( x )

2. Pendekatan untuk dua suku pertama (orde satu) dapat


ditulis sebagai,

∂f ∆x
f ( x + ∆x ) ≈ f ( x ) + . + Ο x2
∂x 1!
( )

dari pendekatan ini dapat diturunkan,

∂f f ( x + ∆x ) − f ( x )
∂x

∆x
+ Ο x2 ( )

3. Pendekatan untuk tiga suku pertama (orde dua) dapat


ditulis sebagai,

∂f ∆x ∂ 2 f (∆x )
( )
2
f ( x + ∆x ) ≈ f ( x ) + . + . + Ο x3
∂x 1! ∂x 2 2 !

dari pendekatan di atas dapat diturunkan,

∂2 f ⎧ f (x + ∆x ) − f ( x ) ∂f 1 ⎫
≈ 2.⎨ − . ⎬ + Ο x3 ( )
∂x 2
⎩ (∆x ) 2
∂x ∆x ⎭

Berdasarkan fungsi f ( x + ∆x ) dan fungsi f ( x − ∆x ) , turunan

⎛ ∂2 f ⎞
kedua ⎜⎜ 2 ⎟⎟ dari fungsi f ( x ) dapat dapat disusun sebagai
⎝ ∂x ⎠
berikut,

Ahmad Zakaria 22
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

∂f ∆x ∂ 2 f (∆x ) ∂ 3 f (∆x ) ∂ n f (∆x )


2 3 n
f ( x + ∆x ) ≈ f (x ) + . + 2. + 3. +K+ n .
∂x 1! ∂x 2! ∂x 3! ∂x n!

∂f ∆x ∂ 2 f (∆x ) ∂ 3 f (∆x ) ∂ n f (∆x )


2 3 n
f ( x − ∆x ) ≈ f (x ) − . + 2. − 3. +K+ n .
∂x 1! ∂x 2! ∂x 3! ∂x n!
+

∂2 f
f ( x + ∆x ) + f ( x − ∆x ) ≈ 2. f ( x ) +
∂x 2
( )
.(∆x ) + Ο x 3
2

Kesalahan pendekatan dari persamaan di atas dapat dijabarkan


sebagai berikut,

∂2 f f ( x + ∆ x ) − 2 . f ( x ) + f ( x − ∆x )
≈ ( )
+ Ο x3
∂x 2
(∆x ) 2

Nilai eksak Nilai pendekatan Error

Dari persamaan di atas dapat dibuat sebagai berikut,

∂ 2 f 1. f ( x + ∆x ) − 2. f (x ) + 1. f ( x − ∆x )

∂x 2 (∆x )2

lebih sederhana persamaan ini dapat disusun sebagai berikut,

∂ 2 f 1. f i +1 − 2. f i + 1. f i −1

∂x 2 (∆x )2

dimana: 1, 2, dan 1 merupakan koefisien pemberat beda hingga


Persamaan ini merupakan persamaan pendekatan turunan
kedua fungsi f ( x ) dengan derajad kesalahan atau akurasi orde

dua. Persamaan di atas dikenal sebagai persamaan pendekatan

Ahmad Zakaria 23
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

metode beda hingga (finite-difference) yang merupakan


pendekatan beda hingga terpusat (central differences).
Dengan cara yang sama dapat dibuat tabel pendekatan metode
beda hingga untuk berbagai turunan dan akurasi sebagai
berikut:

Tabel 1. koefisien pemberat pendekatan beda hingga untuk akurasi orde 2


f i−2 f i −1 fi f i +1 f i+2
∂f -1 0 1
2.∆x.
∂x

(∆x )2 ∂ 2f
2
1 -2 1
∂x
3 ∂ f
3
2.(∆x ) -1 2 0 -2 1
∂x 3
(∆x )4 ∂ 4f
4
1 -4 6 -4 1
∂x
central differences Ο(∆x )
2

Tabel 2. koefisien pemberat pendekatan beda hingga untuk akurasi orde 4


f i −3 f i−2 f i −1 fi f i +1 f i +2 f i +3
∂f 1 -8 0 -8 1
12.∆x.
∂x
2 ∂ f
2
12.(∆x ) -1 16 -30 16 -1
∂x 2
3 ∂ f
3
8.(∆x ) 1 -8 13 0 -13 8 -1
∂x 3
4 ∂ f
4
6.(∆x ) -1 12 -39 56 -39 12 -1
∂x 4
central differences Ο(∆x )
4

Ahmad Zakaria 24
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

Problem Set:

1. Dari Tabel 1 diketahui bahwa pendekatan beda hingga


untuk turunan orde tiga adalah sebagai berikut,

∂3 f
2.(∆x ) . = −1. f i −2 + 2. f i −1 + 0. f − 2. f i +1 + 1. f i + 2
3

∂x 3

∂ 3 f − 1. f i − 2 + 2. f i −1 + 0. f − 2. f i +1 + 1. f i + 2
=
∂x 3 2.(∆x )
3

∂ 3 f − 12 . f i −2 + 1. f i −1 − 1. f i +1 + 12 . f i + 2
=
∂x 3 (∆x )3

Diminta: Buktikan persamaan tersebut di atas!

Jawab:
Dari deret Taylor dapat disusun persamaan sebagai berikut,

∂f 2∆x ∂2 f (2∆x) ∂3 f (2∆x) ∂n f (2∆x)


2 3 n
f (x + 2∆x) = f (x) + . + 2. + 3. +K+ n . (1)
∂x 1! ∂x 2! ∂x 3! ∂x n!

∂f ∆x ∂2 f (∆x) ∂3 f (∆x) ∂n f (∆x)


2 3 n
f (x + ∆x) = f (x) + . + 2. + 3. +K+ n . (2)
∂x 1! ∂x 2! ∂x 3! ∂x n!

∂f ∆x ∂2 f (∆x) ∂3 f (∆x) ∂n f (∆x)


2 3 n
f (x − ∆x) = f (x) − . + 2. − 3. +K+ n . (3)
∂x 1! ∂x 2! ∂x 3! ∂x n!

∂f 2∆x ∂2 f (2∆x) ∂3 f (2∆x) ∂n f (2∆x)


2 3 n
f (x − 2∆x) = f (x) − . + 2. − 3. +K+ n . (4)
∂x 1! ∂x 2! ∂x 3! ∂x n!

Ahmad Zakaria 25
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

Substitusi persamaan (2) dan (3) didapat persamaan (A) berikut,

(2) – (3)

∂f ∂ 3 f (∆x )
3
f ( x + ∆x ) − f ( x − ∆x ) ≈ 2∆x . + 2 3 . (A)
∂x ∂x 3!

Substitusi persamaan (1) dan persamaan (4) didapat persamaan


(B),

(1) – (4)

∂f ∂ 3 f (2∆x )
3
f (x + 2∆x ) − f ( x − 2∆x ) ≈ 4∆x . + 2 3 . (B)
∂x ∂x 3!

Substitusi persamaan (A) dan (B) didapat persamaan berikut,

2(A ) − (B)

∂ 3 f (∆x )
3
2 f ( x + ∆x ) − 2 f ( x − ∆x ) − f (x + 2∆x ) + f ( x − 2∆x ) ≈ (4 − 16) .
∂x 3 3 !

∂3 f
2 f ( x + ∆x ) − 2 f ( x − ∆x ) − f ( x + 2∆x ) + f (x − 2∆x ) ≈ −2(∆x )
3
.
∂x 3

∂3 f
2(∆x ) ≈ − f ( x − 2∆x ). + 2 f (x − ∆x ) − 2 f ( x + ∆x ) + f (x + 2∆x )
3

∂x 3

∂3 f
2(∆x ) ≈ − f i −2 + 2 f i −1 − 2 f i +1 + f i + 2
3

∂x 3

Ahmad Zakaria 26
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

∂ 3 f − f i −2 + 2 f i −1 − 2 f i +1 + f i + 2

∂x 3 2(∆x )
3

∂ 3 f − 12 . f i −2 + 1. f i −1 − 1. f i +1 + 12 . f i + 2

∂x 3 (∆x )3

∴Terbukti bahwa pendekatan beda hingga untuk turunan

⎛ ∂3 f ⎞
ketiga ⎜⎜ 3 ⎟⎟ adalah sebagai berikut,
⎝ ∂x ⎠

∂ 3 f − 12 . f i −2 + 1. f i −1 − 1. f i +1 + 12 . f i + 2

∂x 3 (∆x )3

2. Dari Tabel 2 diketahui bahwa pendekatan beda hingga


untuk turunan orde dua dengan akurasi orde empat adalah
sebagai berikut,

∂2 f
12.(∆x ) ≈ −1 f i −2 + 16 f i −1 − 30 f i + 16 f i +1 − 1 f i + 2
2

∂x 2

∂ 2 f − 1 f i − 2 + 16 f i −1 − 30 f i + 16 f i +1 − 1 f i + 2

∂x 2 12.(∆x )
2

Diminta: Buktikan persamaan tersebut di atas!


Jawab:
Dari deret Taylor dapat disusun persamaan sebagai berikut,

∂f 2∆x ∂2 f (2∆x) ∂3 f (2∆x) ∂4 f (2∆x) ∂n f (2∆x)


2 3 4 n
f (x + 2∆x) = f (x) + . + 2 . + 3. + 4. +K+ n . (1)
∂x 1! ∂x 2! ∂x 3! ∂x 4! ∂x n!

Ahmad Zakaria 27
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

∂f ∆x ∂2 f (∆x) ∂3 f (∆x) ∂4 f (∆x) ∂n f (∆x)


2 3 4 n
f (x + ∆x) = f (x) + . + 2 . + 3. + 4. +K+ n . (2)
∂x 1! ∂x 2! ∂x 3! ∂x 4! ∂x n!

∂f ∆x ∂2 f (∆x) ∂3 f (∆x) ∂4 f (∆x) ∂n f (∆x)


2 3 4 n
f (x − ∆x) = f (x) − . + 2 . − 3. + 4. +K+ n . (3)
∂x 1! ∂x 2! ∂x 3! ∂x 4! ∂x n!

∂f 2∆x ∂2 f (2∆x) ∂3 f (2∆x) ∂4 f (2∆x) ∂n f (2∆x)


2 3 4 n
f (x −2∆x) = f (x) − . + 2 . − 3. + 4. +K+ n . (4)
∂x 1! ∂x 2! ∂x 3! ∂x 4! ∂x n!

Substitusikan persamaan (2) dan (3),

(2) + (3)

∂ 2 f (∆x) ∂ 4 f (∆x)
2 4
f ( x + ∆x) + f (x − ∆x) ≈ 2. f ( x) + 2. 2 . +2 4 . (A)
∂x 2! ∂x 4!
Substitusikan persamaan (1) dan (4),

(1) + (4)

∂2 f (2∆x) ∂4 f (2∆x)
2 4
f (x + 2∆x) + f (x −2∆x) ≈ 2. f (x) + 2. . + 2 . (B)
∂x2 2! ∂x4 4!

Substitusi persamaan (A) dan (B),

16.(A ) − (B)

16 f ( x + ∆x ) + 16 f (x − ∆x ) − f (x + 2∆x ) − f (x − 2∆x ) ≈

∂ 4 f (∆x )
(16.2 − 2) f (x ) + (16 − 4). ∂
2 4
.(∆x ) + (16 − 16 ).2
f 2
.
∂x 2 ∂x 4 4 !
∂2 f
16 f ( x + ∆x ) + 16 f ( x − ∆x ) − f (x + 2∆x ) − f ( x − 2∆x ) ≈ 30 f ( x ) + 12 2 .(∆x )
2

∂x

Ahmad Zakaria 28
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

∂2 f
.(∆x ) ≈ − f (x − 2∆x ) + 16 f ( x − ∆x ) − 30 f ( x ) + 16 f ( x + ∆x ) − f (x + 2∆x )
2
12
∂x 2

∂ 2 f − f ( x − 2∆x ) + 16 f (x − ∆x ) − 30 f (x ) + 16 f (x + ∆x ) − f ( x + 2∆x )

∂x 2 12.(∆x )
2

∴Terbukti bahwa pendekatan beda hingga untuk turunan

⎛ ∂2 f ⎞
kedua ⎜⎜ 2 ⎟⎟ untuk akurasi orde empat adalah sebagai berikut,
⎝ ∂x ⎠

∂ 2 f − f i − 2 + 16 f i −1 − 30 f i + 16 f i +1 − f i + 2

∂x 2 12.(∆x )
2

Ahmad Zakaria 29
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

4. Pemodelan Numerik
Pemodelan Numerik dalam bidang Teknik biasanya
merupakan pemodelan dari fenomena alam atau kejadian alam
yang diformulasikan ke dalam bentuk persamaan Differensial.
Sehingga pendekatan yang dilakukan merupakan pendekatan
persamaan differensial, yang dasumsikan sebagai persamaan
yang menggambarkan kejadian atau fenomena yang mau
disimulasikan. Bentuk persamaan diferensial yang didekati
biasanya merupakan persamaan diferensial parsial.
Secara umum bentuk persamaan difernsial parsial orde 2 dan 2
dimensi dapat digambarkan sebagai berikut,

∂ 2η ∂ 2η ∂ 2η ∂η ∂η
a. + b. + c + d. + e. + f .η + g = 0
∂x 2
∂x.∂y ∂y 2
∂x ∂y

Dimana: a, b, c, d, e, f, dan g merupakan fungsi dari variabel x, y


dan variabel η.
Secara umum persamaan diferensial parsial dapat dibedakan
dalam 3 tipe persamaan sbb,

1. Persamaan Ellips, apabila b2 – 4ac < 0


2. Persamaan Parabola, apabila b2 – 4ac = 0
3. Persamaan Hiperbola, apabila b2 – 4ac > 0

4.1. Persamaan Ellips


Persamaan Poisson dan persamaan Laplace merupakan
persmaaan Ellips. Untuk persamaan 2 dimensinya dapat
digambarkan sebagai berikut,
Persamaan Poisson:

∂ 2η ∂ 2η
+ +g =0
∂x 2 ∂y 2

Ahmad Zakaria 30
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

Persamaan Laplace:

∂ 2η ∂ 2η
+ =0
∂x 2 ∂y 2

Persamaan Ellips biasanya dipergunakan untuk mensimulasi-


kan masalah-masalah yang berhubungan dengan keseimbangan
yang bersifat steady karena di dalam persamaan ini tidak ada
variabel waktunya, seperti aliran air tanah, defleksi plat karena
adanya pembebanan.

4.2. Persamaan Parabola


Persamaan parabola biasanya dipergunakan untuk
mensimulasikan perambatan panas dan difusi polutan.
Persamaan Parabola 2 dimensi (2-D) ini dapat ditulis sebagai
berikut,

∂T ⎧ ∂ 2T ∂ 2T ⎫
= K .⎨ 2 + 2 ⎬
∂t ⎩ ∂x ∂y ⎭

Dimana: T adalah temperatur atau konsentrasi polutan, K


adalah koefisien konduktivitas atau koefisien difusi turbulen, t
merupakan variabel waktu, x dan y merupakan variabel jarak.
Tujuan dari penyelesaian persamaan parabola di atas adalah
untuk mencari perubahan temperatur atau konsentrasi polutan
pada waktu dan lokasi yang berbeda.

4.3. Persamaan Hiperbola


Persamaan Hiperbola biasanya dipergunakan untuk
mensimulaskan pergerakan gelombang. Persamaan gelombang
2 dimensi (2-D) dapat dipresentasikan sebagai berikut,

Ahmad Zakaria 31
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

∂2P 2 ⎧∂ P ∂2P ⎫
2
= C .⎨ + ⎬
∂t 2 ⎩ ∂x
2
∂y 2 ⎭

Dimana: P merupakan variabel tekanan atau displacement


pada lokasi x, y dan waktu t. C merupakan cepat rambat
gelombang.

4.4. Skema Penyelesaian Persamaan


Penyelesaian persamaan diferensial sudah dibahas
terdahulu, yaitu merupakan penyelesaian dengan cara
pendekatan yang menggunakan metode beda hingga atau yang
sering disebut Metode Finite-Differences. Dalam menyelesaikan
pendekatan persamaan differensial parsial sebenarnya ada tiga
metode dasar yang dapat dipergunakan yaitu,
1. Skema Eksplisit
2. Skema Implisit
3. Skema Crank-Nicolson
Dari ketiga skema di atas, dapat dibuat skema umumnya.

∂T ∂ 2T
Misalkan suatu persamaan differensial = K 2 . Persamaan
∂t ∂x
ini dapat diselesaikan sebagai berikut,

Ti n+1 − Ti n ⎧ T n +1 − 2Ti n +1 + Ti +n1+1 Ti −n1 − 2Ti n + Ti +n1 ⎫


= K .⎨ϕ i −1 + (1 − ϕ ). ⎬
∆t ⎩ ∆x 2 ∆x 2 ⎭

Dimana: ϕ adalah koefisien tipe dari skema. Harga dari


koefisien ϕ adalah sebagai berikut,
Skema adalah Explicit apabila ϕ = 1
Skema adalah Implicit apabila ϕ = 0
Skema Crank-Nicolson apabila ϕ = 0.5
Pada pelatihan ini hanya akan dibahas Skema Explicit FD.

Ahmad Zakaria 32
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

4.5. Penyelesaian Persamaan Differensial


Dari ketiga tipe persamaan differensial, persamaan Ellips,
persamaan Parabola dan persamaan Hiperbola, dan dengan
menggunakan pendekatan beda hingga seperti yang sudah
dibahas terdahulu, dapat dibuat pendekatan beda hingga
metode Explicit sebagai berikut.

Persamaan Ellips,

∂ 2η ∂ 2η
+ =0
∂x 2 ∂y 2

η i −1 − 2η i + η i +1 η j −1 − 2η j + η j +1
+ =0
∆x 2
∆y 2

Dimana: i dan j menunjukkan nomor grid ke arah sumbu x dan


y. ∆x dan ∆y merupakan lebar grid arah sumbu x dan y. η dapat
dimisalkan sebagai tinggi muka air tanah pada suatu aliran air
tanah 2 dimensi (2-D) dan akurasi dimensi ruang orde 2.

Persamaan Parabola,

∂T ⎧ ∂ 2T ∂ 2T ⎫
= K .⎨ 2 + 2 ⎬
∂t ⎩ ∂x ∂y ⎭

Ti ,nj+1 − Ti ,nj ⎧⎪Ti −n1, j − 2Ti ,nj + Ti +n1, j Ti ,nj −1 − 2Ti ,nj + Ti ,nj +1 ⎫⎪
= K .⎨ + ⎬
∆t ⎪⎩ ∆x 2 ∆y 2 ⎪⎭

Dimana: i dan j menunjukkan nomor grid ke arah sumbu x dan


y. ∆x dan ∆y merupakan lebar grid arah sumbu x dan y. n
menunjukkan nomor grid waktu dan ∆t merupakan lebar grid

Ahmad Zakaria 33
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

waktu. K menunjukkan koefisien perambatan panas atau


koefisien difusi turbulen. T menunjukkan variabel perubahan
panas pada lokasi (x, y) dan waktu (t) tertentu dari persamaan
parabola 2 dimensi (2-D) dan akurasi dimensi ruang orde 2.

Persamaan Hiperbola,

∂2P 2 ⎧∂ P ∂2P⎫
2
= C .⎨ 2 + ⎬
∂t 2 ⎩ ∂x ∂y 2 ⎭

Pi ,nj+1 − 2 Pi ,nj + Pi ,nj−1 ⎧⎪ Pi −n1, j − 2 Pi ,nj + Pi +n1, j Pi ,nj −1 − 2 Pi ,nj + Pi ,nj +1 ⎫⎪


= C .⎨2
+ ⎬
∆t 2 ⎪⎩ ∆x 2 ∆y 2 ⎪⎭

Dimana: i dan j menunjukkan nomor grid ke arah sumbu x dan


y. ∆x dan ∆y merupakan lebar grid arah sumbu x dan y. n
menunjukkan nomor grid waktu dan ∆t merupakan lebar grid
waktu. C merupakan koefisien cepat rambat gelombang. P
menunjukkan perubahan tekanan gelombang pada lokasi (x, y)
dan waktu tertentu. Persamaan ini merupakan persamaan
Hiperbola 2 dimensi (2-D) dengan akurasi orde 2.

Ahmad Zakaria 34
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran

DAFTAR PUSTAKA

Triatmodjo, Bambang, 1992, Metode Numerik, Beta Offset,


Yokyakarta.

Etter, D.M., 1986, Fortran 77 Terstruktur, Bina Aksara, Jakarta.

Djojodihardjo, H., Sudarmo, M.S., 1985, Pengantar Pemrograman


Dengan Bahasa Fortran IV, Gramedia, Jakarta.

Ahmad Zakaria 35

Anda mungkin juga menyukai