Manual Pemrograman Numerik PDF
Manual Pemrograman Numerik PDF
Oleh:
Ahmad Zakaria
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
Ahmad Zakaria 2
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
Ahmad Zakaria 3
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
1 56 7 Kode sambungan 72 80
Label
pernyataan Pernyataan fortran identitas
Ahmad Zakaria 4
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
Ahmad Zakaria 5
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
k FORMAT(daftar rincian)
Ahmad Zakaria 6
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa 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,
2 3
hasilnya =
2.00 3.0 5.00 6.0000
Ahmad Zakaria 7
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
Ahmad Zakaria 8
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
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
hasilnya =
2.00 3.0 6.00
DO I=m,n
DO J = mm,nn
........................
pernyataan
.......................
END DO
END DO
Ahmad Zakaria 10
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
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
00---100-----1
00---100-----2
00---100-----3
00---200-----1
00---200-----2
00---200-----3
Ahmad Zakaria 11
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
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
00---200-----1
00---300-----2
00---400-----3
00---300-----2
00---400-----4
00---500-----6
Ahmad Zakaria 12
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
n pernyataan
………………
GOTO n
A = 0
10 A = A + 1
write(*,*)A
IF(A.LE.5)GOTO 10
stop
end
1.
2.
3.
4.
5.
6.
Ahmad Zakaria 13
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
……………
CALL Nama(argumen)
…………… MAIN PROGRAM
STOP
END
SUBROUTINE Nama(argumen)
……….. SUBPROGRAM
RETURN
END
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
Ahmad Zakaria 15
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
0.33333333333333331000 0.33333334326744080000
-0.00000000993410748107
Ahmad Zakaria 16
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
SQRT(X) Real X
ABS(X) Real X
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
Ahmad Zakaria 17
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
Ahmad Zakaria 18
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
1. kesalahan bawaan
2. kesalahan pembulatan
3. kesalahan pemotongan
Ahmad Zakaria 19
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
Ee = p − p *
dimana:
Ee = kesalahan absolut
p = nilai eksak
p* = pendekatan nilai eksak
Ahmad Zakaria 20
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
Ee
εe = .100 %
p
Ea
εa = .100 %
p*
p*n +1 − p*n
εa = .100 %
p*n
Pendekatan untuk f ( x + ∆x ) ,
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
f ( x + ∆x ) ≈ f ( x ) + Ο ( x )
∂f ∆x
f ( x + ∆x ) ≈ f ( x ) + . + Ο x2
∂x 1!
( )
∂f f ( x + ∆x ) − f ( x )
∂x
≈
∆x
+ Ο x2 ( )
∂f ∆x ∂ 2 f (∆x )
( )
2
f ( x + ∆x ) ≈ f ( x ) + . + . + Ο x3
∂x 1! ∂x 2 2 !
∂2 f ⎧ f (x + ∆x ) − f ( x ) ∂f 1 ⎫
≈ 2.⎨ − . ⎬ + Ο x3 ( )
∂x 2
⎩ (∆x ) 2
∂x ∆x ⎭
⎛ ∂2 f ⎞
kedua ⎜⎜ 2 ⎟⎟ dari fungsi f ( x ) dapat dapat disusun sebagai
⎝ ∂x ⎠
berikut,
Ahmad Zakaria 22
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
∂2 f
f ( x + ∆x ) + f ( x − ∆x ) ≈ 2. f ( x ) +
∂x 2
( )
.(∆x ) + Ο x 3
2
∂2 f f ( x + ∆ x ) − 2 . f ( x ) + f ( x − ∆x )
≈ ( )
+ Ο x3
∂x 2
(∆x ) 2
∂ 2 f 1. f ( x + ∆x ) − 2. f (x ) + 1. f ( x − ∆x )
≈
∂x 2 (∆x )2
∂ 2 f 1. f i +1 − 2. f i + 1. f i −1
≈
∂x 2 (∆x )2
Ahmad Zakaria 23
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
(∆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
Ahmad Zakaria 24
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
Problem Set:
∂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
Jawab:
Dari deret Taylor dapat disusun persamaan sebagai berikut,
Ahmad Zakaria 25
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
(2) – (3)
∂f ∂ 3 f (∆x )
3
f ( x + ∆x ) − f ( x − ∆x ) ≈ 2∆x . + 2 3 . (A)
∂x ∂x 3!
(1) – (4)
∂f ∂ 3 f (2∆x )
3
f (x + 2∆x ) − f ( x − 2∆x ) ≈ 4∆x . + 2 3 . (B)
∂x ∂x 3!
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
⎛ ∂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 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
Ahmad Zakaria 27
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
(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!
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
⎛ ∂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
∂ 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
∂T ⎧ ∂ 2T ∂ 2T ⎫
= K .⎨ 2 + 2 ⎬
∂t ⎩ ∂x ∂y ⎭
Ahmad Zakaria 31
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
∂2P 2 ⎧∂ P ∂2P ⎫
2
= C .⎨ + ⎬
∂t 2 ⎩ ∂x
2
∂y 2 ⎭
∂T ∂ 2T
Misalkan suatu persamaan differensial = K 2 . Persamaan
∂t ∂x
ini dapat diselesaikan sebagai berikut,
Ahmad Zakaria 32
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
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
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 ⎪⎭
Ahmad Zakaria 33
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
Persamaan Hiperbola,
∂2P 2 ⎧∂ P ∂2P⎫
2
= C .⎨ 2 + ⎬
∂t 2 ⎩ ∂x ∂y 2 ⎭
Ahmad Zakaria 34
Pelatihan Pemrograman Numerik
Dengan Menggunakan Bahasa Fortran
DAFTAR PUSTAKA
Ahmad Zakaria 35