The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by E-Library IKIP Saraswati, 2024-02-11 18:59:43

Metode Numerik (I Wayan Sudiarta)

Metode Numerik (I Wayan Sudiarta)

Edisi Pertama Metode Numerik I Wayan Sudiarta


Metode Numerik Penulis: I Wayan Sudiarta Halaman awal: 16 Halaman isi: 382 hlm. Ukuran buku: 148 × 210 mm Tata letak buku ini dibuat dengan LATEX MikTeX 2019, editor TeXMaker dan Jupyter Notebook website: http://fisika.unram.ac.id/sudiarta https://github.com/wayansudiarta/ metodenumerik surel: [email protected] Copyleft. Sebagai pengabdian kepada masyarakat Indonesia dan Dunia, pembaca dapat mencetak atau menyalin seba gian atau seluruh buku ini dalam bentuk elektronis maupun cetak tanpa izin tertulis dari penulis. Mohon etika ilmiah tetap dijaga dan plagiasi dihindari. Di larang mengomersialkan buku ini tanpa izin penulis. https://creativecommons.org/licenses/by/4.0/ ISBN: 978-602-0756-47-9 Penerbit: Arga Puji Press


Made Xandy, Gede Arvin dan Mahasiswa Indonesia i 382


Kata Pengantar “All life is problem solving.” – Karl Popper "What I cannot create, I do not understand." – Richard Feynman Buku ini berawal dari modul-modul yang diberik an pada mata kuliah (MK) Metode Numerik di Pro gram Studi Fisika Fakultas Matematika dan Ilmu Pe ngetahuan Alam Universitas Mataram. Modul-modul ini kemudian dikembangkan dengan tambahan bahasa pemrograman Python dan dokumen interaktif Jupyter Notebook. Penjelasan pada buku ini telah diusahakan seseder hana mungkin dan metode atau prosedur perhitungan numerik yang digunakan dapat diikuti dengan mudah. Agar lebih fokus pada proses perhitungan numerik, pe nurunan persamaan numerik hanya diberikan untuk iii 382


kasus-kasus sederhana. Penurunan persamaan nume rik lainnya diberikan sebagai latihan atau dapat dibaca di buku numerik lebih lanjut. Buku ini lebih difokusk an pada keahlian mahasiswa dalam penerapan metode numerik untuk aplikasi di berbagai bidang. Sepuluh tahun yang lalu, pada awal penulis menga jar MK Metode Numerik, perhitungan numerik meng gunakan bahasa pemrograman C yang telah diajark an pada MK Pemrograman Komputer. Sebagai upaya menambah pengetahuan dan keahlian mahasiswa ser ta mempertimbangkan aplikasi metode numerik, tam bahan bahasa Matlab (atau Octave) juga diajarkan. Memperhatikan perkembangan bahasa pemrograman untuk pengolahan data dan ketersediaan program yang gratis serta modul atau package tambahannya yang banyak, pada beberapa tahun terakhir bahasa pemro graman Python digunakan secara penuh. Sebagai pe nunjang komputasi, Jupyter Notebook juga digunak an sehingga perhitungan dapat lebih interaktif. Kum pulan dokumen-dokumen Jupyter Notebook yang ada di buku ini dan perbaikan buku ini (errata) disediak an pada laman http://github.com/wayansudiarta/ metodenumerik. Seperti kuotasi dari Feynman di atas, dengan ber eksperimen, mencoba, menggunakan bahasa Python dapat mempercepat pemahaman serta penerapannya pada permasalahan-permasalahan nyata. iv 382


I Wayan Sudiarta Metode Numerik Mempertimbangkan bahwa konversi penulisan bi langan desimal dari satu program ke program lain membutuhkan usaha yang besar dan ketelitian yang tinggi. Supaya konsisten, pada buku ini, ketetapan tanda titik (.) digunakan sebagai koma dalam penu lisan bilangan desimal. Selain itu dalam publikasi ilmi ah internasional, tanda titik juga yang paling banyak digunakan. Buku ini terdiri dari tiga bagian yaitu (1) bagian awal yaitu pada Bab 1-3 mengenai penjelasan secara umum penggunaan metode numerik dan bahasa pem rograman Python serta Jupyter Notebook, (2) bagian matematika dasar untuk metode numerik pada Bab 4 tentang deret dan aproksimasi Taylor yang dibutuhk an pada penurunan persamaan numerik, dan (3) ba gian aplikasi Bab-bab setelah bab 4 tentang berbagai metode untuk menyelesaikan permasalahan sederhana kemudian dilanjutkan dengan permasalahan yang le bih kompleks. v 382


Ucapan Terima Kasih Penulis bersyukur kepada Tuhan Yang Maha Esa atas anugrah kesempatan, semangat beserta keberuntung an yang tiada ternilai. Penulisan buku ini tentunya tidak bisa dilakukan tanpa bantuan banyak pihak. Penulis berterima kasih kepada mahasiswa mahasiswa yang mengikuti Mata Kuliah Metode Numerik yang telah memberikan banyak pertanyaan, komentar dan saran yang membantu penyempurnaan buku ini. Penulis mengucapkan terimakasih kepada Fatmawati yang telah membantu koreksi penulisan buku ini. Penulis mengucapkan terima kasih sebesar-besarnya kepada rekan-rekan dosen Fisika Fakultas MIPA Uni versitas Mataram yang meluangkan waktu untuk membanca buku ini dan juga memberikan masukan. Penulis berterimakasih tiada nilainya kepada kedua orang tua yang telah memberikan kasih sayang dan vii 382


