buku-analisis-numerik_c+

50
Metode Numerik Menggunakan C, C++ dan Matlab atau Octave I Wayan Sudiarta, Ph.D Program Studi Fisika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Mataram Februari 14, 2011

Upload: ksatrio

Post on 19-Jan-2016

25 views

Category:

Documents


15 download

TRANSCRIPT

Page 1: buku-analisis-numerik_C+

Metode NumerikMenggunakan C, C++ dan

Matlab atau Octave

I Wayan Sudiarta, Ph.D

Program Studi Fisika

Fakultas Matematika dan Ilmu Pengetahuan Alam

Universitas Mataram

Februari 14, 2011

Page 2: buku-analisis-numerik_C+

ii

Page 3: buku-analisis-numerik_C+

Daftar Isi

1 Pendahuluan 1

2 Aproksimasi Maclaurin dan Taylor 3

3 Metode Horner 9

4 Sistem Bilangan 13

5 Floating Point - Titik Mengambang 19

5.1 Bentuk Floating Point . . . . . . . . . . . . . . . . . . . . 19

6 Interpolasi 21

6.1 Metode Lagrange . . . . . . . . . . . . . . . . . . . . . . . 22

6.2 Metode Newton . . . . . . . . . . . . . . . . . . . . . . . . 24

6.3 Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

6.4 Fenomena Runge . . . . . . . . . . . . . . . . . . . . . . . 28

7 Persamaan Nonlinier 29

7.1 Metode Fixed Point Iterasi . . . . . . . . . . . . . . . . . . 29

7.2 Metode Bisection . . . . . . . . . . . . . . . . . . . . . . . 29

7.3 Metode Newton . . . . . . . . . . . . . . . . . . . . . . . . 30

7.4 Metode Secant . . . . . . . . . . . . . . . . . . . . . . . . . 30

7.5 Metode Regula-Falsi . . . . . . . . . . . . . . . . . . . . . 30

8 Matlab atau Octave 31

8.1 Notasi dan konvensi . . . . . . . . . . . . . . . . . . . . . 33

8.2 Operasi Bilangan . . . . . . . . . . . . . . . . . . . . . . . 34

8.3 Variabel dan Konstanta . . . . . . . . . . . . . . . . . . . 34

8.4 Fungsi-Fungsi Matematis . . . . . . . . . . . . . . . . . . 35

8.5 Vektor dan Matriks . . . . . . . . . . . . . . . . . . . . . . 36

8.5.1 Fungsi-fungsi untuk Matriks . . . . . . . . . . . . 37

8.5.2 Operasi Matriks . . . . . . . . . . . . . . . . . . . . 38

8.6 Input dan Output . . . . . . . . . . . . . . . . . . . . . . . 39

8.7 Pemrograman . . . . . . . . . . . . . . . . . . . . . . . . . 39

8.7.1 Pengulangan for . . . . . . . . . . . . . . . . . . . . 39

8.7.2 Persyaratan atau Percabangan if . . . . . . . . . . 39

8.8 Visualisasi . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

8.8.1 Grafik Dua Dimensi . . . . . . . . . . . . . . . . . 40

8.8.2 Grafik Tiga Dimensi . . . . . . . . . . . . . . . . . 42

Page 4: buku-analisis-numerik_C+

ii Daftar Isi

8.8.3 Grafik Contour . . . . . . . . . . . . . . . . . . . . 43

8.9 Input Output Data . . . . . . . . . . . . . . . . . . . . . . 44

Page 5: buku-analisis-numerik_C+

1Pendahuluan

Apa itu Metode Numerik.

Apa saja yang diperlukan fisika komputasi.

Aplikasinya mencakup bidang apa saja.

proses yang dilakukan untuk fisika komputasi

Menentukan Persamaan dasar, hati-hati dengan wilayah aplikasi

persamaan tersebut.

Menentukan metode untuk discritasi

Membuat algoritma.

”Becoming familiar with basic numerical methods without realizing

their limitation would be foolhardy”

Page 6: buku-analisis-numerik_C+
Page 7: buku-analisis-numerik_C+

2Aproksimasi Maclaurin dan

Taylor

Sebelum kita membahas tentang metode-metode numerik untuk me-

nyelesaikan suatu permasalahan, pada bab ini kita akan mempelajari

tentang deret Maclaurin dan Taylor yang akan digunakan untuk ap-

roksimasi dan penurunan persamaan-persamaan numerik.

Deret Taylor merupakan sebuah deret pangkat atau power series

yang diberikan dengan definisi sebagai berikut:

P (x) =

n∑

k=0

akxk−1

= a0 + a1x+ a2x2 + · · ·+ anx

n (2.1)

.

Atau dengan kata lain, sebuah deret pangkat adalah sebuah poli-

nom dengan orde n.

Pada banyak aplikasi di bidang fisika, kita mendapat kemudahan

dalam kalkulasi atapun formulasi jika kita bisa merepresentasikan se-

buah fungsi dengan sebuah deret pangkat. Disini kita berasumsi bah-

wa sebuah deret pangkat bisa ditemukan dan konvergen pada interval

yang diinginkan. Untuk lebih jelasnya, kita akan menggunakan fungsi

trigonometri cos(x) sebagai contoh. Sebuah deret tak berhingga untuk

fungsi cos(x) adalah

cos(x) = a0 + a1x+ a2x2 + a3x

3 + · · · (2.2)

Kita perhatikan bahwa deret pangkat ini konvergen sekitar x = 0.

Koefisien-koefisien, ak, harus ditentukan sehingga fungsi polinom

yang dihasilkan mendekati fungsi sebenarnya. Bagaimana cara men-

dapatkan nilai ak? Caranya adalah dengan menggunakan turunan. Ji-

Page 8: buku-analisis-numerik_C+

4 Aproksimasi Maclaurin dan Taylor

ka kita lakukan turunan berturut-turut untuk fungsi cos(x) dan deret

pangkatnya, kita mendapatkan,

cos(x) = a0 + a1x+ a2x2 + a3x

3 + a4x4 · · ·

d cos(x)

dx= − sin(x) = a1 + 2a2x+ 3a3x

2 + 4a4x3 · · ·

d2 cos(x)

dx2= − cos(x) = 2!a2 + 3× 2a3x+ 4× 3a4x

2 · · ·d3 cos(x)

dx3= sin(x) = 3!a3 + 4× 3× 2a4x · · ·

· · · · · ·

Jika kita substitusi nilai x = 0 pada fungsi cos(x) dan turunan-

turunannya, kita mendapatkan bahwa a0 = 1, a1 = 0, a2 = −12!

, a3 = 0,

a4 =14!

dan seterusnya. Jadi dengan menggunakan koefisien-koefisien

ini deret pangkat yang dihasilkan untuk fungsi cos(x) adalah

cos(x) = 1− 1

2!x2 +

1

4!x4 · · · (2.3)

(2.4)

Melihat proses di atas yang menghasilkan deret pangkat untuk se-

buah fungsi cos(x) maka pertanyaannya adalah ”bagaimana cara men-

dapatkan deret pangkat untuk sebuah fungsi f(x) secara umum?”. Ki-

ta akan menggunakan pendekatan deret pangkat x atau yang lebih

umum deret pangkat (x − a). Jadi sebuah fungsi f(x) dapat direpre-

sentasikan dengan deret pangkat (x − a) pada daerah sekitar x = ayang berbentuk

f(x) = a0 + a1(x− a) + a2(x− a)2 + a3(x− a)3 + · · · (2.5)

Jika kita lakukan diferensiasi atau turunan berturut-turut seperti

proses untuk cos(x), kita mendapatkan,

f(x) = a0 + a1(x− a) + a2(x− a)2 + a3(x− a)3 + a4(x− a)4 + · · · (2.6)

f ′(x) = a1 + 2a2(x− a) + 3a3(x− a)2 + 4a4(x− a)3 + · · · (2.7)

f ′′(x) = 2!a2 + 3× 2a3(x− a) + 4× 3a4(x− a)2 + · · · (2.8)

f ′′′(x) = 3!a3 + 4× 3× 2a4(x− a) + · · · (2.9)

· · · (2.10)

Page 9: buku-analisis-numerik_C+

5

Jika kita substitusi x = a pada persamaan-persamaan (2.10), kita

mendapatkan koefisien-koefisien sebagai berikut

f(x) = a0 (2.11)

f ′(x) = a1 (2.12)

f ′′(x) = 2!a2 (2.13)

f ′′′(x) = 3!a3 (2.14)

· · · (2.15)

atau dengan manipulasi sederhana, kita mendapatkan,

a0 = f(a) =f(a)

0!(2.16)

a1 = f ′(a) =f ′(a)

1!(2.17)

a2 =f ′′(a)

2!(2.18)

a3 =f ′′′(a)

3!(2.19)

· · · = · · · (2.20)

