Buku Analisis Numerik

download Buku Analisis Numerik

of 50

Transcript of Buku Analisis Numerik

  • 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

  • ii

  • 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

  • ii Daftar Isi

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

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

  • 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

  • 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) =

    nk=0

    akxk1

    = a0 + a1x+ a2x2 + + anxn (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 untukfungsi 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-

  • 4 Aproksimasi Maclaurin dan Taylor

    ka kita lakukan turunan berturut-turut untuk fungsi cos(x) dan deretpangkatnya, kita mendapatkan,

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

    3 + a4x4

    d cos(x)

    dx= sin(x) = a1 + 2a2x+ 3a3x2 + 4a4x3

    d2 cos(x)

    dx2= cos(x) = 2!a2 + 3 2a3x+ 4 3a4x2

    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 12!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 lebihumum 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)

  • 5Jika kita substitusi x = a pada persamaan-persamaan (2.10), kitamendapatkan 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 darifungsi 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 deretMaclaurin adalah

  • 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! x

    7

    7!+x9

    9!+ , berlaku pada semua x (2.27)

    cos(x) = 1 x2

    2!+x4

    4! x

    6

    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 x

    4

    4+x5

    5+ , berlaku pada 1 < x 1

    (2.31)

    tan1(x) = x x3

    2+x5

    5 x

    7

    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.

  • 7Rn(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 danlimn x

    n/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 sisaatau error pemotongan adalah

    error =

    S Nk=0

    akxk

    < |aN+1xN+1/(1 |x|) (2.38)

  • 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 + + an1xn1 + 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 danmungkin 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(an1 + anx) )) (3.2)Jadi proses menghitung nilai p(b) adalah

    pn = an

    pn1 = pnb+ an1

    pn2 = pn1b+ an2...

    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)

  • 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

    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=0; i){26 p = a [ i ] + xp ;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

  • 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: Programmenghitung nilai polinom dengan metodeHorner.

  • 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:

    (dndn1dn2 d2d1d0)10 = dn 10n + dn1 10n1 + + d1 101 + d0(4.1)

    Sedangkan, bilangan pecahan pada sistem bilangan desimal berben-

    tuk:

    (0.d1d2d3 )10 = d1 1101

    + d2 1102

    + d3 1103

    + (4.2)

    Mengikuti pola di atas, secara umum bilangan bulat pada sistem

    bilangan dengan basis berbentuk,

    (bnbn1bn2 b2b1b0) = bnn + bn1n1 + + b11 + b0 (4.3)

    dan bilangan pecahannya berbentuk:

    (0.b1b2b3 ) = b1 11

    + b2 12

    + b3 13

    + (4.4)

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

    putasi maupun pada bidang elektronika dapat dilihat pada Tabel 4.1.

  • 14 Sistem Bilangan

    Tabel 4.1: Jenis-Jenis Sistem Bilangan

    Sistem Bilangan Nilai ContohBiner 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 = 3p1 = 3 2 + 0 = 6p0 = 6 2 + 1 = (13)10 (4.6)

    Bilangan pecahan pada sistem bilangan desimal berbentuk:

    (0.011)2 = 0 121

    + 1 122

    + 1 123

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

  • 15

    Dengan metode Horner,

    p3 = 1

    p2 = 1 0.5 + 1 = 1.5p1 = 1.5 0.5 + 0 = 0.75p0 = 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(bnbn1 b1b0), maka

    x = (bnbn1bn2 b2b1b0)= bn

    n + bn1n1 + + b11 + b0 (4.10)

    Jika x dibagi dengan , kita memperoleh,

    x

    = bn

    n1 + bn1n2 + + b1

    Bilangan Bulat

    +b0

    (4.11)

    Jadi b0 merupakan sisa ketika x dibagi dengan . Bilangan bulatdari x/ yang dihasilkan kemudian dibagi lagi dengan dan mengha-silkan sisa yaitu b1. Begitu pula selanjutnya, sehingga semua bilanganbi 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 ubahmenjadi bilangan (0.b1b2 )

    y = (b1b2b3 )= b1 1

    1+ b2 1

    2+ b3 1

    3+ (4.12)

  • 16 Sistem Bilangan

    y = b1Bil.Bulat

    + b2 1+ b3 1

    2+

    Bilangan pecahan

    (4.13)

    Jadi b1 merupakan bilangan bulat ketika y dikali dengan . Bi-langan pecahan y yang dihasilkan kemudian dikalikan lagi dengan dan menghasilkan bilangan bulat yaitu b2. Begitu pula selanjutnya,sehingga semua bilangan pecahan bj 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)

  • 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.

  • 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 Emaxdan terkecil adalah 0.10000 Emax.

    Sebagai contoh untuk bilangan biner,

    x = q 2E (5.3)dengan 1

    2 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

  • 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 000010100 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 011111111 0000 0000 0 sebanyak 23

    atau 0.5263 1019. 24 bit bilangan

    biner setara dengan 7 digit bilangan desimal.

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

    bahkan lagi]

  • 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, melainkandata 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 dalaminterval 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 menginterpolasidengan 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-

  • 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) =

    Nk=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 xk1)(x xk+1) (x xN )

    (xk x0) (xk xk1)(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)

  • Metode Lagrange 23

    [Contoh penggunaan][lihat di catatan kuliah]

    Contoh program bahasa c ditunjukkan pada Listing 6.1.

    1 / lagrange . c2 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 in 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 , PrenticeHall , New Jersey .14 /15 #include

    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

  • 24 Interpolasi

    45 t = (ax [ 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

  • Metode Newton 25

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

    x3 x0 (6.12)

    f [x0, x1, , xk1, xk] = f [x1, x2, , xk] f [x0, x1, , xk1]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]

    x1x0

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

    x2x0

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

    x2x1

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

    x3x1

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

    x3x2

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

    x4x2

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

    x1x0

    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 ]N1k=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 menggunakanteknik seperti Metode Horner, sebagai contoh untuk polinom orde ke 3

    yaitu

  • 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 . c2 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 in 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 , PrenticeHall , New Jersey .14 /15 #include

    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 ]

  • Error 27

    31 f o r (k=0;k

  • 28 Interpolasi

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

    (N + 1)!

    Nk=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

  • 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. Iniberarti 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

  • 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(xn1)

    xn xn1 (7.5)

    xn+1 = xn f(x)(xn xn1)f(xn) f(xn1) (7.6)

    7.5 Metode Regula-Falsi

    Menggabungkan metode secant dan bisection.

  • 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 untukmemanipulasi 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.

  • 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 denganmengklik 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 penggunaanhelp seperti help sin , di sini kita menambahkan nama perintahatau fungsi yang akan kita lihat penjelasan tentang perintah tersebut.

    Selain itu MATLAB dan Octave menyediakan perintah doc yang akanmenampilkan dokumentasi atau buku tentang MATLAB atau Octave.

    Perintah penting lain adalah edit yang akan memanggil sebuaheditor 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.

  • 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 \%menyatakansatu 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 perintahdengan 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.

  • 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 MATLABmenggunakan 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 telahmempunyai variabel-

    variabel yang berisi atau bernilai konstan atau konstanta. Bebera-

  • Fungsi-Fungsi Matematis 35

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

    dang fisika yaitu

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

    2. eps adalah bilangan yang menentukan presisi perhitungan, 225.

    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 terbesaryang 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 definisisemula, 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.

  • 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 elemendalam satu baris dipisahkan dengan menggunakan tanda koma ( , )

    atau spasi. Sedangkan untuk memisahkan antara baris yang berbeda

    MATLAB dan Octave menggunakan tanda titik koma ( ; ). Contohmembuat 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

  • Vektor dan Matriks 37

    menyatakan deretan 1, 3, 5, 7, 9 , jadi jika kita menggunakanv(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 tanpapenambahan, 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 matrikskuadrat kita dapat menulis fungsi dengan satu input ones(n).

    2. zeros(m,n) seperti dengan fungsi ones(m), fungsi ini memben-tuk matriksmn tetapi dengan semua elemen bernilai zeros ataunol.

    3. eye(n) digunakan untuk membuat matriks satu atau identitas(I), atau matriks kuadrat n n dengan nilai elemen semua nolterkecuali elemen diagonal bernilai satu.

    4. inv(M) adalah fungsi untukmendapatkan invers matriksM. Per-lu diingat bahwa matriks M adalah matriks kuadrat.

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

  • 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 denganelemen bernilai acak atau random dengan distribusi uniform dan

    dari angka (0, 1).

    8. randn(n,m) digunakan untuk membuat matriks m n denganelemen bernilai acak atau random dengan distribusi normal de-

    ngan rata nol dan variance satu.

    9. chol(M) digunakan untuk mendapatkan Choleksky faktorisasimatriks.

    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.*Bmenghasilkan matriks C dengan elemen bernilai hasilkali 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 dalamMATLAB solusi untuk vektor x diperoleh dengan x = A\y.

  • 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 fungsiif .

    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 + n2;> 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

  • 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 omenunjukkan bahwa plotnya menggunakan tanda o

    dan tambahan huruf rmenunjukkan 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));

  • 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

    ) atau

    sin(x

    )

    x, sudut dalam radian

    Fungsi Sin(x) dan Cos(x)

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

  • 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 Gambar8.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

  • 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

  • 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 sininilai mmenentukan jumlah baris dan nmenentukan jumlah kolom da-

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

    > 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-

  • 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

    0 0.51 1.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

    0 0.51 1.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.

    Untukmembaca 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. Danselanjutnya 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

  • 46 Matlab atau Octave

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