I Wayan Sudiarta Metode Numerik Perhatikan bahwa modul NumPy memberikan fitur akses array yang berbeda dengan menggunakan tanda koma untuk memisahkan antar indeks antar dimensi. Seperti pada bahasa Matlab tanda ":" menyatakan se mua dan "a:b" berarti indeks dari a sampai b. Fungsi Length (len) Kita dapat mengetahui panjang sebuah string atau ar ray dengan menggunakan perintah len. nama = "Einstein" print(len(nama)) nama2 = ["Budi", "Indah", "Mega", "Agus"] print(len(nama2)) 2.16 Percabangan if Contoh penggunakan perintah if diberikan di bawah ini. nama = "Joe" if len(nama) > 3: print("Nama Bagus,") print(nama) else: print("Nama Pendek,") print(nama) 33 382
x = 5 if x > 0: print("x lebih besar dari nol") elif x == 0: print("x sama dengan nol") else: print("x lebih kecil dari nol) 2.17 Membuat Fungsi Selain fungsi-fungsi yang tersedia pada Python dan modul-modulnya, kita dapat membuat juga dapat membuat fungsi. Contoh penggunaan dapat dilihat pada kode berikut ini. from math import * # membuat fungsi jarak(x,y) def jarak(x, y): return sqrt(x**2 + y**2) a = 2 b = 5 print(jarak(a,b)) 34 382
I Wayan Sudiarta Metode Numerik 2.18 Input dan Output File Python juga memberikan cara untuk menulis, mem baca dan menambahkan file teks. Kita menggunakan perintah open untuk membuka file. Tambahan tipe atau mode buka file yaitu "r" untuk membaca, "w" un tuk menulis dan "a" untuk menambahkan teks pada file. # Membaca file f = open( input.txt , "r") txt = f.read() f.closed # Menulis pada File f = open("output.txt", "w") f.write("This is my file!") f.close() # Append pada File f = open("append.txt", "a") f.write("Tambahkan teks pada file!") f.close() 2.19 Modul MatPlotLib Pada bagian ini, diberikan sebuah contoh membuat grafik sederhana dengan modul mathplotlib. Contoh 35 382
contoh lain akan diberikan pada bab-bab selanjutnya. # import modul matplotlib import matplotlib.pyplot as plt from math import cos, pi x # Membuat data x dan y = [(2 * pi * t) / 40 for t in y = [cos(theta) for theta in x] range(80)] # plot data plt.plot(x, y) plt.show() Dengan menggunakan modul NumPy dapat mem permudah membuat data atau array: import numpy as np import matplotlib.pyplot as plt X = np.linspace(0, 4 * np.pi, 100) Y1 = np.sin(X) Y2 = np.cos(X) plt.plot(X, Y1) plt.plot(X, Y2) plt.show() 36 382
I Wayan Sudiarta Metode Numerik 2.20 Instalasi Modul Python menyediakan fasilitas PIP yang merupakan se buah package management system untuk memudahkan instalasi modul atau pustaka melalui internet dari re positori PyPI. Sebelum proses instalasi, sebaiknya PIP diperbaharui terlebih dahulu dengan cara: python -m pip install --upgrade pip Instalasi modul-modul dengan cara PIP sebagai ber ikut: python -m pip install nama_modul atau python -m pip install nama_modul --user Tambahan opsi --user menginstruksikan supaya modul ditempatkan di direktori user bukan di sistem. Sebaiknya menggunakan opsi ini untuk semua instalasi modul python. 2.21 Modul Numpy, Scipy, Sympy, dan Matplotlib Banyaknya modul yang tersedia merupakan salah satu daya tarik penggunaan pemrograman Python di ber bagai bidang. Untuk komputasi numerik, kita akan se 37 382
ring menggunakan modul NumPy, SymPy, SciPy dan MatPlotLib. NumPy merupakan modul Python untuk komputasi sains yang menyediakan fasilitas array multi dimensi, operasi aljabar linier, transformasi Fourier dan bilang an acak. https://numpy.org/ Modul SymPy menyediakan fasilitas operasi mate matika simbolis (symbolic mathematics) atau seba gai computer algebra system (CAS). https://www. sympy.org Modul SciPy menyediakan fasilitas untuk komputasi saintifik. https://www.scipy.org/ Modul MatPlotLib memberikan kemudahan dalam pembuatan grafik (atau plot) dimensi dua (2D) yang dapat berupa plots, scatterplots, dan sebagainya. https://matplotlib.org/ Instalasi modul Python satu per satu dengan seba gai berikut: python -m pip install --user numpy python -m pip install --user scipy python -m pip install --user matplotlib python -m pip install --user sympy Atau sekaligus dalam satu baris seperti di bawah ini. python -m pip install numpy scipy matplotlib sympy 38 382
Bab 3 Pengenalan Jupyter Notebook "Learning never exhausts the mind." –Leonardo da Vinci "Tell me and I forget. Teach me and I remember. Involve me and I learn." – Benjamin Franklin Pada bagian ini kita akan belajar pemrograman komputer dengan bahasa Python menggunakan Ju pyter Notebook yang menyatukan dokumentasi dan komputasi untuk metode numerik. Jupyter Notebook memberikan fasilitas input dan output dari kode Python dalam sebuah notebook. Pembaca yang sudah pernah menggunakan Mathema tica atau Maple tidak akan merasa asing dengan tam 39 382
pilan Jupyter Notebook. Kelebihan dari Jupyter No tebook adalah komputasi dan visualisasi menjadi satu bagian tidak terpisah. Dalam satu dokumen kita da pat dengan mudah menulis kode program, keterang an atau dokumentasinya dan kemudian meninjau ha sil program dalam berbagai bentuk output. Selain itu Jupyter Notebook juga memberikan fasilitas-fasilitas lain seperti output dokumen berupa latex dan pdf. 3.1 Instalasi Jupyter Notebook Pada buku ini Jupyter Notebook ditambahkan dengan menggunakan fasilitas PIP. Langkah-langkah instalasi Jupyter Notebook adalah sebagai berikut: 1. Jalankan command prompt dengan klik cmd di Start Windows. 2. ketik perintah berikut ini: python -m pip install jupyter atau python -m pip install --user jupyter Setelah proses instalasi selesai, Jupyter Notebook dapat dijalankan sebagai berikut: 40 382
I Wayan Sudiarta Metode Numerik 1. Agar mempermudah menempatkan file atau do kumen yang dikerjakan atau dibutuhkan, kita terlebih dahulu membuat folder atau direkto ri (jika belum ada) dengan menggunakan File Explorer. Sebagai contoh, kita membuat folder d:\python. 2. Jalankan command prompt dengan klik cmd di Start Windows. 3. ketik perintah berikut ini: d: cd python jupyter notebook 4. Kemudian akan dijalankan peramban (web bro wser) yang menampilkan daftar isi folder serta menu Jupyter Notebook seperti pada Gambar 3.1. Mari kita memulai dengan membuat sebuah catat an (Notebook) Jupyter untuk Python 3 dengan cara klik tombol New dan kemudian pilih Python 3 (lihat Gambar 3.2). Tampilan Notebook diperlihatkan pada Gambar 3.3. Selanjutnya kita perlu mengganti nama notebo ok (rename) dengan klik teks Untitled dan kemu dian mengisinya dengan nama yang diinginkan, se 41 382
Gambar 3.1: Tampilan Jupyter Notebook bagai contoh kita beri nama Belajar Python, ke mudian klik tombol rename. Perhatikan folder d:\python terisi dengan file Notebook dengan nama file Belajar Python.ipynb. Perhatikan bahwa Jupyter Notebook menampilkan baris yang berisi kotak (cell) tempat kita memberikan perintah-perintah. Perlu diingat bahwa setelah menu lis perintah, kita dapat menjalankannya dengan me nekan tombol keyboard Shift (sambil ditahan) dan kemudian tekan Enter. Jika perintah selesai dija lankan, program akan menampilkan output. Sebagai contoh mari kita beri input 1+2+3 Kemudian tekan 42 382
I Wayan Sudiarta Metode Numerik Gambar 3.2: Tampilan Menu New File pada Jupyter Notebook Shift+Enter untuk menjalankan dan menghasilkan output bilangan 6 seperti tampilan pada Gambar 3.4. 3.2 Penulisan Format Markdown Selain menyediakan cell untuk input kode Python, Ju pyter Notebook juga menyediakan cell untuk penu lisan dokumen dengan mode format Markdown. For mat ini merupakan cara penulisan untuk laman web yang sederhana tanpa ada kode HTML. Pada cell mo de Markdown kita dapat menambahkan dokumen ber upa teks dengan format Markdown, kode HTML dan Latex sehingga Jupyter Notebook menampilkan doku 43 382
Gambar 3.3: Tampilan sebuah halaman Jupyter No tebook men yang lengkap beserta hasil komputasinya. Untuk mengganti mode cell, perhatikan pada menu Jupyter Notebook terdapat menu dropdown dengan label Co de (sesuai dengan pilihan mode) seperti diperlihatkan pada Gambar 3.5. Klik menu dropdown dan kemudi an pilih Markdown untuk memulai menulis dokumen Markdown. Tampilan cell akan berubah sesuai mode. Penjelasan lebih lengkap tentang penulisan de ngan format Markdown dapat dibaca pada laman https://www.markdownguide.org/basic-syntax/ atau https://daringfireball.net/projects/ markdown/syntax. 44 382
I Wayan Sudiarta Metode Numerik Gambar 3.4: Sebuah tampilan Jupyter Notebook. Mari kita menulis beberapa contoh format Markdo wn yang diberikan pada Tabel 3.1. Perlu diingat bahwa untuk menaktifkan atau mengonversi dokumen Markdown pada cell dengan tekan Shift + Enter. Untuk menambahkan link situs dengan [judul](https://alamat.com) dan menambah sebuah gambar dengan cara  Perlu diingat bahwa file gambar harus berada pada folder yang sama dengan file Jupyter Notebooknya. 45 382
Gambar 3.5: Sebuah tampilan Menu Jupyter Notebo ok. Penulisan persamaan matematis dengan format La TeX dapat dilakukan dengan batas satu tanda dollar $...$ untuk menyisipkan pada teks dan dua tanda do llar $$ . . . $$ untuk persamaan dalam satu baris. Cobalah contoh-contoh dasar penulisan LaTeX pada Tabel 3.2. 46 382
I Wayan Sudiarta Metode Numerik Tabel 3.1: Contoh format penulisan Markdown. Markdown Hasil # Heading 1 ## Heading 2 ### Heading 3 *italic* **bold** kode HeadingHeading2 1 Heading 2 italic bold kode --- garis horisontal > block code baris 1 Kode blok > code baris 2 Daftar dengan urutan 1. item satu 2. item dua 3. item tiga - item satu - item dua item tiga Daftar tanpa urutan - 47 382
Tabel 3.2 : Contoh format penulisan LaTeX . LaTeX Hasil A^B AB А В Ав A^ {B+C} AB+C \frac {A} {B } A A B \ sum _ { n = 1 } ^ N n^ 2 Ση2 N n = 1 \ int_a^b f ( x ) dx So f (x )dx \frac { \partial A } { \partial B} @A aB 48 | 382
Bab Aproksimasi 4 Taylor Our life is a series of moments. Let them all go. Moments. All gathering towards this one. - Now is good Sebelum kita membahas tentang metode-metode nu merik untuk menyelesaikan suatu permasalahan, pada bab ini kita akan mempelajari tentang deret Taylor yang akan digunakan untuk aproksimasi dan penu runan persamaan-persamaan numerik. Pada banyak aplikasi di bidang fisika, kita mendapatkan kemudah an dalam kalkulasi ataupun formulasi jika kita bisa merepresentasikan sebuah fungsi dengan sebuah deret Taylor. 49 382
4.1 Deret dan Polinom Taylor Bagaimana cara mendapatkan sebuah deret pangkat untuk sebuah fungsi f(x)? Untuk deret Taylor, kita merepresentasikan fungsi f(x) pada daerah sekitar x = a menggunakan deret pangkat (x−a) yang berbentuk f(x) = c0+c1(x−a)+c2(x−a)2+c3(x−a)3+.... (4.1) Untuk mendapatkan koefisien-koefisien {ck} dari deret Taylor ini, kita menggunakan asumsi bahwa turunan-turunan fungsi f(x) ada pada posisi x = a untuk semua orde turunan. Mari kita perhatikan turunan-turunan deret Taylor untuk fungsi f(x) yang diberikan berikut ini. f(x) = c0 (x − a)2 + ... f (x) = c 1 + c12c2(x(x−−a)a)+3c + c2 3 (x − a)2 + ... f (x)=2 · 1c2 +3 · 2c3(x − a) + ... f (x)=3 · 2 · 1c3 +4·3 · 2c4(x − a) + ... .. . f(n)(x) = n(n − 1)···2 · 1cn + (n + 1)n···2cn+1(x − a) + ... (4.2) Perhatikan pola yang terbentuk untuk koefisien koefisien pada setiap turunan. Khususnya perhatik an koefisien suku pertama pada turunan-turunan di atas merupakan sebuah factorial. Agar lebih sederha 50 382
I Wayan Sudiarta Metode Numerik na, kita menggunakan notasi faktorial (!) yaitu n! = n(n − 1)···2 ·1. Setelah kita substitusi x = a pada persamaan persamaan (4.2), kita mendapatkan hubungan anta ra turunan fungsi dan koefisien-koefisien deret Taylor sebagai berikut f(a) = c0 f (a) = c1 f (a) = 2!c2 ... f(n)(a) = n!c n (4.3) atau setelah manipulasi sederhana dan menggunakan definisi 0! = 1, kita mendapatkan koefisien-koefisien deret Taylor yaitu c0 = c1 = f(a) 0! f (a) 1! f (a) ... 2! c c2 = n = f (n)(a) n! (4.4) Jadi deret Taylor untuk f(x) di daerah sekitar x = a 51 382
adalah f( a) f'( a) f " (a ) f ( x) = + + ( x – a) + (x – a) 2 0! 1 ! 2 ! f' ' ( a ) f( 4 ) (a) + ( x – a )3 + ( x – a) 4 + ... 3 ! 4 ! ( 4.5 ) atau f(x)(a)(2 – a)" f( x) = ( 4.6 ) k! k =0 Deret Taylor khususnya dengan nilai a = 0 , disebut deret Maclaurin berbentuk f" (0 ) x2 + f'" (0 ) 123 + .. 2 ! 3 ! f (0 ) f' ( 0) f ( x) = + -X + O! 1 ! f(k) (0) k! ~ = ach ( 4.7) IMk =0 Agar lebih jelas , kita akan menggunakan fungsi tri gonometri sin ( x) sebagai contoh . Turunan - turunan untuk fungsi f ( x) = sin ( x) yaitu f( x) = sin ( 2) d sin ( x) f' (x) dr = = cos ( x) ď sin (x f " (x ) -- sin(1) = dx2 52 | 382
I Wayan Sudiarta Metode Numerik f ' (x ) f(4)(x = = d sin (x ) – cos( x) dx3 d4 sin (x) sin ( x) dx4 do sin (x) = cos ( x) dr5 do sin ( x = - sin ( ) dx6 f(5) (x) = f(6) (x) = -- d? sin (x = f( 7 ) ( x) = = – cos ( x) dx7 d® sin (x) f( 8) (x) = sin ( x) d.08 ... dan seterusnya = (4.8) - = -1, - = Setelah substitusi nilai x = 0 pada fungsi sin ( x ) dan turunan- turunannya, kita mendapatkan bahwa f( 0) = 0 , f' ( 0 ) = 1 , F" ( x) 0 , f ' ( x ) f( 4 ) ( 0 ) 0 , f( 5 ) ( 0) = 1 , g( 6) ( 0) = 0 , f( 7) ( 0) -1 , f( 8 ) ( 0) = 0 dan seterusnya. Kita perhatikan bahwa tu runan untuk orde ganjil bernilai satu atau minus satu , dan turunan untuk orde genap bernilai nol . Sehing ga dengan menggunakan koefisien -koefisien ini deret Maclaurin yang dihasilkan untuk fungsi sin ( 2) adalah X3 sin ( x ) = x - + 27 + ( 4.9 ) 3 ! 5 ! 7! 9 ! Deret- deret Maclaurin untuk fungsi- fungsi yang se 53 382
ring digunakan yaitu sebagai berikut : x3 X5 + xx7 x9 = X t .. 9 ! sin ( x) + 3! 5 ! 7! berlaku pada semua x ( 4.10 ) 2 .6 + 78 + 8! cos ( x) = 1 + 2 ! 4 ! 6 ! berlaku pada semua x ( 4.11 ) .22 24 exp ( x ) = 1 + x + .23 + + + 2 2! 3 ! 4! berlaku pada semua x ( 4.12 ) 1 = 1 + x + x2 + x3 + x4 + ... , 1 – X berlaku pada – 1 < x < 1 ( 4.13 ) X t ... , 2 73 In ( 1 + x) = X + 2 3 4 . berlaku pada – 1 < x < 1 ( 4.14) X3 25 x ? tan - ' ( x) = = X + + 2 2 5 7 berlaku pada – 1 < x < 1 ( 4.15 ) 23 25 x7 + c9 sinh( 2) = x + + + + 3 ! 5 ! 7! 9 ! berlaku pada semua x ( 4.16) 54 | 382
I Wayan Sudiarta Metode Numerik x4 + x6 x8 cosh(x)=1+ + x2 + 2! 4! 6! berlaku pada semua x 8! + ..., (4.17) (1 + x)p =1+ ) (p1)x + (p2) x2+ ( p3 x3 + ..., berlaku pada |x| < 1 (4.18) Ingat bahwa binomial didefinisikan dengan ( ) kp = p(p − 1)(p − 2)···(p − (k − 1)) k! (4.19) Apakah deret Taylor atau Maclaurin yang kita per oleh konvergen ke fungsi sebenarnya? Apa yang men jadi ukuran bahwa deret itu konvergen? Untuk men jawab pertanyaan ini kita akan mendefinisikan suatu fungsi sisa Rn(x) yang merupakan sisa dari fungsi f(x) dikurangi dengan jumlah (n + 1) suku pertama dalam deret. Rn n∑ k=0 f (k)(a) (x − a)k (4.20) (x) = f(x) − k! Deret Taylor atau Maclaurin konvergen jika limn→∞ |Rn(x)| = 0. Menggunakan teorema nilai rata-rata (mean value theorem, fungsi sisa Rn(x) sama dengan (Cheney dan Kincaid, 1994). Rn(x) = f (n(n+1)(c) + 1)! (x − a)n+1 (4.21) 55 382
c adalah sebuah bilangan di antara a dan x, c∈ [a, x]. Persamaan sisa ini sering digunakan untuk mengetahui konvergensi dari suatu deret pangkat. Sebagai contoh konvergensi dari deret Maclaurin un tuk fungsi sin(x) atau cos(x) dapat dibuktikan de ngan mengetahui bahwa |f(n+1)(x)| = |sin(x)| atau |f(n+1)(x)| = |cos(x)|, |cos(x)| ≤ 1 atau |sin(x)| ≤ 1 dan limn→∞ xn/n!=0. Jadi limn→∞ |Rn(x)| = 0 ter penuhi. Selain konvergensi dari sebuah deret, dalam kalku lasi kita harus memperhitungkan berapa banyak suku yang dibutuhkan sehingga kalkulasinya akurat. Te orema berikut ini bisa digunakan untuk menentukan apakah jumlah suku yang digunakan sudah cukup. Teorema (Boas, 1983): Jika S = ∑∞k=0 xk adalah sebuah deret pangkat yang konvergen pada |x| < 1 dan jika |ak+1 | < |ak| untuk k>N, ak maka sisa atau galat pemotongan adalah error = ∣ ∣ ∣∣∣S − k=0 N∑ akxk∣ ∣ ∣ ∣ ∣ < |aN+1xN+1|/(1 − |x|) (4.22) Dalam metode numerik, kita tentunya tidak mung kin menggunakan semua bagian deret Taylor untuk pendekatan atau aproksimasi suatu fungsi. Bergan tung pada daerah aplikasi fungsi tersebut dan tingkat keakuratan yang diinginkan, kita dapat memotong de 56 382
I Wayan Sudiarta Metode Numerik ret Taylor pada orde tertentu. f(x) ≈ pn(x) = f(a) f (a) 0! + 1! (x − a) + ... + f(n)(a)(x − a)n n! (4.23) Kita menggunakan polinom Taylor pn(x) untuk meng aproximasi fungsi f(x) pada daerah disekitar x = a. Sebagai contoh, aproksimasi fungsi sin(x) ≈ x yang cukup akurat untuk sudut x kecil sering digunakan di bidang matematika dan fisika untuk melinierisasi sua tu persamaan. Perlu diingat bahwa kesalahan pemo tongan deret Taylor dapat diestimasi dengan meng gunakan fungsi sisa sebelumnya. Fungsi sisa untuk sin(x) ≈ x adalah R3(x) = sin(c)x3/6. Perlu diper hatikan bahwa kita tidak menggunakan R2(x) karena komponen pangkat dua untuk fungsi sin(x) bernilai nol atau tidak ada kontribusi dari komponen pangkat dua. Selain itu kita perhatikan bahwa |sin(c)| ≤ 1 untuk semua nilai c. Jadi nilai kesalahan maksimum nya adalah R3,Max = |x|3/6. Umpama kita ingin mendapatkan kesalahan maksimum sebesar 0.01, ma ka x3/6 < 0.01 atau |x|3 < 0.06 atau |x| < 0.39. Mari kita perhatikan kesalahan pemotongan deret Taylor dengan contoh fungsi sin(x). Perbandingan tingkat keakuratan aproximasi Taylor untuk fungsi sin(x) ditunjukkan pada Gambar 4.1. Memperhatik 57 382
an gambar ini, kita dapat menyimpulkan bahwa dae rah aplikasi polinom Taylor dalam aproksimasi fungsi bertambah luas seiring dengan bertambahnya orde po lynom. Tingkat akurasi meningkat seiring penambahan orde polinom ini tidak berlaku untuk semua fungsi. Mari perhatikan Gambar 4.2 untuk fungsi f(x) = ln(1 + x) dan Pers. (4.14). Deret Taylor untuk fungsi ln(1 + x) hanya berlaku untuk −1 < x ≤ 1. Un tuk x > 1 pendekatan dengan polinom Taylor dengan order tinggi menunjukkan kesalahan yang besar. Pada kasus ini semakin tinggi orde polinomnya, kesalahan aproksimasi semakin besar. 4.2 Metode Horner Metode Horner adalah sebuah prosedur untuk menghi tung sebuah polinom yang efisien atau dengan jumlah operasi yang paling sedikit. Umpama kita mempunyai sebuah polinom yang ber bentuk, p(x) = a0 +a1x+a2x2+···+an−1xn−1+anxn (4.24) Kita ingin menghitung nilai dari p(x) pada titik x = b atau p(b). Cara langsung yang kita bisa gunakan biasanya yaitu dengan menghitung satu per satu seti ap bagian polinom dan kemudian menjumlahan untuk mendapatkan nilai p(b). Cara langsung ini tidaklah 58 382
I Wayan Sudiarta Metode Numerik 1.5 1 p1 sin(x) (x) p3(x) p5(x) y 0.5 0 −0.5 −10 1 2 3 4 5 6 7 x Gambar 4.1: Perbandingan polinom Taylor p1(x), p3(x), dan p5(x) untuk fungsi sin(x) efisien dan mungkin juga tidak akurat karena jika ni lai x kecil akan menimbulkan kesalahan yang besar. Cara yang lebih akurat dan efisien adalah dengan mengubah terlebih dahulu polinom di atas menjadi, p(x) = a0 + x(a1 + x(a2 + ··· + x(an−1 + anx)···)) (4.25) Jadi proses menghitung nilai p(b) adalah pn = an pn−1 = pnb + an−1 59 382
1.5 1 D In ( 1 + 3) P1 ( x) p2 (x ) P3( 0) P4 ( x) 0.5 h 0 -0.5 -1 0 1 2 3 4 5 6 7 х Gambar 4.2 : Perbandingan polinom Taylor Pı ( x ), P2 ( x) , P3 ( x ) dan p4 ( x) untuk fungsi ln ( 1 + x) . Pn-2 = Pn- 1b + An-2 : P1 = p2b + ai Po = pıb + ao (4.26) Jadi nilai p( b) adalah po . Contoh kalkulasi untuk polinom , p( x) = 1 + 2x + 5x2 + 3x3 ( 4.27) diberikan berikut ini . Proses menghitung nilai p( 0.2 ) 60 | 382
I Wayan Sudiarta Metode Numerik adalah p3 = 3 p2 = 3(0.2)+5=5.6 p1 = (5.6)(0.2)+2=3.12 p0 = (3.12)(0.2)+1=1.624 (4.28) Dengan menggunakan sebuah kalkulator, perhi tungan ini sangat mudah dilakukan. Kode Python menghitung polinom menggunakan metode Horner di berikan pada kode dibawah ini. # Metode Horner # Input array koefisien a_0,...,a_n a = [1, 2, 3, 4] # Polinom orde n n = len(a) - 1 x # Hitung polinom dengan metode Horner # p_n(x) = 0.5 p = a[n]; for i in p reversed(range(0,n)): = a[i] + x*p print(p) 61 382
3.25 =f(a) f (a)1! + (x − a) + + Ringkasan Deret pangkat untuk f(x) di daerah sekitar x = a, disebut deret Taylor adalah f(x) f (a) 0! (x − a)2 2! f (a)(x − a)3 + ··· 3! (4.29) Deret Taylor dengan a = 0, disebut deret Maclaurin yaitu f(x) f (0) = f(0) f + x + ∞∑ k=0 f(k)(0) 0! 1! x3 +··· = 2! 3! (0) k! (4.30) f (0)x2 + xk Deret Taylor memiliki kesalahan pemotongan pada order n sebesar fungsi sisa, Rn(x) = f − a)n+1 (n(n+1)(c) + 1)! (x (4.31) dengan c∈ [a, x]. 4.3 Kasus Menentukan Aplikasi 1: Menentukan√ 2 Pendekatan√ 2 Taylor menggunakan aproximasi Taylor, Pers. (4.18) dengan p = 1/2. Binomial pada 62 382
I Wayan Sudiarta Metode Numerik Pers. (4.18) dapat dihitung satu per satu menggunak an definisi Pers. (4.19). Beberapa binomial diberikan berikut ini: ( 1 1 = 2 1! 2 1 8 121 1 (1 22 · = ) = 12 ( 12 ) · 1 2! ( 1 23 − 1 =− ) = 12 (1 2 ) ( 1 2 ) · 1 ( 1 24 − 1 − 2 = ) = 12(12 − 1 ) ( 1 2 −2 ) ( 1 2 ) − ) 1 3! 16 5 3 · 1 4! = − 128 Deret Maclaurin untuk √ 1 + x menjadi √ 5x4 1 + x =1+ x 2 − x2 x3 8 + 16 − + ... (4.32) 128 Supaya akurat kita menggunakan √2 = √ 1 4 − 2=2 √ 1 − 2 Substitusi x = −12 pada Pers. (4.32) menghasilkan √ 1 1 1 5 2 ≈ 2(1 − )=1,41699 4 − 32 128 2048 Kasus 2: Menentukan 2 dengan Pendekatan Akar Nilai √ 2 dapat ditentukan dengan mengubah ben tuk menjadi sebuah persamaan. Kita menginginkan − − √ 63 382
√ nilai sebuah variabel x = 2. Kita dapat meng ubah masalah ini menjadi mencari akar persamaan f(x) atakan=bahwa x2 − 2√=2 berada 0. Secara kasar kita dapat meng di antara nilai 1 dan 2 atau berada disekitar nilai 1.5. Mengetahui hal ini, kita dapat membuat aproksimasi fungsi f(x) pada seki tar x = 1.50 dengan polinom p1(x). Menggunakan f(1.50) = 0.25 dan f (1.50) = 2x = 3.00 kita menda patkan polinom Taylor p1(x)=0.25 + (3.00)(x − 1.50) (4.33) Titik potong polinom Taylor p1(x) pada sumbu x merupakan pendekatan persamaan akar f(x)=0. Se telah manipulasi sederhana diperoleh 0.25 + (3.00)(x − 1.50) = 0 (4.34) atau x = 1.50 − 0.25/3.00 = 1.41667 (4.35) mendapatkan Kita dapat nilai mengulang√ 2 kembali proses ini untuk yang lebih akurat. Dengan f(1.41667) = 0.00695389 dan f (1.41667) = 2.83334 kita memperoleh polinom p1(x) p1(x)=0.00695389+ (2.83334)(x − 1.41667) (4.36) . Polinom p1(x) ini yang memiliki akar yaitu x = 1.41667 − 0.00695389/2.83334 = 1.41422 (4.37) 64 382
I Wayan Sudiarta Metode Numerik Kasus 3: Menentukan Turunan dan Integral Turunan dan integrasi fungsi polinom sangat mudah dilakukan. Dengan mengubah fungsi menjadi deret Taylor atau Maclaurin, turunan dan integral dapat di peroleh dengan melakukan turunan dan integral pada masing-masing bagian pada deret Taylor. Untuk pro ses turunan, sebagai contoh untuk fungsi trigonometri sin(x) dan cos(x), kita bisa membuktikan bahwa tu runan fungsi sin(x) adalah fungsi cos(x). d[sin(x)] dx + ... 9 7!1 dx ... d[x7] x2 + x4 x8 + 1 d[x3] 1 dx− 3! dx + − 5! x7dx = = 1 3 5 7 − d[x] d[x5] 3! 5! + x2 − = 1− + x4 x7 + 2! 4! − + ... 6! 8! = cos(x) 7! 9! x8 Fungsi Gauss atau normal exp(−x2) sering ditemuk an di bidang fisika, matematika dan statistik. Fung si normal tidak dapat diintegralkan secara analitik. Fungsi error (erf(x)) merupakan integral dari fungsi normal ini yaitu erf(x) ≡ √ 2 π ∫ x e−x2 0 dx (4.38) Dengan substitusi −x2 pada deret Taylor untuk fungsi exp(x) pada Pers. (4.12), kita memperoleh deret 65 382
Taylor untuk exp(−x2) yaitu x4 x6 x8 exp(−x2)=1 − x2 + + + ... (4.39) 2! 3! 4! Jadi fungsi erf(x) bisa diperoleh dengan mudah ya itu erf(x) = − ∫0x exp(−x2)dx [ = ∫x 1 0 − x4 x6 x8 x2 + ] + + ... dx 2! − 4! x3 3! x7 7·3! x9 = x − + x5 + + ... (4.40) 3 5 · 2! − 9·4! Kasus 4: Menyelesaikan Persamaan Diferensial Biasa Persamaan diferensial biasa banyak ditemukan di ber bagai bidang sebagai permodelan untuk suatu proses. Salah satu proses yang terjadi di bidang nuklir yaitu proses peluruhan bahan radioaktif. Jumlah inti atom y (biasanya menggunakan simbol N) yang ada pada waktu tertentu memenuhi persamaan dy −λy dt = (4.41) dengan nilai awal y(0) = A. Solusi persamaan ini dengan metode Taylor sekitar t = 0 berbentuk y = y(0) + y (0)t + y (0)t2 + y (0) + ...y(n)(0) tn 2! t3 3! (4.42) n! 66 382
I Wayan Sudiarta Metode Numerik Turunan - turunan { y(n )} diperoleh dari menurunkan persamaan diferensial yaitu y = -1g y" = - \y' = - \( - \ y) = ( -1) ’ y Y " = (-1)²y = ( -1) ? ( -\y) = ( -1) ºy y( n) = ( -1) ( n- 1 ) y' = (-1)(n - 1)( - \ y) = ( -1) "y ( 4.43 ) Jadi y (n )(0) = ( -1) " y (0 ) = (-1)" A. Setelah subsi tusi ke Pers . ( 4.42), kita memperoleh t2 tn y ( t ) = A + (- 1)At + (-1)?A + ... + (- 1)" A 2 n! atau y ( t ) = A[ 1 + ( -1) t + ( - \ t) 2 ! + ... + ( - \t)" n! = A exp ( -1 ) Kasus 5: Pendekatan Harmonik Sederhana Getaran pada molekul diatom dapat dimodelkan de ngan anggapan bahwa dua atom berinteraksi dengan sebuah potensial Morse yang berbentuk V( r) = De(1 – e -a/r-re))2 ( 4.44 ) 67 | 382
dengan adalah r adalah jarak dua atom, re posisi equ ilibrium, De adalah nilai potensial terendahnya/kedalaman potensial, dan a menentukan lebar potensial. Jika getaran atom tidak besar, kita dapat membu at pendekatan getaran harmonik dengan pendekatan Taylor di sekitar r = re ) dan V (r) berni lai nol pada posisi ekuilibrium. Turunan kedua V (r) adalah . Nilai V (re V (r) = d ( 2a2e−2a(r−re )) ) − 2a2e−a(r−re ) ( 1 − e−a(r−re ) (4.45) Substitusi r = re menghasilkan V (re)=2Dea2 (4.46) Pendekatan harmonik untuk potensial Morse yaitu V (r) ≈ 1 2 V (r e )(r − re)2 = Dea2(r − re)2 (4.47) Kasus 6: Mengubah Bentuk Polinom Seperti dijelaskan sebelumnya bahwa deret Taylor me rupakan representasi suatu fungsi pada suatu daerah dekat dengan titik awal x = a. Pada kasus tertentu ki ta ingin melakukan pendekatan pada daerah yang lain sekitar, umpamanya, x = b. Dengan formulasi deret Taylor, kita dapat mengubah polinom dari bentuk (4.48) p(x) = ck(x − a)k n∑ k 68 382
I Wayan Sudiarta Metode Numerik 2 V (r) (r − 1)2 1.5 V 1 0.5 0 0 0.5 1 1.5 2 2.5 3 r Gambar 4.3: Pendekatan harmonik untuk potensial Morse V (r) dengan De = 1, re = 1, dan a = 1. ke bentuk dengan titik awal yang lain x = b yaitu p(x) = (x dk − b)k = n∑ (4.49) k dengan hubungan 1 [ dk dkp(x) dxk ] (4.50) k! x=b Sebagai contoh kita ingin mengubah bentuk polinom p(x)=5x3 + x2 − 4x + 9 (4.51) 69 382
menjadi bentuk p(x) = d3(x−1)3 +d2(x−1)2 +d1(x−1) +d0 (4.52) . Dengan formulasi deret Taylor diperoleh: d0 = p(1) = 5 + 1 − 4+9=11 d1 = p(1)(1)/1! = 15+ 2 − 4 = 13 d2 = p(2)(1)/2! = (30+ 2)/2 = 16 d3 = p(3)(1)/3! = 30/3! = 5 (4.53) Jadi diperoleh polinom p(x) = 5(x−1)3 +16(x−1)2 +13(x−1) +11 (4.54) . Menentukan Nilai Turunan Fungsi Turunan suatu fungsi dapat dengan mudah dihitung dengan menggunakan pendekatan Taylor dibandingk an dengan turunan fungsi tersebut. Sebagai contoh kita menentukan nilai turunan berikut ini d4 cos(x2) (4.55) dx4 pada x = 0.1. Menggunakan deret Maclaurin untuk cos(x) cos(x2) ≈ 1 − x4 + 2! 4! − 6! (4.56) x8 x12 70 382
I Wayan Sudiarta Metode Numerik d4 cos(x2) 33 −12 + 70x4 − (4.57) [ dx4 ≈ 2 x8 d4 cos(x2) −12 + 70(0.1)4 − 33 2 (0.1)8 = dx4 ] x=0.1 ≈ −11.993 (4.58) 4.4 Penggunaan Python Pada bagian ini kita menerapkan Python dengan Mo dul Sympy untuk menentukan deret Taylor. Sebagai contoh pada bagian ini kita menentukan deret Taylor untuk fungsi sin(x). [1]: %matplotlib inline from sympy import * import numpy as np Menentukan koefisien deret Taylor Menggunakan metode diff dan factorial, menghi tungnya secara berulang. [2]: x = symbols( x ) [3]: fx = sin(x) [4]: coef = [] for n in range(10): fnx = diff(fx,x,n) 71 382
cn = fnx.subs ( x , 0 ) / factorial ( n) coef.append ( cn) coef [ 4 ] : [ 0 , 1 , 0 , -1/6 , 0 , 1/120 , 0 , -1/5040 , 0 , 1 / 4362880] Metode Series Menentukan deret dengan Metode/ Fungsi series se perti berikut ini. [ 5] : ft = series ( fx , x ) ft х 23 + 6 120 1.20+ 0 (20) [ 6 ] : ft = series (fx , x , 0 , 10 ) ft x3 27 X9 X + 6 120 + 5040 362880 +0 (2:1 ) [ 7] : ft2 = ft.remove ( ) ft2 x9 x ? X5 23 + 5040 + x 362880 120 6 [ 8] : ft2.subs ( x , 0.4) 0.3894183423097 72 | 382
I Wayan Sudiarta Metode Numerik Metode Sum Menentukan deret dengan Metode Sum, diff dan fa ctorial [ 9] : x = Symbol ( ' x ' ) a = Symbol ( ' a ' ). k Symbol ( ' k ' ) [ 10] : taylor = Sum (sin ( a ) diff ( ( a , k ) ) * x ** k / 4factorial ( k) , ( k , 0 , 10 ) ) taylor 10 rk dk dak sin ( a) k ! k=0 [ 11 ] : expr taylor.doit ( ) expr x? cos (a) 5040 cos ( a) 6 25 X3 x10 sin (a) rºcos (a) r8 sin (a ) + + 3628800 362880 40320 cº sin (a) cos ( a) x4 sin ( a) + + 720 120 24 x2 sin (a) + x cos ( a) + sin ( a) 2 [ 12] : expr2 expr.subs ( a , 0 ) expr2 = 29 x7 25 2. + x 6 + 362880 5040 120 [ 13] : expr2.subs ( x , 0.5 ) 0.479425538616416 73 382
Visualisasi [ 14] : import matplotlib.pyplot as plt p1 p [ 15] : x = symbols ( ' x ' ) series (sin ( x ) , x , 0 , 2 ) .remove ( ) = series (sin (x ) , x , 0 , 4 ) .remove ( ) series (sin ( x ) , x , 0 , 6 ) .remove ( ) p2 p3 S = [ 16] : xi = np.linspace ( 0,6,100) np.sin (xi) y1 = np.zeros ( 100 ) y2 = np.zeros (100 ) y3 np.zeros ( 100 ) for i in range ( 100 ) : y1 [ i ] p1.subs ( x , N (xi [ i ] ) ) y2 [ i ] p2 . subs ( x , N (xi[ i ] ) ) y3 [ i] p3. subs ( x , N (xi[ i ] ) ) plt.plot ( xi , yi , xi , y2 , xi , y3 , xi , s ) plt.ylim ( -1.5,1.5) plt.xlabel ( ' x ' ) plt.ylabel ( ' y ' ) plt.legend ( [ ' pl ' , ' p3 ' , ' p5 ' , ' sin ( x ) ' ] ) plt.show ( ) 74 | 382
I Wayan Sudiarta Metode Numerik Soal-Soal Soal 4.1. Tuliskan deret Taylor untuk 1/√ 1 + x. Soal 4.2. Tuliskan deret Taylor untuk √ 1 + x4. Soal 4.3. Tentukan nilai √33. Soal 4.4. Tentukan nilai sin(0.5). Soal 4.5. Tentukan nilai √ 1.1. Soal tuk ∫014.6. cos(x2)dx. Hitunglah integral dengan deret Taylor un Soal tuk 4.7.√1Hitunglah + x4dx. ∫ 0,5 integral dengan deret Taylor un 0 75 382
Soal 4.8. Tentukan deret untuk fungsi sinh−1 x yang diberikan oleh sinh−1 x = ∫x0 √11+t2 dt (4.59) . Soal 4.9. Ubahlah polinom p(x) = x4 − 2x − 1 ke bentuk polinom dengan pangkat (x − 5). Soal 4.10. Buktikan dengan menggunakan deret Maclaurin untuk exp(θ), cos(θ) dan sin(θ) bahwa exp(iθ) = cos(θ) + isin(θ). Soal 4.11. Energi kinetik untuk partikel relativistik diberikan oleh K = mc2[(1 − v2/c2)−1/2 − 1] (4.60) . Gunakan pendekatan Taylor untuk membuktikan bahwa energi kinetik untuk kecepatan v << c adalah K = mv2/2. Soal 4.12. Buktikan dengan deret Maclaurin un tuk cos(x), sin(x) dan tan(x) bahwa tan(x) = sin(x)/cos(x). 76 382
Bab 5 Sistem Bilangan, Floating Point dan Kesalahan Hitung "We cannot solve our problems with the same thin king we used when we created them." – Albert Einstein Metode numerik mengajarkan untuk menghitung se suatu dengan akurat. Supaya kita mengerti akan ke terbatasan dalam perhitungan, kita perlu mempelaja ri sistem bilangan dan representasi floating point yang digunakan dalam operasi kalkulasi atau komputasi di komputer. Bab ini menjelaskan sistem bilangan, teru tama representasi dengan bilangan biner, besaran dan operasi matematis. Apakah terjadi kehilangan angka 77 382
penting ketika melakukan operasi matematis dengan bilangan tertentu? Bagaimana cara menghindarinya? 5.1 Sistem Bilangan Bilangan riil dalam penulisannya dapat dipisahkan menjadi dua bagian yaitu bagian bilangan bulat (in teger) dan bagian bilangan pecahan (fraction). Bia sanya tanda yang digunakan untuk memisahkan dua bagian bilangan riil ini adalah tanda koma (,) atau tan da titik (.). Penggunaan tanda koma biasa ditemukan di Indonesia, tetapi pada buku ini, untuk memperta hankan konsistensi dalam penulisan dan mengurangi kesalahan pada waktu kalkulasi menggunakan kalku lator maupun dengan bahasa pemrograman seperti C dan Python, kita akan menggunakan tanda titik (.) . Sistem bilangan yang sering kita pergunakan adalah sistem bilangan desimal. Bilangan bulat pada sistem bilangan desimal berbentuk: = (dndn−1dn−2 ···d2d1d0)10 d n × 10n + dn−1 × 10n−1 + ··· + d1 × 101 + d0 (5.1) Sedangkan, bilangan pecahan pada sistem bilangan de simal berbentuk: (0.d−1d−2d−3 ···)10 1 1 = d−1 × 101 + d−2 × 102 + d−3 × 1031 + ··· (5.2) 78 382
I Wayan Sudiarta Metode Numerik Tabel 5.1: Jenis-Jenis Sistem Bilangan Sistem β Nilai Contoh Bilangan Biner 2 0,1 Oktal 8 0,1,2,3,4,5,6,7 Desimal 10 0,1,2,3,4,5,6,7,8,9 Heksadesimal 16 0,1,2,3,4,5,6,7,8,91 1111 17 15 F A,B,C,D,E,F Mengikuti pola di atas, secara umum bilangan bulat pada sistem bilangan dengan basis β berbentuk, (bnbn−1bn−2 ···b2b1b0)β = bnβn + b n−1 βn−1 + ··· + b1β1 + b0 (5.3) dan bilangan pecahannya berbentuk: β3 (0.b−1b−2b−3 ···)β 1 = b−1 × + b−2 × 1 + b−3 × 1 β1 + β2 ··· (5.4) Jenis-jenis sistem bilangan yang biasa digunakan pa da bidang komputasi maupun pada bidang elektronika dapat dilihat pada Tabel 5.1. Setelah mengetahui bentuk beberapa sistem bilang an, kita kemudian perlu mempelajari cara mengubah bentuk dari sistem bilangan yang satu ke sistem bi langan yang lain. Mengkonversi suatu bilangan ke sis tem bilangan yang lain, kita perlu memisahkan bilang an menjadi dua bagian, bulat dan pecahan karena cara 79 382
konversi bilangan bulat berbeda dengan cara konversi bilangan pecahan. Konversi yang mudah dilakukan, karena kita sudah terbiasa menggunakan sistem bilangan desimal, ada lah mengubah dari suatu sistem bilangan berbasis β ke sistem bilangan desimal. Mengubah suatu bilang an ke bilangan desimal dapat dengan mudah dilakuk an menggunakan persamaan (5.3) dan (5.4). Untuk mengonversi bilangan heksadesimal, kita perlu mengi ngat bahwa huruf A, B, C, D, E, dan F diganti dengan angka 10, 11, 12, 13, 14, dan 15. Sebagai contoh bilangan (1101.011)2 di ubah ke de simal menjadi (1101)2 = 1 × 23 +1 × 22 + 0 × 21 +1 × 20 = (13)10 (5.5) Dengan metode Horner, p3 = 1 p2 = 1 × 2+1=3 p1 = 3 × 2+0=6 p0 = 6 × 2 +1 = (13)10 (5.6) Bilangan pecahan pada sistem bilangan desimal ber bentuk: 1 1 (0.011)2 = 0 × + 1× + 1× 21 22 23 1 =0+0.25 +0.125 = (0.375)10 (5.7) 80 382
I Wayan Sudiarta Metode Numerik Dengan metode Horner, p3 = 1 p2 = 1 × 0.5+1=1.5 p1 = 1.5 × 0.5+0=0.75 p0 = 0.75 × 0.5+0=(0.375)10 (5.8) Hasil akhir yang kita peroleh adalah (1101.011)2 = (13.375)10. Contoh untuk bilangan heksadesimal adalah sebagai berikut: (D5)16 13 × 16 + 5 = (213)10 (5.9) Mengubah bilangan dari sistem desimal ke basis β dilakukan dengan memisahkan bilangan menjadi dua bagian: bagian bilangan bulat dan bagian bilangan pecahan. Untuk bagian bilangan bulat dilakukan dengan membagi bilangan dengan β dan mengambil nilai si sa bagi. Supaya lebih jelas, umpama kita memi liki sebuah bilangan x yang akan di ubah menjadi (bnbn−1 ···b1b0)β, maka = x = (bn bn bn−1 )β βn +bn−2 bn−1···b2b1b0 βn−1 + ··· +b1β1 + b0 (5.10) 81 382
Jika x dibagi dengan B, kita memperoleh, X bo = ( 5.11 ) B bran- 1 + bn- 181–2 + ... + bi + B Bilangan Bulat Jadi bo merupakan sisa ketika x dibagi dengan B. Bilangan bulat dari x/B yang dihasilkan kemudian di bagi lagi dengan B dan menghasilkan sisa yaitu bj . Begitu pula selanjutnya, sehingga semua bilangan bị diperoleh . Sedangkan untuk bagian bilangan pecahan dilakuk an dengan mengalikan dengan B dan mengambil bi langan bulatnya. Seperti sebelumnya, umpama kita memiliki bilangan pecahan y yang akan di ubah men jadi bilangan ( 0.b_1b_2 ... ) B y = ( 6_16_26_3 ... ) 3 1 1 1 = b-1 X + b_2 X + 6-3 X + . B2 B3 ( 5.12) 81 1 y x B = B - 1 + 6–2ex 1 + 6-3 X B. ( 5.13) B2 Bil.Bulat Bilangan pecahan Jadi b_1 merupakan bilangan bulat ketika y dikali dengan B. Bilangan pecahan y x B yang dihasilkan kemudian dikalikan lagi dengan B dan menghasilkan 82 | 382