an =f (n)(a)

n!(2.21)

Ingat bahwa notasi f (n)(x) adalah merupakan turunan ke n dari

fungsi f(x) dan factorial 0! = 1.

Jadi deret pangkat untuk f(x) di daerah sekitar x = a adalah

f(x) =f(a)

0!+

f ′(a)

1!(x− a) +

f ′′(a)

2!(x− a)2 (2.22)

+f ′′′(a)

3!(x− a)3 +

f (iv)(a)

4!(x− a)4 + · · · (2.23)

=∞∑

k=0

f (k)(a)

k!(x− a)k (2.24)

Deret pangkat ini diberi nama deret Taylor.

Jika nilai a = 0 pada deret Taylor di atas, disebut deret Maclaurin.

Disini deret berguna hanya untuk interval sekitar x = 0. Jadi deret

Maclaurin adalah

Page 10: buku-analisis-numerik_C+

6 Aproksimasi Maclaurin dan Taylor

f(x) =f(0)

0!+

f ′(0)

1!x+

f ′′(0)

2!x2 +

f ′′′(0)

3!x3 +

f (iv)(0)

4!x4 + · · · (2.25)

=∞∑

k=0

f (k)(0)

k!xk (2.26)

Deret-deret Maclaurin yang penting untuk aplikasi di bidang fisika

adalah sebagai berikut

sin(x) = x− x3

3!+

x5

5!− x7

7!+

x9

9!+ · · · , berlaku pada semua x (2.27)

cos(x) = 1− x2

2!+

x4

4!− x6

6!+

x8

8!+ · · · , berlaku pada semua x (2.28)

exp(x) = 1 + x+x2

2!+

x3

3!+

x4

4!+

x5

5!+ · · · , berlaku pada semua x

(2.29)

1

1− x= 1 + x+ x2 + x3 + x4 + x5 + · · · , berlaku pada − 1 < x < 1

(2.30)

ln(1 + x) = x− x2

2+

x3

3− x4

4+

x5

5+ · · · , berlaku pada − 1 < x ≤ 1

(2.31)

tan−1(x) = x− x3

2+

x5

5− x7

7+

x9

9+ · · · , berlaku pada − 1 < x ≤ 1

(2.32)

sinh(x) = x+x3

3!+

x5

5!+

x7

7!+

x9

9!+ · · · , berlaku pada semua x (2.33)

cosh(x) = 1 +x2

2!+

x4

4!+

x6

6!+

x8

8!+ · · · , berlaku pada semua x (2.34)

(1 + x)p = 1 +

(p

1

)

x+

(p

2

)

x2 +

(p

3

)

x3 +

(p

4

)

x4 + · · · , berlaku pada − 1 < x < 1

(2.35)

Ingat bahwa binomial(p

k

)= p!/(k!(p− k)!).

Apakah deret Taylor atau Maclaurin yang kita peroleh konvergen

ke fungsi sebenarnya? Apa yang menjadi ukuran bahwa deret itu kon-

vergen? Untuk menjawab pertanyaan ini kita akan mendefinisikan

fungsi sisa Rn(x) yang merupakan sisa dari fungsi f(x) dikurangi de-

ngan jumlah (n + 1) suku pertama dalam deret.

Page 11: buku-analisis-numerik_C+

7

Rn(x) = f(x)−[f(a)

0!+

f ′(a)

1!(x− a) +

f ′′(a)

2!(x− a)2 + · · · f

(n)(a)

n!(x− a)n

]

(2.36)Deret Taylor atau Maclaurin konvergen jika limn→∞ |Rn(x)| = 0.

Menggunakan teorema kalkulus, persamaan sisa sama dengan

Rn(x) =f (n+1)(c)

(n+ 1)!(x− a)n+1 (2.37)

,dimana c adalah sebuah titik di antara a dan x.

Persamaan sisa ini sering digunakan untuk mengetahui konver-

gensi dari suatu deret.

Sebagai contoh konvergensi dari deret Maclaurin untuk fungsi sin(x)atau cos(x) dapat dibuktikan dengan 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 terpenuhi.

Selain konvergensi dari sebuah deret, dalam kalkulasi kita harus

memperhitungkan berapa banyak suku yang dibutuhkan sehingga kal-

kulasinya akurat. Teorema berikut ini bisa digunakan untuk menen-

tukan apakah jumlah suku yang digunakan sudah cukup.

Teorema: Jika S =∑∞

k=0 akxk adalah sebuah deret pangkat yang

konvergen pada |x| < 1 dan jika |ak+1| < |ak| untuk k > N , maka sisa

atau error pemotongan adalah

error =

∣∣∣∣∣S −

N∑

k=0

akxk

∣∣∣∣∣< |aN+1x

N+1/(1− |x|) (2.38)

Page 12: buku-analisis-numerik_C+
Page 13: buku-analisis-numerik_C+

3Metode Horner

Metode Horner adalah sebuah metode atau prosedur untuk menghi-

tung sebuah polinom yang efisien atau dengan jumlah operasi yang

paling sedikit.

Umpama kita mempunyai sebuah polinom yang berbentuk,

p(x) = a0 + a1x+ a2x2 + · · ·+ an−1x

n−1 + anxn (3.1)

Kita ingin menghitung nilai dari p(x) pada titik x = b atau p(b). Ca-

ra langsung yang kita bisa gunakan biasanya yaitu dengan menghi-

tung satu per satu setiap bagian polinom dan kemudian menjumlahan

untuk mendapatkan nilai p(b). Cara langsung ini tidaklah efisien dan

mungkin juga tidak akurat karena jika nilai x kecil akan menimbulk-

an kesalahan yang besar.

Cara yang lebih akurat dan efisien adalah dengan mengubah terle-

bih dahulu polinom di atas menjadi,

p(x) = a0 + x(a1 + x(a2 + · · ·+ x(an−1 + anx) · · · )) (3.2)

Jadi proses menghitung nilai p(b) adalah

pn = an

pn−1 = pnb+ an−1

pn−2 = pn−1b+ an−2

...

p1 = p2b+ a1

p0 = p1b+ a0 (3.3)

Nilai p(b) = p0.Contoh kalkulasi sebagai berikut,

p(x) = 1.0 + 2.0x+ 5.0x2 + 3.0x3 (3.4)

Page 14: buku-analisis-numerik_C+

10 Metode Horner

Jadi proses menghitung nilai p(0.2) adalah

p3 = 3.0

p2 = (3.0)(0.2) + 5.0 = 5.6

p1 = (5.6)(0.2) + 2.0 = 3.12

p0 = (3.12)(0.2) + 1.0 = 1.624 (3.5)

Dengan menggunakan sebuah kalkulator, perhitungan ini sangat

mudah dilakukan.

Program C pada Listing 3.1 menghitung polinom menggunakan

metode Horner bisa dilihat dibawah ini.

1

2 #include <std io . h>

3

4 #def ine N 100

5

6 int main ( )

7 {8 int i , n ;

9 f l o a t a [N] ; / / array a [N]

10 f l o a t x , p ; / / n i l a i x dan n i l a i polinom

11

12 pr in t f ( ”Masukkan order dari polinom n?\n” ) ;

13 scanf ( ”%d” , &n) ;

14

15 pr in t f ( ”Masukkan %d koe f i s i en polinom order %d \n” , n+1 , n) ;

16 f o r ( i =0; i<=n ; i ++){17 scanf ( ”%f ” , &a [ i ] ) ;

18 }19

20 pr in t f ( ”Masukkan n i l a i x ? ” ) ;

21 scanf ( ”%f ” ,&x ) ;

22

23 / / hitung dengan metode horner

24 p = a [n ] ;

25 f o r ( i =(n−1) ; i >=0; i−−){26 p = a [ i ] + x∗p ;

27 }28

29 / / output

30 pr in t f ( ” \n\n=============================\n” ) ;

31 pr in t f ( ” i a [ i ] \n” ) ;

32 f o r ( i =0; i<=n ; i ++){33 pr in t f ( ” %d %f ” , i , a [ i ] ) ;

34 }35

Page 15: buku-analisis-numerik_C+

11

36 pr in t f ( ” \ n \n” ) ;

37 pr in t f ( ”p(%f ) = %f \n” , x , p ) ;

38

39 return 0;

40 }

Listing 3.1: Program menghitung nilai polinom dengan metode Horner.

Page 16: buku-analisis-numerik_C+
Page 17: buku-analisis-numerik_C+

4Sistem Bilangan

Bilangan riil dalam penulisannya dapat dipisahkan menjadi dua ba-

gian yaitu bagian bilangan bulat dan bagian bilangan pecahan. Bia-

sanya tanda yang digunakan untuk memisahkan dua bagian bilangan

riil ini adalah tanda koma (,) atau tanda titik (.). Penggunaan tanda

