Pemrograman Dan Komputasi Numerik Menggunakan Python
Pemrograman Dan Komputasi Numerik Menggunakan Python
Penulis:
Sholihun
Zohan Syah Fatomi
Proofreader:
Moulidvi
Desain sampul:
Pram’s
Penerbit:
Gadjah Mada University Press
Anggota IKAPI dan APPTI
Redaksi:
Jl. Sendok, Karanggayam CT VIII Caturtunggal
Depok, Sleman, D.I. Yogyakarta, 55281
Telp. /Fax.: (0274) 561037
ugmpress.ugm.ac.id | [email protected]
Segala puji dan syukur penulis sampaikan ke hadirat Allah SWT, Tuhan semes-
ta alam yang telah melimpahkan segala kenikmatan dan kesempatan sehingga
penulis dapat menyelesaikan penyusunan buku "Pemrograman dan Komputasi
Numerik: Menggunakan Python". Buku ini menyajikan pembahasan terkait
dasar pemrograman dan penerapannya pada komputasi numerik. Buku ini
ditulis sebagai panduan bagi pembaca secara umum khususnya bagi pembaca
dengan latar belakang sains dan teknik. Bagi pembaca yang belum mengerti
terkait bahasa pemrograman bisa memulai belajar pemrograman dari awal
melalui buku ini. Bagi pembaca yang mempunyai pengetahuan pemrograman,
buku ini dapat digunakan untuk memperdalam kemampuan pemrograman dan
juga sekaligus untuk memahami terkait komputasi numerik.
Dalam buku ini, penulis menggunakan Python karena selain cukup power-
full untuk komputasi numerik, Python merupakan software pemrograman yang
mudah untuk dipelajari. Selain karena motivasi kemudahan dalam pembela-
jaran, penulis menggunakan Python karena software pemrograman ini sedang
paling banyak (ingin) dikuasai oleh pengembang pemrograman di seluruh
dunia. Harapan penulis, selain pembaca mendapatkan ilmu terkait komputasi
numerik, dengan pemrograman Python pembaca dapat mengembangkan ilmu-
nya dalam bidang lain seperti Data Science dan pengembangan aplikasi baik
berbentuk mobile-based, dekstop-based maupun web-based. Sebagai suatu kar-
ya, buku ini tentunya belum sempurna, sehingga masukan dari berbagai pihak
sangat diperlukan. Terakhir, semoga buku ini bermanfaat bagi bagi pembaca
dan berkontribusi dalam penyebaran khazanah keilmuan dan pendidikan.
Penulis
v
DAFTAR ISI
KATA PENGANTAR v
1 PENDAHULUAN 1
1.1 Apa itu Program? . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Bahasa Pemrograman . . . . . . . . . . . . . . . . . . . . . . 1
1.2.1 Bahasa Mesin . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Bahasa Assembly . . . . . . . . . . . . . . . . . . . . 4
1.2.3 Bahasa Tingkat Tinggi . . . . . . . . . . . . . . . . . 5
1.3 Mengapa harus Python? . . . . . . . . . . . . . . . . . . . . . 6
1.4 Soal Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 PERANGKAT LUNAK 9
2.1 Menginstal Python . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Interaktif Interpreter (REPL) pada Python . . . . . . . 10
2.3 Intregrated Development Environtment (IDE) . . . . . . . . . 14
2.3.1 Menginstal Pycharm . . . . . . . . . . . . . . . . . . 15
2.3.2 Menginstal Jupyter Notebook . . . . . . . . . . . . . 17
2.4 Soal Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3 DASAR PYTHON 19
3.1 Konsep variabel . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.1 Aturan Penamaan Variabel . . . . . . . . . . . . . . . 21
3.2 Tipe Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.1 Tipe Data Number . . . . . . . . . . . . . . . . . . . 25
vii
3.2.2 Tipe Data String . . . . . . . . . . . . . . . . . . . . 27
3.2.3 Tipe Data Boolean . . . . . . . . . . . . . . . . . . . 28
3.2.4 Tipe Data None . . . . . . . . . . . . . . . . . . . . . 28
3.3 Variabel Multinilai . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.1 List . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.2 Tuple . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3.3 Set . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.4 Dict . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.4 Indentasi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.5 Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.5.1 Operator Aritmatika . . . . . . . . . . . . . . . . . . 49
3.5.2 Operator Pemasukan (Assignment) . . . . . . . . . . 50
3.5.3 Operator Perbandingan . . . . . . . . . . . . . . . . . 52
3.5.4 Operator Logika . . . . . . . . . . . . . . . . . . . . 54
3.5.5 Operator Bitwise . . . . . . . . . . . . . . . . . . . . 55
3.5.6 Operator Khusus . . . . . . . . . . . . . . . . . . . . 57
3.6 Konversi Variabel . . . . . . . . . . . . . . . . . . . . . . . . 59
3.6.1 Konversi Integer . . . . . . . . . . . . . . . . . . . . 59
3.6.2 Konversi Float . . . . . . . . . . . . . . . . . . . . . 60
3.6.3 Konversi String . . . . . . . . . . . . . . . . . . . . . 60
3.6.4 Konversi Char . . . . . . . . . . . . . . . . . . . . . 61
3.6.5 Konversi Complex . . . . . . . . . . . . . . . . . . . 61
3.7 Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.7.1 Menginstal Library . . . . . . . . . . . . . . . . . . . 62
3.7.2 Memanggil Library . . . . . . . . . . . . . . . . . . . 62
3.8 Komentar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.8.1 Komentar singleline . . . . . . . . . . . . . . . . . . 65
3.8.2 Komentar multiline . . . . . . . . . . . . . . . . . . . 65
3.9 Soal Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5 FUNGSI 83
5.1 Apa itu Fungsi? . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.1.1 Struktur dan Definisi Fungsi . . . . . . . . . . . . . . 85
5.1.2 Konsep Return dan Fungsi Void . . . . . . . . . . . . 86
5.2 Fungsi Rekursif . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.3 Jangkauan dan Waktu Hidup Variabel . . . . . . . . . . . . . 89
5.4 Fungsi Built-In . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.5 Soal Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6 PARADIGMA OBJEK 93
6.1 Pemrograman Berorientasi Objek . . . . . . . . . . . . . . . . 93
6.2 Kelas dan Objek . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3 Mengkonstruksi Kelas . . . . . . . . . . . . . . . . . . . . . 95
6.4 Mengkonstruksi Objek . . . . . . . . . . . . . . . . . . . . . 97
6.5 Konstruktor . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.6 Enkapsulasi . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.6.1 Menggunakan Variabel Privat . . . . . . . . . . . . . 102
6.7 Inheritance (Pewarisan) . . . . . . . . . . . . . . . . . . . . . 104
6.7.1 Fungsi super() . . . . . . . . . . . . . . . . . . . . 106
6.7.2 Multiinheritance (Pewarisan ganda) . . . . . . . . . . 107
6.8 Polimorpisme . . . . . . . . . . . . . . . . . . . . . . . . . . 109
6.9 Soal Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9 MATRIKS 193
9.1 Apa itu Matriks? . . . . . . . . . . . . . . . . . . . . . . . . 193
9.2 Sifat Matriks . . . . . . . . . . . . . . . . . . . . . . . . . . 194
9.2.1 Sifat Aljabar . . . . . . . . . . . . . . . . . . . . . . 194
9.2.2 Sifat Matriks Transpos . . . . . . . . . . . . . . . . . 196
9.2.3 Sifat Matriks Determinan . . . . . . . . . . . . . . . . 196
9.3 Kaitan matriks dan Python . . . . . . . . . . . . . . . . . . . 197
9.3.1 Operasi Pertambahan dan Pengurangan pada Matriks . 198
9.3.2 Operasi Perkalian Matriks . . . . . . . . . . . . . . . 199
9.3.3 Operasi Matriks Tranpos . . . . . . . . . . . . . . . . 201
9.3.4 Operasi Determinan Matriks . . . . . . . . . . . . . . 202
9.3.5 Operasi Matriks Invers . . . . . . . . . . . . . . . . . 203
9.3.6 Operasi Pencarian Nilai dan Vektor Eigen Matriks . . 205
9.4 Soal Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
12 INTERPOLASI 267
12.1 Definisi Interpolasi . . . . . . . . . . . . . . . . . . . . . . . 267
12.2 Interpolasi Linear . . . . . . . . . . . . . . . . . . . . . . . . 269
12.3 Interpolasi Lagrange . . . . . . . . . . . . . . . . . . . . . . 271
12.4 Interpolasi Newton . . . . . . . . . . . . . . . . . . . . . . . 278
12.5 Interpolasi Hermite . . . . . . . . . . . . . . . . . . . . . . . 286
12.6 Interpolasi Spline-Kubik . . . . . . . . . . . . . . . . . . . . 290
12.7 Soal Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
13 INTEGRASI 301
13.1 Definisi Integrasi . . . . . . . . . . . . . . . . . . . . . . . . 301
13.2 Metode Trapezoidal . . . . . . . . . . . . . . . . . . . . . . . 303
13.3 Metode Simpson-1/3 . . . . . . . . . . . . . . . . . . . . . . 307
13.4 Metode Simpson-3/8 . . . . . . . . . . . . . . . . . . . . . . 312
13.5 Metode Gauss-Quadrature . . . . . . . . . . . . . . . . . . . 315
13.6 Metode Monte-Carlo . . . . . . . . . . . . . . . . . . . . . . 320
13.7 Soal Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
14 DIFERENSIAL 325
14.1 Definisi Diferensial . . . . . . . . . . . . . . . . . . . . . . . 325
14.2 Persamaan Diferensial . . . . . . . . . . . . . . . . . . . . . 326
14.2.1 Metode Beda-Hingga . . . . . . . . . . . . . . . . . . 326
14.2.2 Metode Runge-Kutta 2 . . . . . . . . . . . . . . . . . 332
14.2.3 Masalah Syarat Awal . . . . . . . . . . . . . . . . . . 334
14.3 Soal Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
INDEKS 345
xii