kebebasan berkreasi sehingga penulis dapat menuntut ilmu dengan baik. Penulis berterima kasih kepada istri dan anak-anak tercinta yang selalu memberi semangat dan waktu lu ang selama mengerjakan buku ini. Terima kasih semua, Penulis viii 382


Biografi Penulis I Wayan Sudiarta. Dari SD sam pai SMA, saya sekolah di Mataram. Kemudian saya berkesempatan melan jutkan studi di Universitas Gadjah Mada (Yogyakarta), RMIT Universi ty (Melbourne), University of Syd ney (Sydney) dan Dalhausie University (Halifax). Saya selanjutnya bekerja di Dalhousie University sebagai Post-Doc dan Research Fellow. Saya kemudian mengabdi seba gai dosen di Program Studi Fisika Fakultas Matemati ka dan Ilmu Pengetahuan Alam Universitas Mataram. Sejak di bangku sekolah SMA kelas tiga saya mulai tertarik dengan dunia komputasi dengan mempelaja ri penyelesaian metode numerik untuk mendapatkan akar suatu fungsi dan integral secara numerik. Se cara khususnya pada waktu itu saya tertarik dengan metode Gauss-Legendre, yang secara elegan dan aku ix 382


rat mendapatkan nilai integral menggunakan hitungan dengan jumlah sedikit. Sejak itu berkenalan dengan dunia komputer, bahasa pemrograman Basic, kemudi an sejak di Universitas dengan bahasa pemrograman Bahasa C, Matlab, Maple dan Mathematica. Semua ini telah mengubah pandangan atau memberikan jal an berbeda dalam menyelesaikan masalah di samping metode matematika analitis. Sampai saat ini Penulis masih terus belajar meng embangkan dan menerapkan metode numerik beser ta pemrogramannya untuk kebutuhan pengajaran dan penelitian serta pengabdian kepada masyarakat. x 382


Daftar Isi Pengantar iii Ucapan Terima . . . Kasih . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii Biografi Penulis ix Daftar Isi xi 1 Pendahuluan 1 7 9 13 14 17 2 Pengenalan Bahasa Python 2.1 Instalasi dan Penggunaan Python 2.2 Program Sederhana Hello World . 2.3 Python Sebagai Kalkulator . 2.4 Komentar . . . 2.5 Tipe Data . . . . . . . . . . . . . 2.6 Penggunaan. Modul, . . . . .Fungsi . . . . . . . import 2.7 Fungsi input . 2.8 Fungsi print . . . . . . . . . . . 2.9 Indentasi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 18 21 22 22 xi 382


2.10 Variabel . . . . . . . . . . . . . . . . . 25 25 26 26 31 32 33 2.11 List 2.12 Tuple . . . . . . . . . . . . . . . . . . . 2.13 Perulangan . . . . . . . . . . . . . . . . . . 2.14 Array Dimensi. .Dua. . . . . . . . . . . . . 2.15 Modul NumPy . . . . . . . . . . . 2.16 Percabangan if . . . . . . . . . . . . . 2.17 Membuat Fungsi . . . . . . . . . . . . . 2.18 . . . . . . . . . . . . Input dan Output File 2.1920 Modul InstalasiMatPlotLib Modul . . . . . . . . . . . 2.21 Modul Numpy, Scipy, . . . .Sympy, . . . . . . . . . dan Ma tplotlib .. . . . . . . . . . . . . . . . . 34 35 35 37 37 3 Pengenalan Jupyter Notebook 39 3.1 Instalasi Jupyter Notebook . . 3.2 Penulisan Format Markdown . . . . . . . . . . . 40 43 49 50 58 4 Aproksimasi Taylor 4.1 Deret dan Polinom Taylor 4.2 Metode Horner . . . . . . Ringkasan . 4.3 Aplikasi.Pendekatan . . . . . . .Taylor . . . 4.4 Penggunaan Python Soal-Soal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 62 71 75 5 Sistem Bilangan, Floating Point dan Kesalahan Hitung 77 xii 382


I Wayan Sudiarta Metode Numerik 78 84 5.1 Sistem Bilangan 5.2 Bilangan Floating. Point . . . 5.3 Kesalahan, Galat 5.4 Penggunaan . . . Python Soal-Soal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 92 98 101 104 6 Interpolasi 6.1 Metode Lagrange 6.2 Metode Newton . . . . 6.3 Kesalahan Interpolasi . . . 6.4 Fenomena Runge 6.5 Penggunaan . . . Python Soal-Soal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 113 114 114 127 129 130 7 Regresi atau Pencocokan Kurva 7.12 Teori . . . . . Regresi Linier 7.3 Regresi Fourier Soal-Soal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 136 140 143 147 152 152 8 Turunan Numerik 8.1 Turunan Pertama 8.2 Turunan Kedua . . . . . . . . . . . . 8.3 Metode Integral Cauchy . . . . . . . . . . . . . 8.4 Problem Solving . . . . . . . . . . 8.5 Penggunaan Python . . . . . . . . . . . 8.6 Perbandingan Kesalahan. . Turunan . . . . . .Nu. . merik . . . . . . . . . . . . . . . . . . . 153 158 162 xiii 382