koma biasa ditemukan di Indonesia, tetapi pada buku ini, untuk mem-

pertahankan konsistensi dalam penulisan dan mengurangi kesalahan

pada waktu kalkulasi menggunakan kalkulator maupun dengan baha-

sa pemrograman seperti C++, kita akan menggunakan tanda titik (.)

.

Sistem bilangan yang sering kita pergunakan adalah sistem bilang-

an desimal. Bilangan bulat pada sistem bilangan desimal berbentuk:

(dndn−1dn−2 · · · d2d1d0)10 = dn × 10n + dn−1 × 10n−1 + · · ·+ d1 × 101 + d0(4.1)

Sedangkan, bilangan pecahan pada sistem bilangan desimal berben-

tuk:

(0.d−1d−2d−3 · · · )10 = d−1 ×1

101+ d−2 ×

1

102+ d−3 ×

1

103+ · · · (4.2)

Mengikuti pola di atas, secara umum bilangan bulat pada sistem

bilangan dengan basis β berbentuk,

(bnbn−1bn−2 · · · b2b1b0)β = bnβn + bn−1β

n−1 + · · ·+ b1β1 + b0 (4.3)

dan bilangan pecahannya berbentuk:

(0.b−1b−2b−3 · · · )β = b−1 ×1

β1+ b−2 ×

1

β2+ b−3 ×

1

β3+ · · · (4.4)

Jenis-jenis sistem bilangan yang biasa digunakan pada bidang kom-

putasi maupun pada bidang elektronika dapat dilihat pada Tabel 4.1.

Page 18: buku-analisis-numerik_C+

14 Sistem Bilangan

Tabel 4.1: Jenis-Jenis Sistem Bilangan

Sistem Bilangan β Nilai Contoh

Biner 2 0,1 1111

Oktal 8 0,1,2,3,4,5,6,7 17

Desimal 10 0,1,2,3,4,5,6,7,8,9 15

Heksadesimal 16 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fa F

aNote: Perlu diingat bahwa nilai desimal dari A, B, C, D,

E, dan F adalah 10, 11, 12, 13, 14, dan 15.

Setelah mengetahui bentuk beberapa sistem bilangan, kita kemu-

dian perlu mempelajari cara mengubah bentuk dari sistem bilangan

yang satu ke sistem bilangan yang lain. Mengkonversi suatu bilangan

ke sistem bilangan yang lain, kita perlu memisahkan bilangan menja-

di dua bagian, bulat dan pecahan karena cara konversi bilangan bulat

berbeda dengan cara konversi bilangan pecahan.

Konversi yang mudah dilakukan, karena kita sudah terbiasa meng-

gunakan sistem bilangan desimal, adalah mengubah dari suatu sistem

bilangan berbasis β ke sistem bilangan desimal. Mengubah suatu bi-

langan bilangan ke bilangan desimal dapat dengan mudah dilakukan

menggunakan persamaan (4.3) dan (4.4). Untuk mengkonversi bilang-

an heksadesimal, kita perlu mengingat 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 desimal menjadi

(1101)2 = 1× 23 + 1× 22 + 0× 21 + 1× 20 = (13)10 (4.5)

Dengan metode Horner,

p3 = 1

p2 = 1× 2 + 1 = 3

p1 = 3× 2 + 0 = 6

p0 = 6× 2 + 1 = (13)10 (4.6)

Bilangan pecahan pada sistem bilangan desimal berbentuk:

(0.011)2 = 0× 1

21+ 1× 1

22+ 1× 1

23

= 0 + 0.25 + 0.125 = (0.375)10 (4.7)

Page 19: buku-analisis-numerik_C+

