Upload
doni
View
153
Download
17
Embed Size (px)
Citation preview
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