8.7 Rumus-Rumus Turunan Numerik 164 Soal-Soal . . . . . . . . . . . . . . . . . . . . . . . 165 171 175 177 180 9 Integrasi Numerik 9.1 Metode Trapesium 9.2 Metode Simpson . . . . . . . 9.3 Metode Gauss-Legendre . . . . . . . . 9.4 Rumus Newton-Cotes . . . . . . 9.5 Problem Solving . . . . . . 9.6 Penerapan Pemrograman . . . Python . . . . Soal-Soal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 186 189 194 197 198 200 203 10 Persamaan Nonlinier 10.1 Metode titik tetap 10.2 Metode Bisection . . . 10.3 Metode . . . . Newton-Raphson 10.4 Metode Sekan 10.5 . . . . . . Metode 10.6 Penggunaan Regula-Falsi Python Soal-Soal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 209 211 224 11 Sistem Persamaan Linier 225 11.1 Metode Eliminasi Gauss Dengan Subs titusi Kembali . . 11.23 Metode Penggunaan IterasiPython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 233 237 12 Optimasi 257 xiv 382


I Wayan Sudiarta Metode Numerik 257 260 12.1 Fungsi Satu Variabel 12.2 Fungsi Dua Variabel . . . . . . 12.3 Fungsi Tiga Variabel atau . . . Lebih . . . 12.4 Penggunaan Python Soal-Soal .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 262 273 275 277 278 282 13 Persamaan Diferensial Biasa 13.1 Metode Euler 13.2 Metode Heun . . . . . . . . . . . . . 13.3 Metode Taylor . . . . . . . . . . . . . 13.4 . . . . . . . . . . . . Metode 13.56 Sistem Penggunaan Persamaan Runge-Kutta PythonDiferensial . . . . .Biasa . . . . Soal-Soal . . . . . . . . . . . . . . . . . . . . . . . . . . 286 292 294 301 303 303 306 14 Analisis Fourier 14.1 Fungsi Sin dan Cos . 14.2 Deret Fourier . . . . . . . . . . 14.3 Transformasi Fourier . . . . . . . . . . . . . . 14.4 Aplikasi Transformasi. .Fourier . . . . .untuk . . . Analisis Bunyi . . Soal-Soal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 322 325 327 330 334 15 Persamaan Diferensial Parsial 15.1 Persamaan Tanpa Dimensi 15.2 Persamaan Difusi 15.3 Persamaan . . . . . Laplace 15.4 Persamaan Gelombang. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 350 xv 382


357 357 361 16 Persamaan Eigen 16.1 Matriks 2 × 2 16.2 Metode Pangkat. . . . . . . . . . . . . . 16.3 Penggunaan . . . . . . . . . . . Python 16.4 Penggunaan Python Untuk . . . .Solusi . . . .Per. . samaan Schrödinger 1D . . . . . . . . . 362 366 17 Daftar Pustaka 381 xvi 382


Bab 1 Pendahuluan "Becoming familiar with basic numerical methods without realizing their limitation would be foolhardy" – E. Ward Cheney dan David R. Kincaid Dalam kehidupan, kita menghadapi berbagai permasalahan-permasalahan fisis yang membutuhkan perhatian. Kita mungkin memikirkan permasalahan keadaan cuaca atau juga iklim hari ini atau esok hari atau tahun depan. Kita perlu juga mempertimbangk an cara terbaik dalam melaksanakan atau menyelesa ikan pekerjaan kita. Permasalahan fisis tentunya tidak mungkin langsung diselesaikan menggunakan semua informasi yang ada. Kita biasanya menyederhanak an permasalahan terlebih dahulu dengan cara mem buat permodelan fisis dan menggunakan persamaan persamaan fisika atau matematika yang mendasari permasalahan tersebut. Kemudian hasil akhir berupa 1 382


persamaan-persamaan matematis beserta syarat awal maupun syarat batasnya. Algoritma Pemrog raman Teori Metode Numerik Visualisasi Solusi Matematis Metode Analitik k Gambar 1.1: Sebuah mindmap untuk solusi matematis dan metode numerik. Persamaan matematis yang dihasilkan perlu disele saikan untuk mendapatkan solusi dengan berbagai ca ra. Metode yang sering digunakan dibagi menjadi dua kategori yaitu metode analitik dan metode numerik. Ilustrasi pembagian solusi matematis ditampilkan pa da Gambar 1.1. Pada waktu sebelum adanya kompu ter, metode analitik dengan berbagai pendekatan telah 2 382