15

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 (4.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 (4.9)

Mengubah bilangan dari sistem desimal ke basis β dilakukan de-

ngan memisahkan bilangan menjadi dua bagian: bagian bilangan bu-

lat dan bagian bilangan pecahan.

Untuk bagian bilangan bulat dilakukan dengan membagi bilang-

an dengan β dan mengambil nilai sisa bagi. Supaya lebih jelas, um-

pama kita memiliki sebuah bilangan x yang akan di uabah menjadi

(bnbn−1 · · · b1b0)β, maka

x = (bnbn−1bn−2 · · · b2b1b0)β= bnβ

n + bn−1βn−1 + · · ·+ b1β

1 + b0 (4.10)

Jika x dibagi dengan β, kita memperoleh,

x

β= bnβ

n−1 + bn−1βn−2 + · · ·+ b1

︸ ︷︷ ︸

Bilangan Bulat

+b0β

(4.11)

Jadi b0 merupakan sisa ketika x dibagi dengan β. Bilangan bulat

dari x/β yang dihasilkan kemudian dibagi lagi dengan β dan mengha-

silkan sisa yaitu b1. Begitu pula selanjutnya, sehingga semua bilangan

bi diperoleh.

Sedangkan untuk bagian bilangan pecahan dilakukan dengan meng-

alikan dengan β dan mengambil bilangan bulatnya. Seperti sebelum-

nya, umpama kita memiliki bilangan pecahan y yang akan di ubah

menjadi bilangan (0.b−1b−2 · · · )β

y = (b−1b−2b−3 · · · )β= b−1 ×

1

β1+ b−2 ×

1

β2+ b−3 ×

1

β3+ · · · (4.12)

Page 20: buku-analisis-numerik_C+

16 Sistem Bilangan

y × β = b−1︸︷︷︸

Bil.Bulat

+ b−2 ×1

β+ b−3 ×

1

β2+ · · ·

︸ ︷︷ ︸

Bilangan pecahan

(4.13)

Jadi b−1 merupakan bilangan bulat ketika y dikali dengan β. Bi-

langan pecahan y×β yang dihasilkan kemudian dikalikan lagi dengan

β dan menghasilkan bilangan bulat yaitu b−2. Begitu pula selanjutnya,

sehingga semua bilangan pecahan b−j diperoleh.

Contoh: Konversi bilangan (123.21)10 = (· · · )2 menjadi bilangan bi-

ner.

Kita mulai dengan mengkonversi bilangan bulatnya dengan proses

sebagai berikut.

123 dibagi 2 = 61 sisa 1

61 dibagi 2 = 30 sisa 1

30 dibagi 2 = 15 sisa 0

15 dibagi 2 = 7 sisa 1

7 dibagi 2 = 3 sisa 1

3 dibagi 2 = 1 sisa 1

1 dibagi 2 = 0 sisa 1 (4.14)

Dan kemudian kita baca dari bawah menghasilkan bilangan biner

yaitu (1111011)2.Untuk bagian bilangan pecahan, kita melakukan proses sebagai

berikut,

0.21 dikali 2 = 0.42 bagian bulat = 0

0.42 dikali 2 = 0.84 bagian bulat = 0

0.84 dikali 2 = 1.68 bagian bulat = 1

0.68 dikali 2 = 1.36 bagian bulat = 1

0.36 dikali 2 = 0.72 bagian bulat = 0

0.72 dikali 2 = 1.44 bagian bulat = 1

0.44 dikali 2 = 0.88 bagian bulat = 0

0.88 dikali 2 = 1.67 bagian bulat = 1

...

dan seterusnya (4.15)

Page 21: buku-analisis-numerik_C+

17

Dan kita baca dari atas menghasilkan bilangan biner pecahan (0.0011010 · · · )2.Jadi bilangan (123.21)10 = (1111011.00110101 · · · )2. Di sini kita meng-

hentikan perhitungan setelah 8 bilangan biner. Pada contoh ini, bi-

langan pecahan tidak berakhir pada angka pecahan tertentu, oleh ka-

rena itu dalam komputasi yang menggunakan bilangan biner seperti

pada komputer dan kalkulator akan terjadi pemotongan sehingga ter-

jadi kesalahan. Jadi perlu diingat bahwa dalam setiap komputasi nu-

merik, kita memiliki jumlah angka yang terbatas disimpan oleh kom-

puter dan kita perlu mempertimbangkan kesalahan pembulatan un-

tuk menghindari kesalahan numerik yang dapat berakumulasi menja-

di besar.

Page 22: buku-analisis-numerik_C+
Page 23: buku-analisis-numerik_C+

5Floating Point - Titik

Mengambang

[not complete]

5.1 Bentuk Floating Point

Suatu bilangan x berbasis β dapat di bentuk seperti berikut ini

x = ± .b1b2b3 · · ·︸ ︷︷ ︸

mantisa

×βE (5.1)

= ±r × βE (5.2)

di mana E adalah eksponen, r adalah bilangan mantisa yang ber-

nilai 1β≤ r < 1 dan b1 harus tidak sama dengan nol.

Bilangan yang terbesar dengan notasi ini adalah 0.ccccc · · · × βEmax

dan terkecil adalah 0.10000 · · · × β−Emax.

Sebagai contoh untuk bilangan biner,

x = ±q × 2E (5.3)

dengan 12≤ q < 1.

Istilah yang akan sering ditemukan dalam komputasi yaitu over-

flow dan underflow. Overflow adalah situasi di mana bilangan yang

akan ditampung oleh komputer di atas bilangan yang terbesar yang

bisa disediakan oleh komputer. Underflow terjadi jika angka di bawah

angka terkecil komputer.

Komputasi dengan komputer biasanya menggunakan 32 bits. Pem-

bagian angka biner pada 32 bit ini ditunjukkan pada Gambar 5.1.

Contoh: bagaimana komputer menyimpan angka 2? Pertama ki-

ta ubah terlebih dahulu angka 2 menjadi bilangan biner (10.0)2 dan

Page 24: buku-analisis-numerik_C+

20 Floating Point - Titik Mengambang

Gambar 5.1: Pembagian 32 bit komputer untuk menampung bilangan

floating point

kemudian ke bentuk floating point yaiut (+.1 × 2+2) dengan nilai eks-

ponen dalam bilangan biner adalah (10)2, tanda + berarti bernilai 0,

maka bilangan yang tersimpan dalam komputer yaitu 0− 0− 000010−100 · · ·0000︸ ︷︷ ︸

sebanyak 24

. Di sini tanda − digunakan hanyalah untuk memisahkan

antara tanda, ekponen dan mantisa.

Bilangan yang terbesar yang dapat disimpan 32 bit komputer yaitu

0− 0− 111111− 11111 · · ·1111︸ ︷︷ ︸

1 sebanyak 24

atau 0.9999× 2+63 1018. dan yang terkecil

adalah 0−1−111111−1 0000 · · ·0000︸ ︷︷ ︸

0 sebanyak 23

atau 0.5×2−63 10−19. 24 bit bilangan

biner setara dengan 7 digit bilangan desimal.

Bagaimana untuk angka double precision atau 64 bit. [akan ditam-

bahkan lagi]

Page 25: buku-analisis-numerik_C+

6Interpolasi

Dalam suatu pengukuran pada suatu pengamatan atau eksperimen,

kita biasanya memperoleh dua kolom data untuk sebuah variabel be-

bas (anggap saja x) pada interval [a, b] dan sebuah variabel tak bebas

(f(x)). Data yang diperoleh tentunya bukan data kontinyu, melainkan

data diskrit atau data pada titik-titik tertentu saja tergantung pada

metode dan alat yang digunakan. Tetapi, kita ingin mendapatkan ni-

lai f(x) yang tidak berada pada titik-titik data pengukuran. Nilai f(x)pada titik yang tidak sama dengan pengukuran dapat dihitung dengan

menggunakan metode interpolasi. Dengan kata lain metode interpola-

si adalah metode untuk mendapatkan nilai yang tidak diketahui dari

data.

Proses menghitung nilai f(x) untuk nilai x yang berada di dalam

interval data, [a, b], disebut dengan proses interpolasi dan jika nilai xberada di luar interval (daerah) data, disebut ekstrapolasi.

Untuk melakukan interpolasi dan ekstrapolasi, kita perlu menge-

tahui hubungan antara variabel tak bebas (f ) dengan variabel bebas x.

Ada banyak fungsi yang dapat digunakan untuk memperoleh hubung-

an ini. Setiap fungsi memiliki parameter-parameter atau koefisien-

koefisien yang harus ditentukan sehingga fungsi tersebut mendekati

atau juga melalui titik-titik data. Jumlah parameter atau koefisien

fungsi tidak mungkin lebih dari jumlah titik-titik data. Metode nume-

rik yang menggunakan jumlah parameter atau koefisien lebih sedikit

dari jumlah titik-titik data disebut dengan nama metode regresi.

Pada bab ini kita akan mempelajari metode interpolasi menggu-

nakan polinom dengan orde yang sesuai dengan jumlah titik-titik da-

ta. Jika kita menggunakan n titik data, maka kita menginterpolasi

dengan polinom orde ke n− 1.

[Cara matriks] jelaskan mengapa tidak efisien. [lihat catatan kuli-

ah, maaf belum sempat diketik]

Kita akan membahas dua cara untuk memperoleh polinom interpo-

Page 26: buku-analisis-numerik_C+

22 Interpolasi

lasi yang lebih efisien dan mudah daripada metode matriks yaitu: (a)

metode Lagrange dan (b) metode Newton. Dua metode ini kelihatan-

nya menghasilkan bentuk polinom yang berbeda, tetapi jika diuraikan

akan menghasilkan polinom yang sama. Ini dikarenakan hanya satu

polinom yang bisa dihasilkan yang melewati semua titik-titik data.

6.1 Metode Lagrange

Umpamanya ada N + 1 titik data yaitu (x0, y0), (x1, y1), (x2, y2),· · · ,(xN , yN). Kita ingin memperoleh polinom order ke N , pN (x) yang me-

lalui semua titik data. Polinom interpolasi menggunakan metode La-

grange berbentuk,

pN (x) =

N∑

k=0

ykLN,k(x) (6.1)

Polinom koefisien Lagrange LN,k(x) merupakan polinom yang di-

bentuk dengan perkalian seperti berikut ini.

LN,k(x) =N∏

j=0,j 6=k

(x− xk)

(xk − xj)(6.2)

atau jika kita jabarkan menjadi

LN,k(x) =(x− x0) · · · (x− xk−1)(x− xk+1) · · · (x− xN )

(xk − x0) · · · (xk − xk−1)(xk − xk+1) · · · (xk − xN )(6.3)

Perlu kita perhatikan dan ingat bahwa faktor (x− xk) dan (xk − xk)tidak ada pada polinom Lagrange LN,k(x).

Sebagai contoh untuk data berjumlah 3, polinom orde 2 yang diha-

silkan adalah

p2(x) = y0L2,0(x) + y1L2,1(x) + y2L2,2(x) (6.4)

L2,0(x) =(x− x1)(x− x2)

(x0 − x1)(x0 − x2)(6.5)

L2,1(x) =(x− x0)(x− x2)

(x1 − x0)(x1 − x2)(6.6)

L2,2(x) =(x− x0)(x− x1)

(x2 − x0)(x2 − x1)(6.7)

(6.8)

Page 27: buku-analisis-numerik_C+

Metode Lagrange 23

[Contoh penggunaan][lihat di catatan kuliah]

Contoh program bahasa c ditunjukkan pada Listing 6.1.

1 /∗ lagrange . c

2 Program interpo las i dengan metode Lagrangge

3 I Wayan Sudiarta

4 updated : 20 Pebruari 2012

5

6 Catatan :

7 Diberikan data sebanyang n , x [ i ] dan y [ i ]

8 Diinterpo lasi dengan metode Lagrange p n ( x ) = sum i y [ i ]L[ i ] (

x )

9 program i n i menghitung n i l a i p n ( a ) , untuk a yang diberikan .

10

11 Referensi :

12 J .H. Mathews, (1992) , Numerical methods fo r mathematics ,

science , and

13 engineering , 2nd , Prentice−Hall , New Jersey .

14 ∗ /

15 #include <std io . h>

16

17 #def ine NMAX 200

18

19 int main ( )

20 {21 int k , j , n ;

22 f l o a t x [NMAX] , y [NMAX] ;

23 f l o a t a , pa ;

24 f l o a t t ;

25

26 pr in t f ( ” Masukkan n i l a i n\n” ) ;

27 scanf ( ”%d” ,&n) ;

28

29 / / input data x [ i ] dan f [ i ]

30 f o r (k=0;k<=n ; k++){31 scanf ( ”%f ” ,&x [k ] ) ;

32 scanf ( ”%f ” ,&y [k ] ) ;

33 }34

35 pr in t f ( ” Masukkan n i l a i x yang diinginkan \n” ) ;

36 scanf ( ”%f ” ,&a ) ;

37

38 / / Hitung p n ( a )

39 pa = 0;

40 f o r (k=0; k<= n ; k++){41 t = y [k ] ;

42 / / Hitung L k ( a )

43 f o r ( j =0; j<= n ; j ++){44 i f (k!= j ) {

Page 28: buku-analisis-numerik_C+

24 Interpolasi

45 t ∗= ( a−x [ j ] ) / ( x [k]−x [ j ] ) ;

46 }47 }48 pa += t ;

49 }50

51 / / Output

52 pr in t f ( ” data input\n” ) ;

53 pr in t f ( ”n = %d \n” , n) ;

54 pr in t f ( ”====================\n” ) ;

55 f o r (k=0;k<=n ; k++){56 pr in t f ( ” %f %f \n” , x [k ] , y [k ] ) ;

57 }58 pr in t f ( ” a = %f \n” , a ) ;

59 pr in t f ( ” n i l a i p n ( a ) adalah %f \n” , pa ) ;

60

61 return 0;

62 }

Listing 6.1: Program interpolasi dengan polinom metode Lagrange

6.2 Metode Newton

Metode interpolasi Lagrange membutuhkan banyak operasi aritmati-

ka untuk menghitungnya. Jika kita ingin menambah titik data tidak

mudah dilakukan.

Bagaimana cara yang lebih efisien? dengan menggunakan metode

beda dibagi Newton. Mungkin istilah beda dibagi agak susah dime-

ngerti awalnya. Nanti kita jelaskan mengapa dinamakan demikian.

Sebelum kita mempelajari bagaimana mendapatkan polinom inter-

polasi, mari kita definisikan notasi baru yaitu

f [x0] = y0 (6.9)

Perhatikan kita menggunakan tanda kurung persegi [] untuk mem-

bedakan dengan tanda kurung ().

Untuk memulai, kita mendefinisikan terlebih dahulu suatu nilai

yang merupakan beda dua nilai f [] dibagi dengan beda dua posisi xyaitu

f [x0, x1] =f [x1]− f [x0]

x1 − x0(6.10)

f [x0, x1, x2] =f [x1, x2]− f [x0, x1]

x2 − x0(6.11)

Page 29: buku-analisis-numerik_C+

Metode Newton 25

f [x0, x1, x2, x3] =f [x1, x2, x3]− f [x0, x1, x2]

x3 − x0(6.12)

f [x0, x1, · · · , xk−1, xk] =f [x1, x2, · · · , xk]− f [x0, x1, · · · , xk−1]

xk − x0(6.13)

dan seterusnya.

Untuk mempermudah perhitungan, kita biasanya dihitung meng-

gunakan tabel seperti berikut ini.

Tabel 6.1: Tabel kalkulasi menggunakan metode Newton

xk f [xk] f [xk, xk+1] f [xk, xk+1, xk+2]x0 f [x0] = y0

f [x0, x1] =f [x1]−f [x0]

x1−x0

x1 f [x1] = y1 f [x0, x1, x2] =f [x1,x2]−f [x0,x1]

x2−x0

f [x1, x2] =f [x2]−f [x1]

x2−x1

x2 f [x2] = y2 f [x1, x2, x3] =f [x2,x3]−f [x1,x2]

x3−x1

f [x2, x3] =f [x3]−f [x2]

x3−x2

x3 f [x3] = y3 f [x2, x3, x4] =f [x3,x4]−f [x2,x3]

x4−x2

f [x0, x1] =f [x1]−f [x0]

x1−x0

x4 f [x4] = y4

Setelah mendapatkan nilai-nilai beda dibagi f [, , , ], kita mempero-

leh interpolasi polinom Newton dengan rumus

pN(x) = f [x0] + (x− x0)f [x0, x1] + (x− x0)(x− x1)f [x0, x1, x2]

+ · · ·+ f [x0, x1, · · · , xN ]N−1∏

k=0

(x− xk) (6.14)

Sebagai contoh untuk polinom interpolasi orde ke 3,

pN(x) = f [x0] + (x− x0)f [x0, x1] + (x− x0)(x− x1)f [x0, x1, x2]

+ (x− x0)(x− x1)(x− x2)f [x0, x1, x2, x3] (6.15)

Nilai polinom Newton pN(x) dapat dihitung dengan menggunakan

teknik seperti Metode Horner, sebagai contoh untuk polinom orde ke 3

yaitu

Page 30: buku-analisis-numerik_C+

26 Interpolasi

pN(x) = [f[3](x− x2) + f[2]](x− x1) + f[1]](x− x0) + f [x0] (6.16)

