Anda di halaman 1dari 50

Metode Numerik

Menggunakan C, C++ dan


Matlab atau Octave
I Wayan Sudiarta, Ph.D
Program Studi Fisika
Fakultas Matematika dan Ilmu Pengetahuan Alam
Universitas Mataram
Februari 14, 2011
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 Grak Dua Dimensi . . . . . . . . . . . . . . . . . 40
8.8.2 Grak Tiga Dimensi . . . . . . . . . . . . . . . . . 42
ii Daftar Isi
8.8.3 Grak Contour . . . . . . . . . . . . . . . . . . . . 43
8.9 Input Output Data . . . . . . . . . . . . . . . . . . . . . . 44
1
Pendahuluan
Apa itu Metode Numerik.
Apa saja yang diperlukan sika komputasi.
Aplikasinya mencakup bidang apa saja.
proses yang dilakukan untuk sika 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
2
Aproksimasi 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 denisi sebagai berikut:
P(x) =
n

k=0
a
k
x
k1
= a
0
+ a
1
x + a
2
x
2
+ + a
n
x
n
(2.1)
.
Atau dengan kata lain, sebuah deret pangkat adalah sebuah poli-
nom dengan orde n.
Pada banyak aplikasi di bidang sika, kita mendapat kemudahan
dalam kalkulasi atapun formulasi jika kita bisa merepresentasikan se-
buah fungsi dengan sebuah deret pangkat. Disini kita berasumsi bah-
wa sebuah deret pangkat bisa ditemukan dan konvergen pada interval
yang diinginkan. Untuk lebih jelasnya, kita akan menggunakan fungsi
trigonometri cos(x) sebagai contoh. Sebuah deret tak berhingga untuk
fungsi cos(x) adalah
cos(x) = a
0
+ a
1
x + a
2
x
2
+ a
3
x
3
+ (2.2)
Kita perhatikan bahwa deret pangkat ini konvergen sekitar x = 0.
Koesien-koesien, a
k
, harus ditentukan sehingga fungsi polinom
yang dihasilkan mendekati fungsi sebenarnya. Bagaimana cara men-
dapatkan nilai a
k
? Caranya adalah dengan menggunakan turunan. Ji-
4 Aproksimasi Maclaurin dan Taylor
ka kita lakukan turunan berturut-turut untuk fungsi cos(x) dan deret
pangkatnya, kita mendapatkan,
cos(x) = a
0
+ a
1
x + a
2
x
2
+ a
3
x
3
+ a
4
x
4

d cos(x)
dx
= sin(x) = a
1
+ 2a
2
x + 3a
3
x
2
+ 4a
4
x
3

d
2
cos(x)
dx
2
= cos(x) = 2!a
2
+ 3 2a
3
x + 4 3a
4
x
2

d
3
cos(x)
dx
3
= sin(x) = 3!a
3
+ 4 3 2a
4
x

Jika kita substitusi nilai x = 0 pada fungsi cos(x) dan turunan-
turunannya, kita mendapatkan bahwa a
0
= 1, a
1
= 0, a
2
=
1
2!
, a
3
= 0,
a
4
=
1
4!
dan seterusnya. Jadi dengan menggunakan koesien-koesien
ini deret pangkat yang dihasilkan untuk fungsi cos(x) adalah
cos(x) = 1
1
2!
x
2
+
1
4!
x
4
(2.3)
(2.4)
Melihat proses di atas yang menghasilkan deret pangkat untuk se-
buah fungsi cos(x) maka pertanyaannya adalah bagaimana cara men-
dapatkan deret pangkat untuk sebuah fungsi f(x) secara umum?. Ki-
ta akan menggunakan pendekatan deret pangkat x atau yang lebih
umum deret pangkat (x a). Jadi sebuah fungsi f(x) dapat direpre-
sentasikan dengan deret pangkat (x a) pada daerah sekitar x = a
yang berbentuk
f(x) = a
0
+ a
1
(x a) + a
2
(x a)
2
+ a
3
(x a)
3
+ (2.5)
Jika kita lakukan diferensiasi atau turunan berturut-turut seperti
proses untuk cos(x), kita mendapatkan,
f(x) = a
0
+ a
1
(x a) + a
2
(x a)
2
+ a
3
(x a)
3
+ a
4
(x a)
4
+ (2.6)
f

(x) = a
1
+ 2a
2
(x a) + 3a
3
(x a)
2
+ 4a
4
(x a)
3
+ (2.7)
f

(x) = 2!a
2
+ 3 2a
3
(x a) + 4 3a
4
(x a)
2
+ (2.8)
f

(x) = 3!a
3
+ 4 3 2a
4
(x a) + (2.9)
(2.10)
5
Jika kita substitusi x = a pada persamaan-persamaan (2.10), kita
mendapatkan koesien-koesien sebagai berikut
f(x) = a
0
(2.11)
f

(x) = a
1
(2.12)
f

(x) = 2!a
2
(2.13)
f

(x) = 3!a
3
(2.14)
(2.15)
atau dengan manipulasi sederhana, kita mendapatkan,
a
0
= f(a) =
f(a)
0!
(2.16)
a
1
= f

(a) =
f

(a)
1!
(2.17)
a
2
=
f

(a)
2!
(2.18)
a
3
=
f

(a)
3!
(2.19)
= (2.20)
a
n
=
f
(n)
(a)
n!
(2.21)
Ingat bahwa notasi f
(n)
(x) adalah merupakan turunan ke n dari
fungsi f(x) dan factorial 0! = 1.
Jadi deret pangkat untuk f(x) di daerah sekitar x = a adalah
f(x) =
f(a)
0!
+
f

(a)
1!
(x a) +
f

(a)
2!
(x a)
2
(2.22)
+
f

(a)
3!
(x a)
3
+
f
(iv)
(a)
4!
(x a)
4
+ (2.23)
=

k=0
f
(k)
(a)
k!
(x a)
k
(2.24)
Deret pangkat ini diberi nama deret Taylor.
Jika nilai a = 0 pada deret Taylor di atas, disebut deret Maclaurin.
Disini deret berguna hanya untuk interval sekitar x = 0. Jadi deret
Maclaurin adalah
6 Aproksimasi Maclaurin dan Taylor
f(x) =
f(0)
0!
+
f

(0)
1!
x +
f

(0)
2!
x
2
+
f

(0)
3!
x
3
+
f
(iv)
(0)
4!
x
4
+ (2.25)
=