I Wayan Sudiarta Metode Numerik dikembangkan. Metode analitik dapat diaplikasikan hanya pada permasalahan-permasalahan ideal dan se derhana saja. Permasalahan yang lebih kompleks me merlukan metode lain. Dengan perkembangan kom puter yang semakin cepat, canggih dan memori besar, metode numerik telah menjadi alternatif yang domin an dalam menyelesaikan permasalahan matematis. Apa itu metode numerik (numerical method)? Kata "numerik" berdasarkan Kamus Besar Bahasa Indonesia (https://kbbi.kemdikbud.go.id/entri/ numerik) memiliki arti "yang berwujud nomor (ang ka); yang bersifat angka atau sistem angka: data statistik atau data". Jadi, metode numerik adalah metode yang menggunakan angka sebagai basis atau bahannya. Dengan kata lain, metode numerik da pat diartikan sebagai metode untuk menyelesaikan permasalahan-permasalahan matematis yang mema nipulasi angka-angka dengan operasi dasar hitungan aritmatika yaitu penjumlahan, pengurangan, perkali an dan pembagian. Tentunya, operasi-operasi dasar ini sangat mudah dan cepat dilakukan dengan meng gunakan komputer. Apa saja yang diperlukan dalam metode numerik dan proses apa saja yang dilakukan? Seperti ditun jukkan pada Gambar 1.1, ada empat bagian utama dalam metode numerik yaitu (1) teori yang menda sari perhitungan numerik, (2) algoritma atau langkah 3 382


langkah yang dilakukan dalam menyelesaikan masalah atau mendapatkan hasil, (3) pemrograman yang dibu tuhkan untuk memberikan instruksi kepada kompu ter dalam melakukan perhitungan numerik, dan yang terakhir (4) visualisasi adalah proses menampilkan angka-angka atau data dalam bentuk berbeda sehing ga mudah untuk mengenali atau interpretasi hasil. Pada buku ini diberikan teori-teori atau konsep ma tematika yang mendasari suatu perhitungan numerik. Khususnya penurunan persamaan-persamaan numerik diberikan hanya untuk manipulasi matematika yang sederhana dan tidak membutuhkan penjelasan yang panjang. Konsep matematika yang banyak dibutuhk an dalam penurunan rumus adalah metode pendekat an Taylor atau representasi fungsi dengan pendekatan polinom. Dari rumus dasar Taylor, kemudian dapat di peroleh pendekatan numerik untuk turunan, interpo lasi, integral, penyelesaian persamaan dan sebagainya. Untuk menerapkan metode numerik, dibutuhkan ber bagai pendekatan-pendekatan matematis, setiap pen dekatan mempunyai tingkat kesalahan yang berbeda beda. Kita harus memahami seberapa besar kesalah an ketika menggunakan suatu metode numerik. Sela in konsep matematika, konsep kalkulasi menggunakan komputer juga perlu kita pelajari khususnya bagaima na komputer menyimpan angka dan melakukan ope rasi aritmatika. Berapa besar kesalahan ketika suatu 4 382


I Wayan Sudiarta Metode Numerik operasi matematis dikerjakan. Bagaimana cara meng hindari kesalahan sehingga hasil kalkulasi bisa akurat dan efisien. Kemudahan dalam pemrograman dan banyaknya tambahan modul-modul yang membantu dalam penye lesaian permasalahan matematis serta visualisasi hasil yang bagus, membuat Python menjadi pilihan dalam penerapan metode numerik. Pengerjaan kalkulasi pa da dokumen interaktif Jupyter Notebook menghasil kan sebuah dokumen yang menampilkan secara leng kap empat bagian metode numerik di atas. 5 382


Bab 2 Pengenalan Bahasa Python I have this hope that there is a better way. Higher level tools that actually let you see the structure of the software more clearly will be of tremendous va lue. – Python’s creator, Guido van Rossum Bahasa pemrograman komputer sudah banyak di ciptakan dan dikembangkan. Sudah pasti setiap ba hasa pemrograman memiliki kelebihan serta kekura ngannya. Menguasai salah satu bahasa permrograman telah menjadi salah satu syarat keahlian bagi mahasis wa, khususnya pada bidang sains dan teknik. Kode program dengan bahasa pemrograman terten tu diterjemahkan ke bentuk bahasa mesin yang bisa dimengerti oleh komputer. Cara menerjemahkan kode 7 382


program ini dibagi dua jenis atau cara: (1) kode pro gram dikompilasi atau diubah semua ke bentuk bahasa mesin seperti bahasa C dan C++, dan (2) kode pro gram diterjemahkan langsung atau diinterpretasikan langsung tanpa harus diubah bentuknya seperti baha sa Javascript, Bash, Mathematica, R, Matlab, Maxima dan Python. Bahasa Python merupakan bahasa pemrograman tingkat tinggi yang mudah digunakan dan memili ki cara penulisan atau syntax yang sederhana, mu dah ditulis dan dibaca (dalam bahasa Inggris). Kode bahasa Python berupa script, perintah-perintah atau pernyataan-pernyataan, yang tidak memerlukan kom pilasi sehingga bisa langsung dijalankan. Hal ini mem buat penulisan kode program dapat lebih cepat. Program Python merupakan sebuah interpreter, se perti program Matlab atau Octave, R, Mathemati ca dan Maxima, dapat menerjemahkan kode Python. Program Python juga menyediakan fasilitas develo pment environment IDLE. Pada environment ini ki ta dapat menjalankan atau mengevaluasi perintah perintah atau kode python secara langsung atau di sebut REPL (Read-Evaluate-Print-Loop). Pada saat ini ada tersedia dua versi Python: Python 2 dan Python 3. Versi terbaru adalah 2.7.18 dan 3.8.5. Python 3 direkomendasikan untuk digunakan. Python 2 tersedia sehingga program-program lama tetap da 8 382


I Wayan Sudiarta Metode Numerik pat dijalankan. Kode program untuk Python 2 tidak didukung oleh Python 3. Pada buku ini semua kode program ditulis dengan Python 3. Dokumentasi lengkap beserta tutorial dan contoh contoh untuk bahasa Python 3 dapat dibaca di https: //docs.python.org/3/ 2.1 Instalasi dan Penggunaan Python Kita dapat mengunduh python di https://www. python.org/ dan kemudian instalasi dilakukan seperti program biasanya. Versi terbaru pada saat penulisan buku ini adalah Python 3.8.5 https://www.python. org/downloads/release/python-385/. Terdapat empat cara untuk menjalankan kode pro gram Python: 1. Menggunakan Python Interpreter 2. Menggunakan aplikasi Python IDLE 3. Menggunakan Python pada Command Prompt. 4. Menggunakan Jupyter Notebook Cara 1: Python Interpreter Setelah kita menjalankan program Python, kita men jalankan Python Interpreter yang akan menerjemahk an kode program sehingga dapat dijalankan. Python menyediakan jendela (command prompt) tempat kita 9 382


menuliskan perintah-perintah. Pada jendela ini akan muncul tanda >>> yang menandakan bahwa Python Intepreter sudah siap menerima input. Perhatikan Gambar 2.1 . Untuk keluar dari program Python de ngan tekan Ctrl D+ atau dengan perintah quit() atau exit(). Gambar 2.1: Sebuah tampilan program Python yang sudah siap menerima perintah. Cara 2: Aplikasi IDLE Kita dapat membuat program Python dengan apli kasi IDLE (lihat Gambar 2.2). Untuk membuat ko de program baru kita klik File > New File (atau Ctrl + N) dan akan muncul jendela editor tempat me nulis kode program (lihat contoh Gambar 2.3). Sete lah menulis kode, kita menyimpan file kode dengan klik File > Save atau Ctrl + S. Kita menggunakan 10 382


I Wayan Sudiarta Metode Numerik tambahan ekstensi .py untuk kode Python. Kita ke mudian dapat menjalankan kode python dengan klik Run > Run Module atau tekan F5. Sebagai latihan, kita dapat mencoba kode berikut ini. s = 0 for n in range(1, 1001): s += n print("Jumlah angka dari 1 sampai 1000 = ", s) IDLE memiliki kelebihan dibandingkan dengan Python command line yaitu kode highlighting yang berarti kode diberi warna sesuai tipe seperti ditun jukkan pada Gambar 2.3 dan autocompletion sehingga penulisan kode bisa lebih cepat. Cara 3: Windows Command Prompt Kita terlebih dahulu menjalankan pada Windows Command Line dengan mengetik perintah cmd pada kotak search setelah klik tombol start Windows. Ki ta dapat menulis kode program dengan Notepad++ atau editor teks yang lain. Sebagai contoh kita me nyimpan kode program di folder D:\BelajarPython dengan nama contoh.py. Kita klik tombol Start Win dows, kemudian ketik cmd pada search form. Akan muncul jendela command prompt. Pertama kita pin 11 382


Gambar 2.2: Sebuah tampilan program Python IDLE. Gambar 2.3: Sebuah tampilan program editor IDLE . dah terlebih dahulu ke drive D: dengan ketik d:, ke mudian pindah direktori atau folder dengan menulis cd BelajarPython. Kemudian kita menjalankan ko de Python dengan perintah 12 382


I Wayan Sudiarta Metode Numerik python contoh.py atau pada sistem operasi Windows dapat juga meng unakan perintah py. py contoh.py Cara 4 Perintah-perintah atau pernyataan-pernyataan de ngan bahasa Python dapat langsung dieksekusi di sel pada sebuah dokumen interaktif Jupyter Notebook. Kode dan hasilnya dapat langsung ditampilkan dalam satu dokumen membuat Jupyter Notebook menjadi pi lihan dalam penerapan metode numerik pada buku ini. Penjelasan lebih detil tentang penggunaan Jupyter No tebook diberikan pada Bab 3. 2.2 Program Sederhana Hello World Penggunaan bahasa Python yang paling sederhana adalah pada contoh program hello world berikut ini. print("Hello World!") Untuk menampilkan kalimat atau string "Hello Wor ld!", kita hanya menggunakan satu perintah saja seper ti kode di atas. Pustaka umum yang dibutuhkan untuk menjalankan kode program sudah disediakan secara automatis tanpa perlu menambahkan secara eksplisit. 13 382


2.3 Python Sebagai Kalkulator Karena program Python merupakan interpreter, maka program Python dapat digunakan sebagai kalkulator. Sebagai contoh berikut ini. Ingat bahwa tanda >>> tidak diketik hanya menandakan Python Interpreter. >>> 3*2 + 5 11 >>> a = 10.0 >>> 2*a + 1/4 20.25 >>> from math import * >>> pi 3.141592653589793 >>> sin(pi/3) 0.8660254037844386 >>> log(10) 2.302585092994046 >>> >>> 5 ** 3 # Pangkat 5^3 125 >>> 15 / 4 # Pembagian returns a float 3.75 >>> 15 // 4 # Pembagian dengan pemotongan 3 14 382


I Wayan Sudiarta Metode Numerik Operasi matematis yang biasa digunakan adalah + - * / // dan **. Operasi// merupakan pembagi an bilangan bulat, dan operasi ** adalah operasi pang kat. a = 3//2 # bernilai 1 b = 2**3 # 2^3 = 8 Simbol % digunakan untuk operasi modulo mod. Se bagai contoh m%n bernilai sisa dari m dibagi dengan n. Perhatikan contoh berikut ini. z = 5%2 # 5 mod 2 = 1 Selain itu, seperti bahasa pemrograman C, Python juga memberikan penulisan pendek untuk beberapa operasi matematika seperti berikut ini. a += b a -= b # artinya x = x + y # artinya x = x - y # artinya x = x * y # artinya x = x / y a *= b a /= b Bilangan Kompleks Python menyediakan pula fasilitas operasi bi langan kompleks. Kita menggunakan fungsi complex(...,...) atau complex( ... untuk me nyatakan bilangan kompleks. Sebagai contoh 15 382


z = complex(4,9) atau z = complex( 4 + 9j ) un tuk z =4+9i atau z =4+9j yang bergantung pada notasi untuk bilangan imajiner. Jika input fungsi di kosongkan berarti input bernilai nol. Python membe rikan fasilitas untuk bilangan imajiner dengan simbol j atau J. Selain menggunakan fungsi complex, kita juga bisa langsung membuat bilangan kompleks de ngan z = 5 + 2j atau z = 5 + 2J. Bilangan kom pleks pada Python memiliki presisi double precision floating point. >>> 1j # bilangan imajiner 1j >>> 1J # bilangan imajiner dengan huruf J. 1j >>> 1j * 1j # Operasi perkalian bil. kompleks (-1+0j) z1 = complex(1, 6) # 1 + 6j z2 = complex(1) # 1 + 0j z3 = complex() # 0j z4 = complex( 1+6j ) # 1 + 6j z5 = 1 + 6j Bagian riil (real), imajiner (imag), absolut, serta konjugat dapat diperoleh dengan cara berikut ini. z# =bagian complex(5,1) riil dan imajiner x = z.real 16 382


I Wayan Sudiarta Metode Numerik y = z.imag # konjugat z z2 = z.conjugate() # absolute r = abs(z) Fungsi-fungsi matematis untuk bilangan kompleks tersedia pada modul cmath. Perhatikan contoh beri kut ini untuk fungsi exp. # module cmath import cmath z = 3 + 7j z2 = cmath.exp(z) 2.4 Komentar Komentar di dalam kode program tidak dijalankan dan diabaikan oleh Python. Untuk menandakan sebuah baris adalah komentar tanda pagar (hash) # digunak an. Apa saja setelah tanda # dianggap komentar. # Nilai diskriminan d = b*b - 4*a*c 17 382


f = 15.0 # gaya yang bekerja m = 2.0 # massa benda a = f/m # percepatan benda Untuk komentar yang terdiri dari banyak baris tan da """ (triple quotes) """ Program sederhana hello.py Program mencetak kata Saya Bisa pada layar """ print("Saya Bisa") 2.5 Tipe Data Tipe data utama yang tersedia pada Python adalah integer, float dan string. Tipe data dari variabel dise suaikan dengan nilai yang diberikan. a = 6 b = 1.2345 c = I am string d = "saya string" 2.6 Penggunaan Modul, Fungsi import Terdapat beberapa cara untuk menggunakan modul pada Python. Modul adalah tambahan fungsi-fungsi 18 382


I Wayan Sudiarta Metode Numerik atau seperti pustaka atau library pada pemrograman C atau lainnya. Cara Pertama Kita dapat secara langsung memasukkan modul de ngan perintah import NamaModul. Sebagai contoh import math . Fungsi-fungsi atau variabel-variabel dalam modul dapat diakses dengan penggunaan tanda titik seperti pada bahasa C, C++ atau Java. Perha tikan contoh berikut ini. # import modul math (matematika) import math # menggunakan modul math r = 2.0 theta = math.pi/5 x = r*math.cos(theta) y = r*math.sin(theta) Cara Kedua Ada kemungkinan nama modul agak panjang, sehing ga akan lebih memudahkan menggunakan singkatan dari nama modul tersebut. Python memberikan cara menyingkat atau mengganti dengan nama lain dengan tambahan perintah as NamaSingkat. Sebagai con tohnya import math as m. 19 382


# import modul math dengan alias m import math as m r = # menggunakan modul math dengan m 2.0 theta = m.pi/5 x = r*m.cos(theta) y = r*m.sin(theta) Cara Ketiga Memasukan satu modul mungkin sangat berguna, tetapi akankah lebih efisien jika kita memasukk an fungsi-fungsi yang dibutuhkan saja. Selain itu, kita ingin menggunakan secara langsung fung si yang ada pada modul tanpa menggunakan refe rensi objek atau modul. Format perintahnya ada lah from modul import fungsi1, fungsi 2. Con toh cara memasukkan fungsi dari modul tertentu da pat dilihat pada penggunaannya berikut ini. # import modul math untuk pi, sin, cos from math import pi, sin, cos r # menggunakan fungsi dan variabel = 2.0 theta = pi/5 20 382


I Wayan Sudiarta Metode Numerik x = r*cos(theta) y = r*sin(theta) Jika ingin menambahkan seluruh fungsi yang ada pada modul, kita menggunakan tanda bintang "*" perti contoh berikut ini. Tanda "*" berarti semua. se # import modul math semua from math import * r = # menggunakan fungsi2 math 2.0 theta = pi/5 x = r*cos(theta) y = r*sin(theta) 2.7 Fungsi input Pada saat perhitungan atau jalannya program, kita dapat meminta input dari keyboard dengan menggu nakan perintah input. from math import pi # input dari keyboard nilai r r = float(input("Masukkan nilai r:")) 21 382


# hitung luas lingkaran luas = pi*(r**2) print("Luas lingkaran adalah ", luas) 2.8 Fungsi print Perintah untuk menampilkan output pada layar ada lah fungsi print. Perhatikan penggunaannya pada contoh berikut ini. print(<ekpresi>, <ekspresi>, ...) person = input( Enter your name: ) print( Hello , person, ! , sep= ) print( Hello , person, ! , end= \n ) 2.9 Indentasi Pada bahasa C, C++ dan Java, tanda kurung kurawal { ... } digunakan untuk menggabungkan banyak ba ris perintah menjadi satu kesatuan. Dalam penulisan nya untuk mempermudah membaca program kita bia sanya menambahkan indentasi tab atau spasi. Bahasa C, C++ dan Java tidak mengharuskan hal ini. Su paya memaksa programer menulis kode dengan baik, bahasa Python tidak menggunakan tanda kurung ku rawal dan menggunakan indentasi untuk menyatukan 22 382


I Wayan Sudiarta Metode Numerik perintah-perintah. Perlu diingat bahwa indentasi yang digunakan adalah berupa spasi. Indentasi dengan Tab tidak bisa digunakan. Banyaknya spasi yang digunak an tidak menjadi masalah asalkan semua perintah me miliki indentasi yang sama dalam satu kesatuan. Su paya mudah membaca kode program, jumlah spasi un tuk indentasi disarankan menggunakan 4 spasi seperti contoh berikut ini. for i in range(5): print("Saya bisa Python\n") Mari kita perhatikan contoh lain berikut ini for i in range(3): print("Perintah 1") print("Perintah 2") Kode ini akan menghasilkan Perintah 1 Perintah 2 Perintah 1 Perintah 2 Perintah 1 Perintah 2 23 382


Jika kita ubah indentasinya, dengan menghilangkan indentasi pada baris kedua setelah for seperti berikut ini. for i in range(3): print("Perintah 1") print("Perintah 2") Kode ini menampilkan Perintah 1 Perintah 1 Perintah 1 Perintah 2 Jika beda jumlah spasi untuk indentasi akan menghasilkan kesalahan "Indentation Error". Cobalah contoh berikut ini. for i in range(3): print("Perintah 1") print("Perintah 2") Kode ini akan menghasilkan kesalahan indentasi. IndentationError: unindent does not match any outer indentation level 24 382


I Wayan Sudiarta Metode Numerik 2.10 Variabel Dalam bahasa Python, kita tidak perlu mendeklara si variabel terlebih dahulu sebelum variabel tersebut digunakan. Kita bisa langsung membuat variabel de ngan cara memberikan nilai seperti berikut ini. x = 1 y = 2.5 z = x*y nama = "Schrodinger" Tipe data pada variabel tidak ditentukan tetapi di mengerti melalui nilai yang diberikan. 2.11 List Dalam bahasa Python, list atau daftar merupakan ar ray dalam bahasa C atau C++. List dapat mengan dung tipe data apa saja. Tanda [ ] digunakan untuk menandakan list. Setiap elemen dalam list dipisahkan dengan tanda koma. Mari perhatikan contoh berikut ini. angka = [1, 2, 3, 4, 5] "Jumat", hari = ["Senin", "Sabtu","Selasa", "Minggu"]"Rabu", "Kamis", Untuk mengakses elemen pada list seperti bahasa C dengan menggunakan indeks dimulai indeks nol dan tanda kurung [\ ]. 25 382


angka[0] # elemen pertama di list angka angka[2] # elemen ketiga di list angka Pada bahasa Python, indeks dapat bernilai negatif yang berarti indeks dari akhir list seperti contoh beri kut ini. angka[-1] # elemen terakhir pada list angka angka[-2] # elemen kedua dari akhir list angka 2.12 Tuple Sebuah tuple merupakan sebuah List atau himpunan elemen-elemen yang tidak dapat diubah (unchangea ble). Untuk Tuple digunakan tanda kurang ( ) untuk membuat suatu Tuple seperti contoh beriku ini. angka bulan = (1, 2, 3) ("Januari", "Februari", "Maret") Untuk mengakses elemen pada tuple dilakukan de ngan cara yang sama dengan list yaitu dengan indeks dan tanda kurung [\ ]. 2.13 Perulangan for Tipe data yang memiliki elemen didalamnya seperti list atau array merupakan tipe data yang dapat diite rasikan atau iterable. Ini berarti juga bahwa kita bisa 26 382


I Wayan Sudiarta Metode Numerik melakukan iterasi dengan elemen pada list atau array. Perhatikan contoh berikut ini. Angka merupakan ar ray yang berisi angka 1...5. Kita dapat melakukan iterasi dengan mengunakan elemen pada array. Pada contoh ini kita menggunakan variabel i sebagai ele men pada array, kemudian diiterasi untuk semua ele men pada list. Perlu diingat juga tanda ":" dalam loop for. # list angka 1 ... 5 angka = [1, 2, 3, 4, 5] for i in angka: print(i) Kode ini menghasilkan luaran berikut ini. 1 2 3 4 5 Iterasi juga tidak harus pada elemen yang berupa bilangan. Tipe data elemen juga dapat berupa apa saja seperti contoh berikut ini. Kita menggunakan variabel s sebagai elemen pada list hari. 27 382


# list kata hari dalam seminggu hari = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"] # iterasi for sin hari: print(s) Proses yang terjadi hampir sama seperti kode sebe lumnya, kode ini menghasilkan luaran: Senin Selasa Rabu Kamis Jumat Sabtu Minggu Sebuah string adalah sebuah array atau list huruf huruf. Jadi tipe string juga merupakan tipe data yang dapat diiterasikan. Perhatikan contoh ini berikut ini. nama = "EINSTEIN" for c in nama: print(c) 28 382


I Wayan Sudiarta Metode Numerik Kode ini menghasilkan luaran: E I N STE I N Perhatikan apa yang dihasilkan kode berikut ini. angka = [2, 4, 6, 8] pengali = 1 for n in angka: p = pengali * n print( Hasilnya : , p) Fungsi range() Sebuah bilangan bulat, sebut saja dengan variabel M, karena terdiri dari satu elemen saja, bukan merupak an tipe data yang iterable atau dapat diiterasikan. Un tuk membuat tipe data yang iterable, kita menggunak an fungsi range(M). Perhatikan kode berikut ini. M = 5 for i in range(M): print(i) 29 382


Fungsi range(M) mengandung bilangan dari 0 sam pai M-1. Sehingga ada sebanyak M iterasi. Per lu diingat bahwa bilangan bulat M tidak ada dalam range(M). Pada kasus ini M = 5, mengandung bilangan fungsi range(M) 0, 1, 2, 3 and 4 (ada 5 jum lah bilangannya). Untuk mendapatkan iterasi bilanga 1 sampai 5 menggunakan range(1, 6). Sebagai contoh, cobalah kode berikut ini. for i in 3: print(i) Kode ini akan menghasilkan output "’int’ object is not iterable". Untuk mendapatkan iterasi dengan penambahan yang berbeda, kita menggunakan range(a,b,d) de ngan a sebagai batas awal, b sebagai batas akhir dan d sebagai penambahan. Cobalah kode Python di ba wah ini. x = list(range(4)) # berarti list [0, 1, 2, 3] x = list(range(4,10)) # berarti list [4, 5, 6, 7, 8, 9] x = list(range(2,10,2)) 30 382


I Wayan Sudiarta Metode Numerik # berarti list [2, 4, 6, 8] 2.14 Array Dimensi Dua Pemrograman python tidak secara eksplisit membe rikan fasilitas untuk pembuatan array. Tetapi Python memberikan fasilitas list yang dapat memberikan du kungan untuk array. Cobalah dua cara membuat array dimensi dua berikut ini. n = 3 m = 4 # Membuat array nol 3x4 # Cara 1 a = [[0] * m for i in range(n)] # Cara 2 b = [[0 for j in range(m)] for i in range(n)] # Penggunaan array a[2][2] = 100 print(a) print(b) 31 382


2.15 Modul NumPy Modul NumPy merupakan modul untuk komputasi yang menyediakan fasilitas array N-dimension, aljabar linier, transformasi Fourier, bilangan acak dan banyak lagi yang lain. Contoh penggunaan NumPy sebagai berikut. c = import numpy as np a = np.array([1,3,5,7,9,11,13,15]) # array 1D b = np.array([(1,2), (3,4)]) # array 2D np.array( [ [1,2,3], [4,5,6] ] ) d = np.zeros( (3,4), dtype=complex ) # array 2D zeros f = np.ones( (3,4) ) # array 2D ones g = np.zeros( (3,4,5) ) # array 3D zeros # Cetak array print(a) print(b) print(f) # Akses array a[2:5] b[1,2] f[1:2,3] g[2,2,3] d[:,2] 32 382


Click to View FlipBook Version