Untuk mempersingkat notasi, kita menggunakan f[1] = f [x0, x1],f[2] = f [x0, x1, x2] dan f[3] = f [x0, x1, x2, x3].

Dihitung dengan cara

s3 = f[3]

s2 = s3(x− x2) + f[2]

s1 = s2(x− x1) + f[1]

s0 = s1(x− x0) + f [x0]

(6.17)

[contoh tabel][lihat di catatan kuliah]

1 /∗ newton interp . c

2 Program interpo las i dengan metode Newton

3 I Wayan Sudiarta

4 updated : 20 Pebruari 2012

5

6 Catatan :

7 Diberikan data sebanyang n , x [ i ] dan y [ i ]

8 Diinterpo lasi dengan metode Newton p n ( x )

9 program i n i menghitung n i l a i p n ( a ) , untuk a yang diberikan .

10

11 Referensi :

12 J .H. Mathews, (1992) , Numerical methods fo r mathematics ,

science , and

13 engineering , 2nd , Prentice−Hall , New Jersey .

14 ∗ /

15 #include <std io . h>

16

17 #def ine NMAX 200

18

19 int main ( )

20 {21 int k , j , n ;

22 f l o a t x [NMAX] , y [NMAX] ;

23 f l o a t dd [NMAX] [NMAX] ;

24 f l o a t a , pa ;

25 f l o a t t ;

26

27 pr in t f ( ” Masukkan n i l a i n\n” ) ;

28 scanf ( ”%d” ,&n) ;

29

30 / / input data x [k ] dan f [k ]

Page 31: buku-analisis-numerik_C+

Error 27

31 f o r (k=0;k<=n ; k++){32 scanf ( ”%f ” ,&x [k ] ) ;

33 scanf ( ”%f ” ,&y [k ] ) ;

34 }35

36 pr in t f ( ” Masukkan n i l a i x yang diinginkan \n” ) ;

37 scanf ( ”%f ” ,&a ) ;

38

39 / / hitung dd [k ] [ 0 ]

40 f o r (k=0; k<= n ; k++){41 dd [k ] [ 0 ] = y [k ] ;

42 }43 / / hitung dd [k ] [ j ]

44 f o r ( j =1; j<= n ; j ++){45 f o r (k= j ; k<= n ; k++){46 dd [k ] [ j ] = ( dd [k ] [ j −1] − dd [k−1][ j −1]) / ( x [k]−x [k−j ] ) ;

47 }48 }49

50 / / Hitung p n ( a )

51 pa = dd [n ] [ n ] ;

52 f o r (k=(n−1) ; k >= 0; k−−){53 pa = pa∗ (a−x [k ] ) + dd [k ] [ k ] ;

54 }55

56 / / Output

57 pr in t f ( ” data input\n” ) ;

58 pr in t f ( ”n = %d \n” , n ) ;

59 pr in t f ( ”====================\n” ) ;

60 f o r (k=0;k<=n ; k++){61 pr in t f ( ” %f %f \n” , x [k ] , y [k ] ) ;

62 }63 pr in t f ( ” a = %f \n” , a ) ;

64 pr in t f ( ” n i l a i p n ( a ) adalah %f \n” , pa ) ;

65

66 return 0;

67 }

Listing 6.2: Program interpolasi dengan polinom metode beda dibagi

Newton

6.3 Error

Besarnya nilai kesalahan yang ditimbulkan dari penggunaan polino-

mial order ke N, pN(x) untuk pendekatan fungsi f(x) diberikan oleh

Page 32: buku-analisis-numerik_C+

28 Interpolasi

E(x) =f (N+1)(c)

(N + 1)!

N∏

k=0

(x− xk) (6.18)

6.4 Fenomena Runge

jika order N polinomial di besarkan, tentu kita berharap bahwa poli-

nom akan mendekati fungsi sebenarnya. tetapi tidak demikian.

Non convergence ini disebut dengan fenomena Runge. Ini disebabk-

an oleh penggunaan spasi yang sama.

coba dengan menggunakan pendekatan 3 5 dan seterusnya

Gambar 6.1: Pendekatan polinomial yang menghasilkan fenomena Ru-

nge

Page 33: buku-analisis-numerik_C+

7Persamaan Nonlinier

7.1 Metode Fixed Point Iterasi

Ubah persamaan nonlinier menjadi bentuk

x = g(x) (7.1)

contoh

Kita memulai dengan sebuah nilai awal, x0, kemudian menggunak-

an iterasi,

xn+1 = g(xn) (7.2)

7.2 Metode Bisection

Metode setengah interval

f(x) = 0Kita mengambil dua titik a0 dan b0 dan sehingga f(a0)f(b0) < 0,

f(a0) < 0 dan f(b0) > 0 atau kebalikannya f(a0) > 0 dan f(b0) < 0. Ini

berarti kurva f(x) memotong sumbu x pada interval (a0, b0).Karena kita tahu solusi berada pada interval (a, b), posisi tengah-

nya berarti lebih dekat dengan solusinya, langkah berikutnya

xn =an + bn

2(7.3)

Setelah itu, kita menentukan interval di mana solusi berada.

cek f(an)f(xn) < 0 jika benar kita mengganti an+1 = an dan bn+1 =xn jika tidak berarti f(xn)f(bn) < 0 an+1 = xn dan bn+1 = bn

Contoh