k=0
f
(k)
(0)
k!
x
k
(2.26)
Deret-deret Maclaurin yang penting untuk aplikasi di bidang sika
adalah sebagai berikut
sin(x) = x
x
3
3!
+
x
5
5!

x
7
7!
+
x
9
9!
+ , berlaku pada semua x (2.27)
cos(x) = 1
x
2
2!
+
x
4
4!

x
6
6!
+
x
8
8!
+ , berlaku pada semua x (2.28)
exp(x) = 1 + x +
x
2
2!
+
x
3
3!
+
x
4
4!
+
x
5
5!
+ , berlaku pada semua x
(2.29)
1
1 x
= 1 + x + x
2
+ x
3
+ x
4
+ x
5
+ , berlaku pada 1 < x < 1
(2.30)
ln(1 + x) = x
x
2
2
+
x
3
3

x
4
4
+
x
5
5
+ , berlaku pada 1 < x 1
(2.31)
tan
1
(x) = x
x
3
2
+
x
5
5

x
7
7
+
x
9
9
+ , berlaku pada 1 < x 1
(2.32)
sinh(x) = x +
x
3
3!
+
x
5
5!
+
x
7
7!
+
x
9
9!
+ , berlaku pada semua x (2.33)
cosh(x) = 1 +
x
2
2!
+
x
4
4!
+
x
6
6!
+
x
8
8!
+ , berlaku pada semua x (2.34)
(1 + x)
p
= 1 +
_
p
1
_
x +
_
p
2
_
x
2
+
_
p
3
_
x
3
+
_
p
4
_
x
4
+ , 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 mendenisikan
fungsi sisa R
n
(x) yang merupakan sisa dari fungsi f(x) dikurangi de-
ngan jumlah (n + 1) suku pertama dalam deret.
7
R
n
(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 lim
n
|R
n
(x)| = 0.
Menggunakan teorema kalkulus, persamaan sisa sama dengan
R
n
(x) =
f
(n+1)
(c)
(n + 1)!
(x a)
n+1
(2.37)
,dimana c adalah sebuah titik di antara a dan x.
Persamaan sisa ini sering digunakan untuk mengetahui konver-
gensi dari suatu deret.
Sebagai contoh konvergensi dari deret Maclaurin untuk fungsi sin(x)
atau cos(x) dapat dibuktikan dengan mengetahui bahwa |f
(n+1)
(x)| =
| sin(x)| atau |f
(n+1)
(x)| = | cos(x)|, | cos(x)| 1 atau | sin(x)| 1 dan
lim
n
x
n
/n! = 0. Jadi lim
n
|R
n
(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
a
k
x
k
adalah sebuah deret pangkat yang
konvergen pada |x| < 1 dan jika |a
k+1
| < |a
k
| untuk k > N, maka sisa
atau error pemotongan adalah
error =

S
N

k=0
a
k
x
k

< |a
N+1
x
N+1
/(1 |x|) (2.38)
3
Metode Horner
Metode Horner adalah sebuah metode atau prosedur untuk menghi-
tung sebuah polinom yang esien atau dengan jumlah operasi yang
paling sedikit.
Umpama kita mempunyai sebuah polinom yang berbentuk,
p(x) = a
0
+ a
1
x + a
2
x
2
+ + a
n1
x
n1
+ a
n
x
n
(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 esien dan
mungkin juga tidak akurat karena jika nilai x kecil akan menimbulk-
an kesalahan yang besar.
Cara yang lebih akurat dan esien adalah dengan mengubah terle-
bih dahulu polinom di atas menjadi,
p(x) = a
0
+ x(a
1
+ x(a
2
+ + x(a
n1
+ a
n
x) )) (3.2)
Jadi proses menghitung nilai p(b) adalah
p
n
= a
n
p
n1
= p
n
b + a
n1
p
n2
= p
n1
b + a
n2
.
.
.
p
1
= p
2
b + a
1
p
0
= p
1
b + a
0
(3.3)
Nilai p(b) = p
0
.
Contoh kalkulasi sebagai berikut,
p(x) = 1.0 + 2.0x + 5.0x
2
+ 3.0x
3
(3.4)
10 Metode Horner
Jadi proses menghitung nilai p(0.2) adalah
p
3
= 3.0
p
2
= (3.0)(0.2) + 5.0 = 5.6
p
1
= (5.6)(0.2) + 2.0 = 3.12
p
0
= (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 #i ncl ude <st di o . h>
3
4 #def i ne N 100
5
6 i nt main ( )
7 {
8 i nt i , n;
9 f l o at a[N] ; / / array a[N]
10 f l o at x , p ; / / ni l ai x dan ni l ai polinom
11
12 pr i nt f ( Masukkan order dari polinom n?\n ) ;
13 scanf ( %d , &n) ;
14
15 pr i nt f ( Masukkan %d koef i si en polinom order %d \n , n+1, n) ;
16 f or ( i =0; i <=n; i ++) {
17 scanf ( %f , &a[ i ] ) ;
18 }
19
20 pr i nt f ( Masukkan ni l ai x ? ) ;
21 scanf ( %f ,&x ) ;
22
23 / / hitung dengan metode horner
24 p = a[ n ] ;
25 f or ( i =( n1) ; i >=0; i ){
26 p = a[ i ] + xp ;
27 }
28
29 / / output
30 pr i nt f ( \n\n=============================\n ) ;
31 pr i nt f ( i a[ i ] \n ) ;
32 f or ( i =0; i <=n; i ++) {
33 pr i nt f ( %d %f , i , a[ i ] ) ;
34 }
35
11
36 pr i nt f ( \ n \n ) ;
37 pr i nt f ( p(%f ) = %f \n , x , p) ;
38
39 return 0;
40 }
Listing 3.1: Program menghitung nilai polinom dengan metode Horner.
4
Sistem 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:
(d
n
d
n1
d
n2
d
2
d
1
d
0
)
10
= d
n
10
n
+ d
n1
10
n1
+ + d
1
10
1
+ d
0
(4.1)
Sedangkan, bilangan pecahan pada sistem bilangan desimal berben-
tuk:
(0.d
1
d
2
d
3
)
10
= d
1

1
10
1
+ d
2

1
10
2
+ d
3

1
10
3
+ (4.2)
Mengikuti pola di atas, secara umum bilangan bulat pada sistem
bilangan dengan basis berbentuk,
(b
n
b
n1
b
n2
b
2
b
1
b
0
)

= b
n

n
+ b
n1

n1
+ + b
1

1
+ b
0
(4.3)
dan bilangan pecahannya berbentuk:
(0.b
1
b
2
b
3
)

= b
1

1

1
+ b
2

1

2
+ b
3

1

3
+ (4.4)
Jenis-jenis sistembilangan 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 Contoh
Biner 2 0,1 1111
Oktal 8 0,1,2,3,4,5,6,7 17
Desimal 10 0,1,2,3,4,5,6,7,8,9 15
Heksadesimal 16 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
a
F
a
Note: 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 2
3
+ 1 2
2
+ 0 2
1
+ 1 2
0
= (13)
10
(4.5)
Dengan metode Horner,
p
3
= 1
p
2
= 1 2 + 1 = 3
p
1
= 3 2 + 0 = 6
p
0
= 6 2 + 1 = (13)
10
(4.6)
Bilangan pecahan pada sistem bilangan desimal berbentuk:
(0.011)
2
= 0
1
2
1
+ 1
1
2
2
+ 1
1
2
3
= 0 + 0.25 + 0.125 = (0.375)
10
(4.7)
15
Dengan metode Horner,
p
3
= 1
p
2
= 1 0.5 + 1 = 1.5
p
1
= 1.5 0.5 + 0 = 0.75
p
0
= 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
(b
n
b
n1
b
1
b
0
)

, maka
x = (b
n
b
n1
b
n2
b
2
b
1
b
0
)

= b
n

n
+ b
n1

n1
+ + b
1

1
+ b
0
(4.10)
Jika x dibagi dengan , kita memperoleh,
x

= b
n

n1
+ b
n1

n2
+ + b
1
. .
Bilangan Bulat
+
b
0

(4.11)
Jadi b
0
merupakan sisa ketika x dibagi dengan . Bilangan bulat
dari x/ yang dihasilkan kemudian dibagi lagi dengan dan mengha-
silkan sisa yaitu b
1
. Begitu pula selanjutnya, sehingga semua bilangan
b
i
diperoleh.
Sedangkan untuk bagian bilangan pecahan dilakukan dengan meng-
alikan dengan dan mengambil bilangan bulatnya. Seperti sebelum-
nya, umpama kita memiliki bilangan pecahan y yang akan di ubah
menjadi bilangan (0.b
1
b
2
)

y = (b
1
b
2
b
3
)

= b
1

1

1
+ b
2

1

2
+ b
3

1

3
+ (4.12)
16 Sistem Bilangan
y = b
1
..
Bil.Bulat
+b
2

1

+ b
3

1

2
+
. .
Bilangan pecahan
(4.13)
Jadi b
1
merupakan bilangan bulat ketika y dikali dengan . Bi-
langan pecahan y yang dihasilkan kemudian dikalikan lagi dengan
dan menghasilkan bilangan bulat yaitu b
2
. Begitu pula selanjutnya,
sehingga semua bilangan pecahan b
j
diperoleh.
Contoh: Konversi bilangan (123.21)
10
= ( )
2
menjadi bilangan bi-
ner.
Kita mulai dengan mengkonversi bilangan bulatnya dengan proses
sebagai berikut.
123 dibagi 2 = 61 sisa 1
61 dibagi 2 = 30 sisa 1
30 dibagi 2 = 15 sisa 0
15 dibagi 2 = 7 sisa 1
7 dibagi 2 = 3 sisa 1
3 dibagi 2 = 1 sisa 1
1 dibagi 2 = 0 sisa 1 (4.14)
Dan kemudian kita baca dari bawah menghasilkan bilangan biner
yaitu (1111011)
2
.
Untuk bagian bilangan pecahan, kita melakukan proses sebagai
berikut,
0.21 dikali 2 = 0.42 bagian bulat = 0
0.42 dikali 2 = 0.84 bagian bulat = 0
0.84 dikali 2 = 1.68 bagian bulat = 1
0.68 dikali 2 = 1.36 bagian bulat = 1
0.36 dikali 2 = 0.72 bagian bulat = 0
0.72 dikali 2 = 1.44 bagian bulat = 1
0.44 dikali 2 = 0.88 bagian bulat = 0
0.88 dikali 2 = 1.67 bagian bulat = 1
.
.
.
dan seterusnya (4.15)
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.
5
Floating Point - Titik
Mengambang
[not complete]
5.1 Bentuk Floating Point
Suatu bilangan x berbasis dapat di bentuk seperti berikut ini
x = .b
1
b
2
b
3

. .
mantisa

E
(5.1)
= r
E
(5.2)
di mana E adalah eksponen, r adalah bilangan mantisa yang ber-
nilai
1

r < 1 dan b
1
harus tidak sama dengan nol.
Bilangan yang terbesar dengan notasi ini adalah 0.ccccc
Emax
dan terkecil adalah 0.10000
Emax
.
Sebagai contoh untuk bilangan biner,
x = q 2
E
(5.3)
dengan
1
2
q < 1.
Istilah yang akan sering ditemukan dalam komputasi yaitu over-
ow dan underow. Overow adalah situasi di mana bilangan yang
akan ditampung oleh komputer di atas bilangan yang terbesar yang
bisa disediakan oleh komputer. Underow 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
oating point
kemudian ke bentuk oating point yaiut (+.1 2
+2
) dengan nilai eks-
ponen dalam bilangan biner adalah (10)
2
, tanda + berarti bernilai 0,
maka bilangan yang tersimpan dalam komputer yaitu 0 0 000010
100 0000
. .
sebanyak 24
. Di sini tanda digunakan hanyalah untuk memisahkan
antara tanda, ekponen dan mantisa.
Bilangan yang terbesar yang dapat disimpan 32 bit komputer yaitu
0 0 111111 11111 1111
. .
1 sebanyak 24
atau 0.9999 2
+63
10
18
. dan yang terkecil
adalah 011111111 0000 0000
. .
0 sebanyak 23
atau 0.52
63
10
19
. 24 bit bilangan
biner setara dengan 7 digit bilangan desimal.
Bagaimana untuk angka double precision atau 64 bit. [akan ditam-
bahkan lagi]
6
Interpolasi
Dalam suatu pengukuran pada suatu pengamatan atau eksperimen,
kita biasanya memperoleh dua kolom data untuk sebuah variabel be-
bas (anggap saja x) pada interval [a, b] dan sebuah variabel tak bebas
(f(x)). Data yang diperoleh tentunya bukan data kontinyu, melainkan
data diskrit atau data pada titik-titik tertentu saja tergantung pada
metode dan alat yang digunakan. Tetapi, kita ingin mendapatkan ni-
lai f(x) yang tidak berada pada titik-titik data pengukuran. Nilai f(x)
pada titik yang tidak sama dengan pengukuran dapat dihitung dengan
menggunakan metode interpolasi. Dengan kata lain metode interpola-
si adalah metode untuk mendapatkan nilai yang tidak diketahui dari
data.
Proses menghitung nilai f(x) untuk nilai x yang berada di dalam
interval data, [a, b], disebut dengan proses interpolasi dan jika nilai x
berada 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 koesien-
koesien yang harus ditentukan sehingga fungsi tersebut mendekati
atau juga melalui titik-titik data. Jumlah parameter atau koesien
fungsi tidak mungkin lebih dari jumlah titik-titik data. Metode nume-
rik yang menggunakan jumlah parameter atau koesien lebih sedikit
dari jumlah titik-titik data disebut dengan nama metode regresi.
Pada bab ini kita akan mempelajari metode interpolasi menggu-
nakan polinom dengan orde yang sesuai dengan jumlah titik-titik da-
ta. Jika kita menggunakan n titik data, maka kita menginterpolasi
dengan polinom orde ke n 1.
[Cara matriks] jelaskan mengapa tidak esien. [lihat catatan kuli-
ah, maaf belum sempat diketik]
Kita akan membahas dua cara untuk memperoleh polinom interpo-
22 Interpolasi
lasi yang lebih esien 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 (x
0
, y
0
), (x
1
, y
1
), (x
2
, y
2
), ,
(x
N
, y
N
). Kita ingin memperoleh polinom order ke N, p
N
(x) yang me-
lalui semua titik data. Polinom interpolasi menggunakan metode La-
grange berbentuk,
p
N
(x) =
N

k=0
y
k
L
N,k
(x) (6.1)
Polinom koesien Lagrange L
N,k
(x) merupakan polinom yang di-
bentuk dengan perkalian seperti berikut ini.
L
N,k
(x) =
N

j=0,j=k
(x x
k
)
(x
k
x
j
)
(6.2)
atau jika kita jabarkan menjadi
L
N,k
(x) =
(x x
0
) (x x
k1
)(x x
k+1
) (x x
N
)
(x
k
x
0
) (x
k
x
k1
)(x
k
x
k+1
) (x
k
x
N
)
(6.3)
Perlu kita perhatikan dan ingat bahwa faktor (x x
k
) dan (x
k
x
k
)
tidak ada pada polinom Lagrange L
N,k
(x).
Sebagai contoh untuk data berjumlah 3, polinom orde 2 yang diha-
silkan adalah
p
2
(x) = y
0
L
2,0
(x) + y
1
L
2,1
(x) + y
2
L
2,2
(x) (6.4)
L
2,0
(x) =
(x x
1
)(x x
2
)
(x
0
x
1
)(x
0
x
2
)
(6.5)
L
2,1
(x) =
(x x
0
)(x x
2
)
(x
1
x
0
)(x
1
x
2
)
(6.6)
L
2,2
(x) =
(x x
0
)(x x
1
)
(x
2
x
0
)(x
2
x
1
)
(6.7)
(6.8)
Metode Lagrange 23
[Contoh penggunaan][lihat di catatan kuliah]
Contoh program bahasa c ditunjukkan pada Listing 6.1.
1 / lagrange . c
2 Program i nt er pol asi 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 Di i nt erpol asi dengan metode Lagrange p n ( x ) = sum i y [ i ] L[ i ] (
x)
9 program i ni menghitung ni l ai p n ( a) , untuk a yang di beri kan .
10
11 Ref erensi :
12 J .H. Mathews, ( 1992) , Numerical methods f or mathematics ,
sci ence , and
13 engineering , 2nd, Prenti ceHall , New Jersey .
14 /
15 #i ncl ude <st di o . h>
16
17 #def i ne NMAX 200
18
19 i nt main ( )
20 {
21 i nt k, j , n;
22 f l o at x [NMAX] , y [NMAX] ;
23 f l o at a , pa ;
24 f l o at t ;
25
26 pr i nt f ( Masukkan ni l ai n\n ) ;
27 scanf ( %d ,&n) ;
28
29 / / input data x [ i ] dan f [ i ]
30 f or ( k=0; k<=n; k++) {
31 scanf ( %f ,&x [ k] ) ;
32 scanf ( %f ,&y [ k] ) ;
33 }
34
35 pr i nt f ( Masukkan ni l ai x yang diinginkan\n ) ;
36 scanf ( %f ,&a) ;
37
38 / / Hitung p n ( a)
39 pa = 0;
40 f or ( k=0; k<= n; k++) {
41 t = y [ k ] ;
42 / / Hitung L k( a)
43 f or ( j =0; j <= n; j ++) {
44 i f ( k! = j ) {
24 Interpolasi
45 t = ( ax [ j ] ) / ( x [ k]x [ j ] ) ;
46 }
47 }
48 pa += t ;
49 }
50
51 / / Output
52 pr i nt f ( data input \n ) ;
53 pr i nt f ( n = %d \n , n) ;
54 pr i nt f ( ====================\n ) ;
55 f or ( k=0; k<=n; k++) {
56 pr i nt f ( %f %f \n , x [ k] , y [ k] ) ;
57 }
58 pr i nt f ( a = %f \n , a) ;
59 pr i nt f ( ni l ai p n ( a) adalah %f \n , pa) ;
60
61 return 0;
62 }
Listing 6.1: Program interpolasi dengan polinom metode Lagrange
6.2 Metode Newton
Metode interpolasi Lagrange membutuhkan banyak operasi aritmati-
ka untuk menghitungnya. Jika kita ingin menambah titik data tidak
mudah dilakukan.
Bagaimana cara yang lebih esien? dengan menggunakan metode
beda dibagi Newton. Mungkin istilah beda dibagi agak susah dime-
ngerti awalnya. Nanti kita jelaskan mengapa dinamakan demikian.
Sebelum kita mempelajari bagaimana mendapatkan polinom inter-
polasi, mari kita denisikan notasi baru yaitu
f[x
0
] = y
0
(6.9)
Perhatikan kita menggunakan tanda kurung persegi [] untuk mem-
bedakan dengan tanda kurung ().
Untuk memulai, kita mendenisikan terlebih dahulu suatu nilai
yang merupakan beda dua nilai f[] dibagi dengan beda dua posisi x
yaitu
f[x
0
, x
1
] =
f[x
1
] f[x
0
]
x
1
x
0
(6.10)
f[x
0
, x
1
, x
2
] =
f[x
1
, x
2
] f[x
0
, x
1
]
x
2
x
0
(6.11)
Metode Newton 25
f[x
0
, x
1
, x
2
, x
3
] =
f[x
1
, x
2
, x
3
] f[x
0
, x
1
, x
2
]
x
3
x
0
(6.12)
f[x
0
, x
1
, , x
k1
, x
k
] =
f[x
1
, x
2
, , x
k
] f[x
0
, x
1
, , x
k1
]
x
k
x
0
(6.13)
dan seterusnya.
Untuk mempermudah perhitungan, kita biasanya dihitung meng-
gunakan tabel seperti berikut ini.
Tabel 6.1: Tabel kalkulasi menggunakan metode Newton
x
k
f[x
k
] f[x
k
, x
k+1
] f[x
k
, x
k+1
, x
k+2
]
x
0
f[x
0
] = y
0
f[x
0
, x
1
] =
f[x
1
]f[x
0
]
x
1
x
0
x
1
f[x
1
] = y
1
f[x
0
, x
1
, x
2
] =
f[x
1
,x
2
]f[x
0
,x
1
]
x
2
x
0
f[x
1
, x
2
] =
f[x
2
]f[x
1
]
x
2
x
1
x
2
f[x
2
] = y
2
f[x
1
, x
2
, x
3
] =
f[x
2
,x
3
]f[x
1
,x
2
]
x
3
x
1
f[x
2
, x
3
] =
f[x
3
]f[x
2
]
x
3
x
2
x
3
f[x
3
] = y
3
f[x
2
, x
3
, x
4
] =
f[x
3
,x
4
]f[x
2
,x
3
]
x
4
x
2
f[x
0
, x
1
] =
f[x
1
]f[x
0
]
x
1
x
0
x
4
f[x
4
] = y
4
Setelah mendapatkan nilai-nilai beda dibagi f[, , , ], kita mempero-
leh interpolasi polinom Newton dengan rumus
p
N
(x) = f[x
0
] + (x x
0
)f[x
0
, x
1
] + (x x
0
)(x x
1
)f[x
0
, x
1
, x
2
]
+ + f[x
0
, x
1
, , x
N
]
N1

k=0
(x x
k
) (6.14)
Sebagai contoh untuk polinom interpolasi orde ke 3,
p
N
(x) = f[x
0
] + (x x
0
)f[x
0
, x
1
] + (x x
0
)(x x
1
)f[x
0
, x
1
, x
2
]
+ (x x
0
)(x x
1
)(x x
2
)f[x
0
, x
1
, x
2
, x
3
] (6.15)
Nilai polinom Newton p
N
(x) dapat dihitung dengan menggunakan
teknik seperti Metode Horner, sebagai contoh untuk polinom orde ke 3
yaitu
26 Interpolasi
p
N
(x) = [f
[3]
(x x
2
) + f
[2]
](x x
1
) + f
[1]
](x x
0
) + f[x
0
] (6.16)
Untuk mempersingkat notasi, kita menggunakan f
[1]
= f[x
0
, x
1
],
f
[2]
= f[x
0
, x
1
, x
2
] dan f
[3]
= f[x
0
, x
1
, x
2
, x
3
].
Dihitung dengan cara
s
3
= f
[3]
s
2
= s
3
(x x
2
) + f
[2]
s
1
= s
2
(x x
1
) + f
[1]
s
0
= s
1
(x x
0
) + f[x
0
]
(6.17)
[contoh tabel][lihat di catatan kuliah]
1 / newton interp . c
2 Program i nt er pol asi 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 Di i nt erpol asi dengan metode Newton p n ( x )
9 program i ni menghitung ni l ai p n ( a) , untuk a yang di beri kan .
10
11 Ref erensi :
12 J .H. Mathews, ( 1992) , Numerical methods f or mathematics ,
sci ence , and
13 engineering , 2nd, Prenti ceHall , New Jersey .
14 /
15 #i ncl ude <st di o . h>
16
17 #def i ne NMAX 200
18
19 i nt main ( )
20 {
21 i nt k, j , n;
22 f l o at x [NMAX] , y [NMAX] ;
23 f l o at dd[NMAX] [NMAX] ;
24 f l o at a , pa ;
25 f l o at t ;
26
27 pr i nt f ( Masukkan ni l ai n\n ) ;
28 scanf ( %d ,&n) ;
29
30 / / input data x[ k] dan f [ k]
Error 27
31 f or ( k=0; k<=n; k++) {
32 scanf ( %f ,&x [ k] ) ;
33 scanf ( %f ,&y [ k] ) ;
34 }
35
36 pr i nt f ( Masukkan ni l ai x yang diinginkan\n ) ;
37 scanf ( %f ,&a) ;
38
39 / / hitung dd[ k] [ 0]
40 f or ( k=0; k<= n; k++) {
41 dd[ k] [ 0] = y [ k ] ;
42 }
43 / / hitung dd[ k ] [ j ]
44 f or ( j =1; j <= n; j ++) {
45 f or ( k=j ; k<= n; k++) {
46 dd[ k] [ j ] = ( dd[ k] [ j 1] dd[ k1][ j 1]) / ( x [ k]x [ kj ] ) ;
47 }
48 }
49
50 / / Hitung p n ( a)
51 pa = dd[ n] [ n ] ;
52 f or ( k=(n1) ; k >= 0; k){
53 pa = pa( ax [ k] ) + dd[ k] [ k ] ;
54 }
55
56 / / Output
57 pr i nt f ( data input \n ) ;
58 pr i nt f ( n = %d \n , n) ;
59 pr i nt f ( ====================\n ) ;
60 f or ( k=0; k<=n; k++) {
61 pr i nt f ( %f %f \n , x [ k] , y [ k ] ) ;
62 }
63 pr i nt f ( a = %f \n , a) ;
64 pr i nt f ( ni l ai p n ( a) adalah %f \n , pa) ;
65
66 return 0;
67 }
Listing 6.2: Program interpolasi dengan polinom metode beda dibagi
Newton
6.3 Error
Besarnya nilai kesalahan yang ditimbulkan dari penggunaan polino-
mial order ke N, p
N
(x) untuk pendekatan fungsi f(x) diberikan oleh
28 Interpolasi
E(x) =
f
(N+1)
(c)
(N + 1)!
N

k=0
(x x
k
) (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
7
Persamaan Nonlinier
7.1 Metode Fixed Point Iterasi
Ubah persamaan nonlinier menjadi bentuk
x = g(x) (7.1)
contoh
Kita memulai dengan sebuah nilai awal, x
0
, kemudian menggunak-
an iterasi,
x
n+1
= g(x
n
) (7.2)
7.2 Metode Bisection
Metode setengah interval
f(x) = 0
Kita mengambil dua titik a
0
dan b
0
dan sehingga f(a
0
)f(b
0
) < 0,
f(a
0
) < 0 dan f(b
0
) > 0 atau kebalikannya f(a
0
) > 0 dan f(b
0
) < 0. Ini
berarti kurva f(x) memotong sumbu x pada interval (a
0
, b
0
).
Karena kita tahu solusi berada pada interval (a, b), posisi tengah-
nya berarti lebih dekat dengan solusinya, langkah berikutnya
x
n
=
a
n
+ b
n
2
(7.3)
Setelah itu, kita menentukan interval di mana solusi berada.
cek f(a
n
)f(x
n
) < 0 jika benar kita mengganti a
n+1
= a
n
dan b
n+1
=
x
n
jika tidak berarti f(x
n
)f(b
n
) < 0 a
n+1
= x
n
dan b
n+1
= b
n
Contoh
30 Persamaan Nonlinier
7.3 Metode Newton
Jika diketahui turunannya f

(x)
x
n+1
= x
n

f(x)
f

(x)
(7.4)
7.4 Metode Secant
Menggunakan aproksimasi turunan. kita mulai dengan dua titik awal
yaitu x
0
dan x
1
. Aproksimasi turunannya adalah
f

(x
n
) =
f(x
n
) f(x
n1
)
x
n
x
n1
(7.5)
x
n+1
= x
n

f(x)(x
n
x
n1
)
f(x
n
) f(x
n1
)
(7.6)
7.5 Metode Regula-Falsi
Menggabungkan metode secant dan bisection.
8
Matlab atau Octave
Pada bab ini kita akan belajar secara singkat tentang MATLAB dan
Octave. Tentunya tidak semua hal yang diperlukan untuk pengolahan
data dibahas semua di Bab ini, melainkan akan dijelaskan pada bab
selanjut sesuai dengan materi pada Babnya.
MATLAB atau singkatan dari MATrix LABoratory, pada awalnya
merupakan program yang berguna untuk memanipulasi matriks. MAT-
LAB menggunakan bentuk matriks sebagai basis data yang utama da-
lam komputasinya. Dengan kata lain, setiap perhitungan, MATLAB
memproses skalar, vektor dan Matriks. Karena data numerik berupa
vektor atau matriks, maka MATLAB sangatlah sesuai digunakan un-
tuk analisis data. Di samping itu pula, MATLAB telah mengalami ba-
nyak perkembangan dan sekarang tidak hanya menyediakan banyak
kemudahan untuk memanipulasi dan menampilkan data berupa gra-
k 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 grak. 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 dengan
mengklik tombol silang atau exit disebelah kiri atas atau kanan atas
pada jendela program.
Untuk membantu kita dalam penggunaan perintah atau fungsi,
MATLAB atau Octave menyediakan perintah help. Cara penggunaan
help seperti help sin , di sini kita menambahkan nama perintah
atau fungsi yang akan kita lihat penjelasan tentang perintah tersebut.
Selain itu MATLAB dan Octave menyediakan perintah doc yang akan
menampilkan dokumentasi atau buku tentang MATLAB atau Octave.
Perintah penting lain adalah edit yang akan memanggil sebuah
editor teks. Perintah ini berguna untuk membuat dan mengedit script
le dan data le. Penggunaan perintah ini dengan menambahkan na-
ma le setelah perintah edit seperti edit data.txt atau edit fungsi.m.
Jika tidak diberikan nama le, perintah edit akan menampilkan edi-
tornya saja yang dapat digunakan untuk membuat le 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 \% menyatakan
satu baris disamping kiri tanda ini dianggap sebuah komentar,
yang berarti baris tersebut tidak dijalankan oleh MATLAB.
2. Tanda koma ( , ) digunakan untuk memisahkan dua pernyata-
an atau perintah.
3. Tanda titik koma ( ; ) digunakan untuk mengakhiri perintah
dengan tidak mengeluar hasil atau output.
4. Tanda titik tiga kali ( ... ) digunakan untuk melanjukan per-
intah ke baris berikutnya.
5. Tanda kutip satu ( ) dipakai untuk membentuk jenis data
string atau kata dan kalimat.
Untuk lebih jelas kita perhatikan dan coba program MATLAB ber-
ikut ini.
34 Matlab atau Octave
> gaya = 10, massa = 5; %dalam satuan MKS
> %hitung percepatan
> percepatan = gaya/massa
> %data dalam baris menggunakan ...
> data = [10, 40, 500, 21, 55, 78, ...
> 33, 56, 109];
8.2 Operasi Bilangan
Seperti penjelasan sebelumnya bahwa Octave atau MATLAB mampu
memproses data numerik, maka langkah pertama dalam pengguna-
an Octave dan MATLAB adalah menggunakannya sebagai kalkulator
yang lengkap dengan fungsi-fungsi matematis. Operasi-operasi mate-
matis untuk penjumlahan (+), pengurangan (-), perkalian (
*
), pemba-
gian (/) dan pangkat () dapat dengan mudah dilakukan seperti con-
toh berikut ini. Dalam setiap perhitungan kita perlu mengingat bahwa
perhitungan dalam Octave atau MATLAB menggunakan presisi angka
bertipe double.
> 23 + 15
> 23 - 15
> 23
*
15
> 23/15
> 23(1/5)
> sin(1.59)
> exp(-1)
> cosh(2)
8.3 Variabel dan Konstanta
Seperti halnya bahasa pemrograman lain, dalam penyelesaian perma-
salahan menggunakan Octave dan MATLAB kita perlu menggunakan
variabel dalam memanipulasi data. Variabel-variabel dalam MATLAB
harus dimulai dengan huruf dan tidak boleh diawali dengan angka
atau tanda-tanda lain. Huruf-huruf berikutnya dapat berupa huruf
atau angka. Variabel berhuruf besar dibedakan dengan variabel ber-
huruf kecil.
Disamping variabel, MATLAB dan Octave telah mempunyai variabel-
variabel yang berisi atau bernilai konstan atau konstanta. Bebera-
Fungsi-Fungsi Matematis 35
pa konstanta-konstanta yang penting dalam komputasi numerik di bi-
dang sika yaitu
1. pi adalah konstanta bilangan = 3.1415926....
2. eps adalah bilangan yang menentukan presisi perhitungan, 2
25
.
3. inf adalah bilangan tak hingga atau inniti, .
4. i dan j adalah bilangan imajiner i =

1.
5. nan adalah singkatan dari not a number yang berarti bukan
sebuah bilangan/angka.
6. nargin adalah jumlah argumen input fungsi.
7. nargout adalah jumlah argumen output fungsi.
8. realmin dan realmax adalah bilangan riil terkecil dan terbesar
yang dipakai pada komputasi yang sesuai dengan akurasi pada
tipedata yang digunakan.
Sebagai contoh berikut ini
> tan(pi/3)
> 200
*
eps
> 1 + 2
*
i
> 0.0/0.0 %akan menghasilkan NaN
> 1.0/0.0 %akan menghasilkan inf
> realmin
> realmax
Nama-nama fungsi yang disediakan oleh MATLAB dan Octave ti-
dak direserved. Jadi kita bisa menggantinya dengan denisi fungsi
yang lain. Sebagai contoh i = 2, untuk mengembalikan ke denisi
semula, kita menggunakan clear i .
8.4 Fungsi-Fungsi Matematis
Untuk melengkapi manipulasi data, Octave dan MATLAB telah me-
nyediakan fungsi-fungsi matematika yang umumseperti 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 mendenisikan
atau memasukkan data yang berupa vektor dan matriks. Untuk mem-
bentuk vektor dan matriks MATLAB dan Octave menggunakan tanda
[ ] untuk awal dan akhir vektor atau matriks. Setiap elemen
dalam satu baris dipisahkan dengan menggunakan tanda koma ( , )
atau spasi. Sedangkan untuk memisahkan antara baris yang berbeda
MATLAB dan Octave menggunakan tanda titik koma ( ; ). Contoh
membuat vektor dan matriks diberikan berikut ini.
> % membuat sebuah vektor (1x3)
> a = [1 2 5]
> b = [2,3,5]
> % membuat sebuah vektor (3x1)
> c = [1;2;5]
> % membuat matriks (3x3)
> d = [1,4,5; 3,2,7; 1,0,3]
Untuk mengakses elemen matriks dan vektor dengan menggunak-
an nama variabel dan diikuti tanda () yang menyatakan elemen. Seba-
gai konvensi yang menyatakan semua elemen dalam baris atau kolom,
MATLAB dan Octave menggunakan tanda titik dua ( : ). Untuk le-
bih jelasnya, kita perhatikan contoh berikut ini.
> a = [2 3 4 5; 1 2 2 7; 4,4,2,1];
% memilih elemen (1,1)
> a(1,1)
% memilih satu baris, baris pertama, 1
% tanda : menyatakan semua
> a(1,:)
% memilih satu kolom, kolom kedua, 2
> a(:,2)
Jadi tanda yang penting diingat adalah tanda : yang menyatak-
an semua atau deretan dalam banyak operasi matriks. Sebagai contoh
di atas a(:,1) adalah semua baris pada kolom pertama. Untuk me-
nyatakan deretan atau bagian dari matriks, MATLAB menggunakan
notasi i:j:k di mana indeks i adalah indeks awal, j adalah pe-
nambahan dan k adalah indeks akhir. Sebagai contoh deretan 1:2:10
Vektor dan Matriks 37
menyatakan deretan 1, 3, 5, 7, 9 , jadi jika kita menggunakan
v(1:2:10) menyatakan kita memilih deretan elemen a(1), a(3), a(5), a(7)
dan a(9). Deretan dengan nilai penambahan 1 dapat ditulis tanpa
penambahan, jadi 1:1:10 dapat ditulis dengan 1:10. Supaya kita le-
bih mengerti, mari kita kerjakan perintah berikut ini.
> v = [10 20 30 40 50 60 70 80 90 100]
> a = v(1:3:10)
> b = v(2:2:10)
Perintah v(1:3:10) menghasilkan vektor dengan elemen [10 40 70 100]
dan perintah v(2:2:20) menghasilkan vektor [20 40 60 80 100].
Matriks atau array dapat dibuat dengan menggabungkan beberapa
vektor atau matriks.
> a = [ 1 3 6 ];
> b = [ 4 6 9 10];
> c = [a,b,a];
8.5.1 Fungsi-fungsi untuk Matriks
Untuk berbagai analisis data, di samping menyediakan fungsi-fungsi
matematis yang sudah disebutkan sebelumnya, MATLAB dan Octave
juga menyediakan fungsi-fungsi khusus untuk operasi matriks. Fungsi-
fungsi untuk membentuk dan memanipulasi matriks yang sering digu-
nakan adalah
1. ones(m,n) digunakan untuk membentuk matriks dengan ukur-
an m n dengan semua elemen bernilai satu (1). Untuk matriks
kuadrat kita dapat menulis fungsi dengan satu input ones(n).
2. zeros(m,n) seperti dengan fungsi ones(m), fungsi ini memben-
tuk matriks mn tetapi dengan semua elemen bernilai zeros atau
nol.
3. eye(n) digunakan untuk membuat matriks satu atau identitas
(I), atau matriks kuadrat n n dengan nilai elemen semua nol
terkecuali elemen diagonal bernilai satu.
4. inv(M) adalah fungsi untuk mendapatkan invers matriks M. Per-
lu diingat bahwa matriks M adalah matriks kuadrat.
5. eig(M) adalah fungsi untuk mendapatkan nilai dan vektor eigen
dari matriks M.
38 Matlab atau Octave
6. det(M) digunakan untuk menghitung determinan matriks kua-
drat M.
7. rand(n,m) digunakan untuk membuat matriks m n dengan
elemen bernilai acak atau random dengan distribusi uniform dan
dari angka (0, 1).
8. randn(n,m) digunakan untuk membuat matriks m n dengan
elemen bernilai acak atau random dengan distribusi normal de-
ngan rata nol dan variance satu.
9. chol(M) digunakan untuk mendapatkan Choleksky faktorisasi
matriks.
8.5.2 Operasi Matriks
Semua operasi-operasi matriks dapat dilakukan di MATLAB dan Octa-
ve. Untuk mempermudah penjelasan, kita mengumpamakan mempu-
nyai matriks A dan B. Operasi matriks yang dapat dilakukan adalah
1. Operasi transpose dengan menggunakan tanda kutip satu ( ).
A = B; membuat matriks A adalah transpos dari matriks B.
2. Operasi elemen per elemen. Ini dapat dilakukan dengan membe-
ri tanda titik ( . ) dan operasi yang diingikan. Sebagai contoh
C = A.
*
B menghasilkan matriks C dengan elemen bernilai hasil
kali antara elemen A di kali elemen B. D = A.3 menghasilk-
an matriks dengan elemen bernilai elemen A dipangkat 3 atau
setiap elemen A dipangkatkan 3. Fungsi-fungsi matematis jika
dioperasikan pada sebuah matriks akan menghasilkan matriks
dengan nilai fungsi(elemen). Umapamanya F = sin(A) meng-
hasilkan matriks dengan elemen sin(elemen A), jadi setiap ele-
men A dioperasikan fungsi sin().
3. perkalian matriks menggunakan tanda bintang (
*
), seperti C = A
*
B.
Tentunya kita harus memperhatikan ukuran matriks A dan B su-
paya perkalian matriks dapat dilakukan. Jika tidak sesuai maka
kita akan mendapatkan error.
4. operator garis miring ( \ ) berguna untuk mencari solusi persa-
maan linear y = A x di mana x dan y adalah vektor. Jadi dalam
MATLAB solusi untuk vektor x diperoleh dengan x = A\y.
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
Dalampengolahan data kita akan sering melakukan perhitungan berulang-
ulang atau perhitungan dengan berbagai persyaratan. Untuk hal ini
MATLAB dan Octave memberikan fasilitas pengulangan menggunak-
an fungsi for dan percabangan atau persyaratan dengan fungsi
if .
8.7.1 Pengulangan for
Untuk pengulangan sederhana, kita membutuhkan tiga input yaitu
nilai awal, penambahan, dan nilai batas akhir. Kita perhatikan contoh
berikut ini.
> s = 0;
> for n = 1:2:10
> s = s + 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 grak. MATLAB dan Octave telah
40 Matlab atau Octave
menyediakan banyak fungsi untuk pembuatan grak. Di sini akan
dibahas sebagian dari fungsi-fungsi yang ada. Daftar fungsi-fungsi
yang lain dapat dilihat di Lampiran.
8.8.1 Grak Dua Dimensi
Membuat grak dua dimensi sebuah tabel atau fungsi dengan satu pe-
ubah, kita menggunakan fungsi plot. Supaya lebih mudah kita meng-
erti bagaimana membuat grak, kita perhatikan perintah-perintah
berikut ini.
> x = 0:0.1:6
*
pi;
> y = cos(x);
> plot(x,y);
Untuk membuat grak 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
grak dengan perintah plot(x,y).
Untuk menambahkan keterangan sumbu x dan y dan judul grak,
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 grak dengan menambahkan opsi
"or" seperti contoh ini.
plot(x,y,or)
Di sini tanda o menunjukkan bahwa plotnya menggunakan tanda o
dan tambahan huruf r menunjukkan warna merah (r-red). Untuk me-
nampilkan grak 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
c
o
s
(x
)
x, sudut dalam radian
Fungsi Cos(x)
Gambar 8.2: Grak cos(x)
dan hasil grak ditunjukkan pada Gambar 8.3
-1
-0.5
0
0.5
1
0 5 10 15 20
c
o
s
(x
) a
ta
u
s
in
(x
)
x, sudut dalam radian
Fungsi Sin(x) dan Cos(x)
Gambar 8.3: Grak menampilkan dua kurva, sin(x) dan cos(x)
42 Matlab atau Octave
8.8.2 Grak Tiga Dimensi
Untuk membuat grak 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 diplot
x = 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 diplot
zz = sin(xx.
*
yy);
% plot mesh
mesh(xx,yy,zz);
Hasil grak menggunakan perintah mesh dapat dilihat di Gambar
8.4.
0
1
2
3
4
5
0
1
2
3
4
5 -1
-0.5
0
0.5
1
Gambar 8.4: Grak tiga dimensi menggunakan perintah mesh
Visualisasi 43
8.8.3 Grak Contour
Selain plot menggunakan mesh, grak dua dimensi menggunakan ga-
ris kontur sering digunakan di sika. menggunakan fungsi contour.
% menentukan sumbu yang diplot
x = 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 diplot
zz = sin(xx.
*
yy);
% plot contour
contour(xx,yy,zz)
kita juga dapat menggunakan contourf(xx,yy,zz) untuk con-
tour dengan daerah yang diwarnai. Dua hasil grak 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 grak menggunakan contour
selain grak ditampilkan di layar, kita dapat menyimpan hasil gra-
k ke dalam bentuk le 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 grak menggunakan contourf
selain itu, MATLAB dan Octave memberikan fasilitas membuat
multi grak dengan menggunakan fungsi subplot(m,n,k). Di sini
nilai m menentukan jumlah baris dan n menentukan jumlah kolom da-
lam grak multi ini. dan sedangkan k menentukan letak grak pada
tabel.
> x = -2:0.1:2;
> y = -2:0.1:2;
> [xx,yy] = meshgrid(x,y);
> zz = exp(-1.0
*
(xx.2+yy.2);
> subplot(2,2,1); mesh(xx,yy,zz);
> subplot(2,2,2); surf(xx,yy,zz);
> subplot(2,2,3); contour(xx,yy,zz);
> subplot(2,2,4); contourf(xx,yy,zz);
> print -deps output.eps
8.9 Input Output Data
Dalam pengolahan data, kita akan sering memasukkan atau membaca
data dari le 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.5
1
1.5
2
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2 0
0.2
0.4
0.6
0.8
1
-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 0
0.2
0.4
0.6
0.8
1
Gambar 8.7: Empat grak ditampilkan sekaligus menggunakan per-
intah subplot
sukkan data satu-persatu. Pada Bab ini, kita mempelajari cara mem-
baca untuk le yang berupa teks dab berbentuk tabel angka numerik
saja. Untuk membaca jenis le dengan format yang berbeda akan dije-
laskan di Bab-Bab selanjutnya dan perintah-perintah di berikan pada
Lampiran.
Untuk membaca data, kita menggunakan perintah atau fungsi load
seperti berikut ini. Umpamanya kita memiliki data berupa le dengan
format teks seperti berikut ini dan diberi nama data.txt. Untuk mem-
baca le data.txt kita menggunakan perintah
> d = load(data.txt)
Hasil pembacaan le data.txt disimpan dalam matriks d. Dan
selanjutnya kita dapat mengolah data yang ada pada matriks d ini.
Untuk menyimpan data hasi perhitungan, MATLAB dan Octave
telah memberikan fungsi/perintah save. Coba perhatikan perintah
berikut ini.
% Matriks M hasil kalkulasi
46 Matlab atau Octave
M = [ 1:3; 4:6; 7:9 ];
% Simpan dalam file output
save -ascii output.txt M

Anda mungkin juga menyukai