Page 34: buku-analisis-numerik_C+

30 Persamaan Nonlinier

7.3 Metode Newton

Jika diketahui turunannya f ′(x)

xn+1 = xn −f(x)

f ′(x)(7.4)

7.4 Metode Secant

Menggunakan aproksimasi turunan. kita mulai dengan dua titik awal

yaitu x0 dan x1. Aproksimasi turunannya adalah

f ′(xn) =f(xn)− f(xn−1)

xn − xn−1(7.5)

xn+1 = xn −f(x)(xn − xn−1)

f(xn)− f(xn−1)(7.6)

7.5 Metode Regula-Falsi

Menggabungkan metode secant dan bisection.

Page 35: buku-analisis-numerik_C+

8Matlab atau Octave

Pada bab ini kita akan belajar secara singkat tentang MATLAB dan

Octave. Tentunya tidak semua hal yang diperlukan untuk pengolahan

data dibahas semua di Bab ini, melainkan akan dijelaskan pada bab

selanjut sesuai dengan materi pada Babnya.

MATLAB atau singkatan dari MATrix LABoratory, pada awalnya

merupakan program yang berguna untuk memanipulasi matriks. MAT-

LAB menggunakan bentuk matriks sebagai basis data yang utama da-

lam komputasinya. Dengan kata lain, setiap perhitungan, MATLAB

memproses skalar, vektor dan Matriks. Karena data numerik berupa

vektor atau matriks, maka MATLAB sangatlah sesuai digunakan un-

tuk analisis data. Di samping itu pula, MATLAB telah mengalami ba-

nyak perkembangan dan sekarang tidak hanya menyediakan banyak

kemudahan untuk memanipulasi dan menampilkan data berupa gra-

fik atau citra dan animasi, tetapi juga mempunyai fasilitas simbolic

programming, pengambilan data, simulink dan kompilasi program.

MATLAB dengan bahasa pemrograman yang mudah, telah banyak

digunakan di berbagai bidang. Tetapi, MATLAB merupakan program

komersial dan bukan open source (sumber terbuka) yang tidak bisa

tersedia gratis bagi pengguna. Oleh karena itu sebuah program yang

menyerupai MATLAB telah dibentuk dengan nama Octave. Bahasa

pemrograman yang digunakan Octave hampir sama atau kompatibel

dengan MATLAB. Ini berarti dengan mempelajari Octave, kita juga

belajar MATLAB. Satu kelemahan Octave adalah Octave hanya untuk

komputasi numerik saja dan tidak menyediakan fasilitas user interfa-

ce untuk memanipulasi grafik. Selain itu fungsi-fungsi yang tersedia

di Octave tidak selengkap yang ada di Matlab. Walaupun demikian,

ini tidak membatasi kegunaannya, karena pengolahan data dapat di-

lakukan tanpa menggunakan fasilitas user interface dan fungsi-fungsi

akan terus ditambah sehingga Octave mampu menjalankan MATLAB

script.

Page 36: buku-analisis-numerik_C+

32 Matlab atau Octave

Dengan alasan biaya, program Octave akan digunakan sepenuh-

nya dalam buku ini karena program Octave tersedia gratis dan dapat

diunduh langsung di internet. Untuk kemudahan pembaca agar bisa

langsung mencoba program Octave, bersamaan dengan buku ini di-

lengkapi dengan CDROM yang mengandung Octave versi 3.2.3. Octa-

ve dengan versi terbaru dapat diunduh di www.octave.org and octa-

ve.sourceforge.net. Di samping gratis, penggunaan Octave berguna

untuk mengurangi pemakaian software MATLAB bajakan yang ilegal.

Setelah program Octave terinstal di Windows atau Linux, untuk

menjalankan Octave dengan mengklik ikon Octave. Pada linux, men-

jalankan Octave dapat juga dilakukan pada command line dengam

mengetik octave. Tampilan awal yang dimunculkan di layar adalah

seperti yang ditunjukkan pada Gambar AA. Octave hanya menyediak-

an jendela command line untuk memasukkan perintah-perintah Octa-

ve. Jadi di sini kita akan selalu bekerja pada command prompt yang

dimulai dengan tanda > . Pada MATLAB, command prompt diawali

dengan tanda >> atau EDU>. Tanda ini menunjukkan bahwa Octa-

ve atau MATLAB telah siap menunggu pengguna untuk memasukk-

an perintah. Untuk mengakhiri program Octave atau Matlab dengan

mengetik perintah quit atau exit . Ini bisa juga dilakukan dengan

mengklik tombol silang atau exit disebelah kiri atas atau kanan atas

pada jendela program.

Untuk membantu kita dalam penggunaan perintah atau fungsi,

MATLAB atau Octave menyediakan perintah help . Cara penggunaan

help seperti help sin , di sini kita menambahkan nama perintah

atau fungsi yang akan kita lihat penjelasan tentang perintah tersebut.

Selain itu MATLAB dan Octave menyediakan perintah doc yang akan

menampilkan dokumentasi atau buku tentang MATLAB atau Octave.

Perintah penting lain adalah edit yang akan memanggil sebuah

editor teks. Perintah ini berguna untuk membuat dan mengedit script

file dan data file. Penggunaan perintah ini dengan menambahkan na-

ma file setelah perintah edit seperti edit data.txt atau edit fungsi.m .

Jika tidak diberikan nama file, perintah edit akan menampilkan edi-

tornya saja yang dapat digunakan untuk membuat file teks baru.

Sebelum kita mempelajari fungsi-fungsi dan bahasa pemrogram-

an untuk MATLAB atau Octave, kita akan mempelajari terlebih da-

hulu notasi dan konvensi atau aturan-aturan yang digunakan oleh

MATLAB. Ini berguna untuk mengurangi kesalahan dalam pembuat-

an script MATLAB.

Page 37: buku-analisis-numerik_C+

Notasi dan konvensi 33

Gambar 8.1: Jendela perintah atau command window untuk mema-

sukkan perintah-perintah Octave. Jendela perintah yang hampir sa-

ma juga digunakan oleh MATLAB

8.1 Notasi dan konvensi

Konvensi yang pertama adalah menggunakan tombol enter untuk ek-

sekusi atau menjalankan perintah yang telah diketik pada command

line. Tanda-tanda penting yang digunakan oleh MATLAB adalah

1. Tanda persen ( % ) atau tanda komentar. Tanda \% menyatakan

satu baris disamping kiri tanda ini dianggap sebuah komentar,

yang berarti baris tersebut tidak dijalankan oleh MATLAB.

2. Tanda koma ( , ) digunakan untuk memisahkan dua pernyata-

an atau perintah.

3. Tanda titik koma ( ; ) digunakan untuk mengakhiri perintah

dengan tidak mengeluar hasil atau output.

4. Tanda titik tiga kali ( ... ) digunakan untuk melanjukan per-

intah ke baris berikutnya.

5. Tanda kutip satu ( ’ ’ ) dipakai untuk membentuk jenis data

string atau kata dan kalimat.

Untuk lebih jelas kita perhatikan dan coba program MATLAB ber-

ikut ini.

Page 38: buku-analisis-numerik_C+

34 Matlab atau Octave

> gaya = 10, massa = 5; %dalam satuan MKS> %hitung percepatan> percepatan = gaya/massa> %data dalam baris menggunakan ...> data = [10, 40, 500, 21, 55, 78, ...> 33, 56, 109];

8.2 Operasi Bilangan

Seperti penjelasan sebelumnya bahwa Octave atau MATLAB mampu

memproses data numerik, maka langkah pertama dalam pengguna-

an Octave dan MATLAB adalah menggunakannya sebagai kalkulator

yang lengkap dengan fungsi-fungsi matematis. Operasi-operasi mate-

matis untuk penjumlahan (+), pengurangan (- ), perkalian (* ), pemba-

gian (/ ) dan pangkat (ˆ ) dapat dengan mudah dilakukan seperti con-

toh berikut ini. Dalam setiap perhitungan kita perlu mengingat bahwa

perhitungan dalam Octave atau MATLAB menggunakan presisi angka

bertipe double .

> 23 + 15> 23 - 15> 23 * 15> 23/15> 23ˆ(1/5)> sin(1.59)> exp(-1)> cosh(2)

8.3 Variabel dan Konstanta

Seperti halnya bahasa pemrograman lain, dalam penyelesaian perma-

salahan menggunakan Octave dan MATLAB kita perlu menggunakan

variabel dalam memanipulasi data. Variabel-variabel dalam MATLAB

harus dimulai dengan huruf dan tidak boleh diawali dengan angka

atau tanda-tanda lain. Huruf-huruf berikutnya dapat berupa huruf

atau angka. Variabel berhuruf besar dibedakan dengan variabel ber-

huruf kecil.

Disamping variabel, MATLAB dan Octave telah mempunyai variabel-

variabel yang berisi atau bernilai konstan atau konstanta. Bebera-

Page 39: buku-analisis-numerik_C+

Fungsi-Fungsi Matematis 35

pa konstanta-konstanta yang penting dalam komputasi numerik di bi-

dang fisika yaitu

1. pi adalah konstanta bilangan π = 3.1415926....

2. eps adalah bilangan yang menentukan presisi perhitungan, 2−25.

3. inf adalah bilangan tak hingga atau infiniti, ∞.

4. i dan j adalah bilangan imajiner i =√−1.

5. nan adalah singkatan dari not a number yang berarti bukan

sebuah bilangan/angka.

6. nargin adalah jumlah argumen input fungsi.

7. nargout adalah jumlah argumen output fungsi.

8. realmin dan realmax adalah bilangan riil terkecil dan terbesar

yang dipakai pada komputasi yang sesuai dengan akurasi pada

tipedata yang digunakan.

Sebagai contoh berikut ini

> tan(pi/3)> 200 * eps> 1 + 2* i> 0.0/0.0 %akan menghasilkan NaN> 1.0/0.0 %akan menghasilkan inf> realmin> realmax

Nama-nama fungsi yang disediakan oleh MATLAB dan Octave ti-

dak direserved. Jadi kita bisa menggantinya dengan definisi fungsi

yang lain. Sebagai contoh i = 2 , untuk mengembalikan ke definisi

semula, kita menggunakan clear i .

8.4 Fungsi-Fungsi Matematis

Untuk melengkapi manipulasi data, Octave dan MATLAB telah me-

nyediakan fungsi-fungsi matematika yang umum seperti abs(x) , acos(x) ,angle(x) ,

ceil(x) , exp(x) , fix(x) , floor(x) , gcd(x) ,imag(x) , real(x) ,

round(x) sign(x) , sqrt(x) , sin(x) dan sinh(x) .

Penjelasan sedikit disini tentang fungsi-fungsi yang penting dan

fungsi lain dilihat di lampiran.

Page 40: buku-analisis-numerik_C+

36 Matlab atau Octave

8.5 Vektor dan Matriks

Sebagai dasar perhitungan, MATLAB dan octave memberikan fasili-

tas untuk manipulasi vektor dan matriks. Sebelum mengoperasikan

matriks, kita terlebih dahulu mempelajari bagaimana mendefinisikan

atau memasukkan data yang berupa vektor dan matriks. Untuk mem-

bentuk vektor dan matriks MATLAB dan Octave menggunakan tanda

[ ] untuk awal dan akhir vektor atau matriks. Setiap elemen

dalam satu baris dipisahkan dengan menggunakan tanda koma ( , )

atau spasi. Sedangkan untuk memisahkan antara baris yang berbeda

MATLAB dan Octave menggunakan tanda titik koma ( ; ). Contoh

membuat vektor dan matriks diberikan berikut ini.

> % membuat sebuah vektor (1x3)> a = [1 2 5]> b = [2,3,5]> % membuat sebuah vektor (3x1)> c = [1;2;5]> % membuat matriks (3x3)> d = [1,4,5; 3,2,7; 1,0,3]

Untuk mengakses elemen matriks dan vektor dengan menggunak-

an nama variabel dan diikuti tanda () yang menyatakan elemen. Seba-

gai konvensi yang menyatakan semua elemen dalam baris atau kolom,

MATLAB dan Octave menggunakan tanda titik dua ( : ). Untuk le-

bih jelasnya, kita perhatikan contoh berikut ini.

> a = [2 3 4 5; 1 2 2 7; 4,4,2,1];% memilih elemen (1,1)> a(1,1)% memilih satu baris, baris pertama, 1% tanda : menyatakan semua> a(1,:)% memilih satu kolom, kolom kedua, 2> a(:,2)

Jadi tanda yang penting diingat adalah tanda : yang menyatak-

an semua atau deretan dalam banyak operasi matriks. Sebagai contoh

di atas a(:,1) adalah semua baris pada kolom pertama. Untuk me-

nyatakan deretan atau bagian dari matriks, MATLAB menggunakan

notasi i:j:k di mana indeks i adalah indeks awal, j adalah pe-

nambahan dan k adalah indeks akhir. Sebagai contoh deretan 1:2:10

Page 41: buku-analisis-numerik_C+

Vektor dan Matriks 37

menyatakan deretan 1, 3, 5, 7, 9 , jadi jika kita menggunakan

v(1:2:10) menyatakan kita memilih deretan elemen a(1), a(3), a(5), a(7)dan a(9) . Deretan dengan nilai penambahan 1 dapat ditulis tanpa

penambahan, jadi 1:1:10 dapat ditulis dengan 1:10 . Supaya kita le-

bih mengerti, mari kita kerjakan perintah berikut ini.

> v = [10 20 30 40 50 60 70 80 90 100]> a = v(1:3:10)> b = v(2:2:10)

Perintah v(1:3:10) menghasilkan vektor dengan elemen [10 40 70 100]dan perintah v(2:2:20) menghasilkan vektor [20 40 60 80 100] .

Matriks atau array dapat dibuat dengan menggabungkan beberapa

vektor atau matriks.

> a = [ 1 3 6 ];> b = [ 4 6 9 10];> c = [a,b,a];

8.5.1 Fungsi-fungsi untuk Matriks

Untuk berbagai analisis data, di samping menyediakan fungsi-fungsi

matematis yang sudah disebutkan sebelumnya, MATLAB dan Octave

juga menyediakan fungsi-fungsi khusus untuk operasi matriks. Fungsi-

fungsi untuk membentuk dan memanipulasi matriks yang sering digu-

nakan adalah

1. ones(m,n) digunakan untuk membentuk matriks dengan ukur-

an m × n dengan semua elemen bernilai satu (1). Untuk matriks

kuadrat kita dapat menulis fungsi dengan satu input ones(n) .

2. zeros(m,n) seperti dengan fungsi ones(m) , fungsi ini memben-

tuk matriks m×n tetapi dengan semua elemen bernilai zeros atau

nol.

3. eye(n) digunakan untuk membuat matriks satu atau identitas

(I), atau matriks kuadrat n × n dengan nilai elemen semua nol

terkecuali elemen diagonal bernilai satu.

4. inv(M) adalah fungsi untuk mendapatkan invers matriks M. Per-

lu diingat bahwa matriks M adalah matriks kuadrat.

5. eig(M) adalah fungsi untuk mendapatkan nilai dan vektor eigen

dari matriks M.

Page 42: buku-analisis-numerik_C+

38 Matlab atau Octave

6. det(M) digunakan untuk menghitung determinan matriks kua-

drat M.

7. rand(n,m) digunakan untuk membuat matriks m × n dengan

elemen bernilai acak atau random dengan distribusi uniform dan

dari angka (0, 1).

8. randn(n,m) digunakan untuk membuat matriks m × n dengan

elemen bernilai acak atau random dengan distribusi normal de-

ngan rata nol dan variance satu.

9. chol(M) digunakan untuk mendapatkan Choleksky faktorisasi

matriks.

8.5.2 Operasi Matriks

Semua operasi-operasi matriks dapat dilakukan di MATLAB dan Octa-

ve. Untuk mempermudah penjelasan, kita mengumpamakan mempu-

nyai matriks A dan B. Operasi matriks yang dapat dilakukan adalah

1. Operasi transpose dengan menggunakan tanda kutip satu ( ).

A = B; membuat matriks A adalah transpos dari matriks B.

2. Operasi elemen per elemen. Ini dapat dilakukan dengan membe-

ri tanda titik ( . ) dan operasi yang diingikan. Sebagai contoh

C = A. * B menghasilkan matriks C dengan elemen bernilai hasil

kali antara elemen A di kali elemen B. D = A.ˆ3 menghasilk-

an matriks dengan elemen bernilai elemen A dipangkat 3 atau

setiap elemen A dipangkatkan 3. Fungsi-fungsi matematis jika

dioperasikan pada sebuah matriks akan menghasilkan matriks

dengan nilai fungsi(elemen). Umapamanya F = sin(A) meng-

hasilkan matriks dengan elemen sin(elemen A), jadi setiap ele-

men A dioperasikan fungsi sin().

3. perkalian matriks menggunakan tanda bintang ( * ), seperti C = A* B.

Tentunya kita harus memperhatikan ukuran matriks A dan B su-

paya perkalian matriks dapat dilakukan. Jika tidak sesuai maka

kita akan mendapatkan error.

4. operator garis miring ( \ ) berguna untuk mencari solusi persa-

maan linear y = A ∗ x di mana x dan y adalah vektor. Jadi dalam

MATLAB solusi untuk vektor x diperoleh dengan x = A\y .

Page 43: buku-analisis-numerik_C+

Input dan Output 39

8.6 Input dan Output

Perintah input untuk mendapatkan masukkan dari keyboard, contoh

r = input(Nilai jari-jari =) Perintah disp untuk menampikan di layar

disp(hasil perhitungan =); disp(2*pi*r)

8.7 Pemrograman

Dalam pengolahan data kita akan sering melakukan perhitungan berulang-

ulang atau perhitungan dengan berbagai persyaratan. Untuk hal ini

MATLAB dan Octave memberikan fasilitas pengulangan menggunak-

an fungsi for dan percabangan atau persyaratan dengan fungsi

if .

8.7.1 Pengulangan for

Untuk pengulangan sederhana, kita membutuhkan tiga input yaitu

nilai awal, penambahan, dan nilai batas akhir. Kita perhatikan contoh

berikut ini.

> s = 0;> for n = 1:2:10> s = s + nˆ2;> end

Di sini kita melakukan pengulangan untuk n = 1, 3, 5, 7, 9 .

8.7.2 Persyaratan atau Percabangan if

> if(n==1)>a = 2;> elseif(n==2)>a = 3;> else> error(ada kesalahan);> end

8.8 Visualisasi

Sebagai tujuan akhir setiap pengolahan data, kita perlu menampilkan

data dalam bentuk gambar atau grafik. MATLAB dan Octave telah

Page 44: buku-analisis-numerik_C+

40 Matlab atau Octave

menyediakan banyak fungsi untuk pembuatan grafik. Di sini akan

dibahas sebagian dari fungsi-fungsi yang ada. Daftar fungsi-fungsi

yang lain dapat dilihat di Lampiran.

8.8.1 Grafik Dua Dimensi

Membuat grafik dua dimensi sebuah tabel atau fungsi dengan satu pe-

ubah, kita menggunakan fungsi plot . Supaya lebih mudah kita meng-

erti bagaimana membuat grafik, kita perhatikan perintah-perintah

berikut ini.

> x = 0:0.1:6 * pi;> y = cos(x);> plot(x,y);

Untuk membuat grafik satu peubah, kita memerlukan dua vektor

yaitu vektor untuk variabel peubah di sini di beri nama x dan varia-

bel dependen yaitu y. Dua perintah pertama di atas digunakan untuk

membuat dua vektor x dan y. Kemudian dari kedua data ini dibentuk

grafik dengan perintah plot(x,y) .

Untuk menambahkan keterangan sumbu x dan y dan judul grafik,

kita menggunakan perintah berikut ini.

> xlabel(’x, sudut dalam radian’);> ylabel(’cos(x)’);> title(’Fungsi Cos(x)’);

Hasil perintah-perintah di atas dapat dilihat pada Gambar 8.2.

Kita juga dapat mengubah jenis grafik dengan menambahkan opsi

"or" seperti contoh ini.

plot(x,y,’or’)

Di sini tanda o menunjukkan bahwa plotnya menggunakan tanda odan tambahan huruf r menunjukkan warna merah (r-red). Untuk me-

nampilkan grafik dengan data yang lebih banyak, kita menggunakan

perintah seperti ini

> x = 0:0.1:6 * pi;> y1 = sin(x);> y2 = cos(x);> plot(x,y1,’or’, x,y2);> xlabel(’x, sudut dalam radian’);> ylabel(’cos(x) atau sin(x)’);> title(’Fungsi Sin(x) dan Cos(x)’);

Page 45: buku-analisis-numerik_C+

Visualisasi 41

-1

-0.5

0

0.5

1

0 5 10 15 20

cos(

x)

x, sudut dalam radian

Fungsi Cos(x)

Gambar 8.2: Grafik cos(x)

dan hasil grafik ditunjukkan pada Gambar 8.3

-1

-0.5

0

0.5

1

0 5 10 15 20

cos(

x) a

tau

sin(

x)

x, sudut dalam radian

Fungsi Sin(x) dan Cos(x)

Gambar 8.3: Grafik menampilkan dua kurva, sin(x) dan cos(x)

Page 46: buku-analisis-numerik_C+

42 Matlab atau Octave

8.8.2 Grafik Tiga Dimensi

Untuk membuat grafik tiga dimensi, kita memerlukan tiga data, un-

tuk tiga sumbunya. Untuk membantu pembentukan titik-titik yang

akan diplot kita menggunakan fungsi meshgrid . Seperti contoh beri-

kut ini.

% menentukan sumbu yang diplotx = 0:0.1:5;y = 0:0.1:5;% menentukan titik-titik pada ruang dua dimensi[xx,yy] = meshgrid(x,y);% tulis fungsi yang akan diplotzz = sin(xx. * yy);% plot meshmesh(xx,yy,zz);

Hasil grafik menggunakan perintah mesh dapat dilihat di Gambar

8.4.

0

1

2

3

4

5

0

1

2

3

4

5-1

-0.5

0

0.5

1

Gambar 8.4: Grafik tiga dimensi menggunakan perintah mesh

Page 47: buku-analisis-numerik_C+

Visualisasi 43

8.8.3 Grafik Contour

Selain plot menggunakan mesh, grafik dua dimensi menggunakan ga-

ris kontur sering digunakan di fisika. menggunakan fungsi contour .

% menentukan sumbu yang diplotx = 0:0.1:5;y = 0:0.1:5;% menentukan titik-titik pada ruang dua dimensi[xx,yy] = meshgrid(x,y);% tulis fungsi yang akan diplotzz = sin(xx. * yy);% plot contourcontour(xx,yy,zz)

kita juga dapat menggunakan contourf(xx,yy,zz) untuk con-

tour dengan daerah yang diwarnai. Dua hasil grafik untuk perintah

contour dan contourf ditunjukkan pada Gambar 8.5 dan 8.6.

0

1

2

3

4

5

0 1 2 3 4 5

Gambar 8.5: Hasil grafik menggunakan contour

selain grafik ditampilkan di layar, kita dapat menyimpan hasil gra-

fik ke dalam bentuk file dengan menggunakan perintah print seperti

berikut ini.

> print -deps output.eps

Page 48: buku-analisis-numerik_C+

44 Matlab atau Octave

0

1

2

3

4

5

0 1 2 3 4 5

Gambar 8.6: Hasil grafik menggunakan contourf

selain itu, MATLAB dan Octave memberikan fasilitas membuat

multi grafik dengan menggunakan fungsi subplot(m,n,k) . Di sini

nilai mmenentukan jumlah baris dan n menentukan jumlah kolom da-

lam grafik multi ini. dan sedangkan k menentukan letak grafik pada

tabel.

> x = -2:0.1:2;> y = -2:0.1:2;> [xx,yy] = meshgrid(x,y);> zz = exp(-1.0 * (xx.ˆ2+yy.ˆ2);> subplot(2,2,1); mesh(xx,yy,zz);> subplot(2,2,2); surf(xx,yy,zz);> subplot(2,2,3); contour(xx,yy,zz);> subplot(2,2,4); contourf(xx,yy,zz);> print -deps output.eps

8.9 Input Output Data

Dalam pengolahan data, kita akan sering memasukkan atau membaca

data dari file menggunakan MATLAB dan Octave. Tentunya ini ber-

guna untuk mempercepat proses pengolahan data tanpa harus mema-

Page 49: buku-analisis-numerik_C+

Input Output Data 45

-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

-2-1.5

-1-0.5

00.5

11.5

2

-2-1.5

-1-0.5

00.5

11.5

20

0.2

0.4

0.6

0.8

1

-2-1.5

-1-0.5

00.5

11.5

2

-2-1.5

-1-0.5

00.5

11.5

20

0.2

0.4

0.6

0.8

1

Gambar 8.7: Empat grafik ditampilkan sekaligus menggunakan per-

intah subplot

sukkan data satu-persatu. Pada Bab ini, kita mempelajari cara mem-

baca untuk file yang berupa teks dab berbentuk tabel angka numerik

saja. Untuk membaca jenis file dengan format yang berbeda akan dije-

laskan di Bab-Bab selanjutnya dan perintah-perintah di berikan pada

Lampiran.

Untuk membaca data, kita menggunakan perintah atau fungsi loadseperti berikut ini. Umpamanya kita memiliki data berupa file dengan

format teks seperti berikut ini dan diberi nama data.txt. Untuk mem-

baca file data.txt kita menggunakan perintah

> d = load(data.txt)

Hasil pembacaan file data.txt disimpan dalam matriks d. Dan

selanjutnya kita dapat mengolah data yang ada pada matriks d ini.

Untuk menyimpan data hasi perhitungan, MATLAB dan Octave

telah memberikan fungsi/perintah save . Coba perhatikan perintah

berikut ini.

% Matriks M hasil kalkulasi

Page 50: buku-analisis-numerik_C+

46 Matlab atau Octave

M = [ 1:3; 4:6; 7:9 ];% Simpan dalam file outputsave -ascii output.txt M