Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3...

32
Lecture Notes Pemrograman Komputer II disusun oleh Nanda Arista Rizki, M.Si. PROGRAM STUDI MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS MULAWARMAN 2018

Transcript of Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3...

Page 1: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Lecture Notes

Pemrograman Komputer II

disusun oleh

Nanda Arista Rizki, M.Si.

PROGRAM STUDI MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS MULAWARMAN

2018

Page 2: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Daftar Isi

Daftar Isi i

1 String Matching 1

1.1 Algoritma Naive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Algoritma Rabin-Karp . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Sorting 7

2.1 Insertion Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Selection Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.3 Bubble Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.4 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 Eigen Value and Eigen Vector 14

3.1 Eigen Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2 Power Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.3 Shifted-inverse Power Method . . . . . . . . . . . . . . . . . . . . . . 25

3.4 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

i

Page 3: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

BAB 1

String Matching

Dalam bahasa pemrograman komputer, string dapat diartikan sebagai kalimat atau

kumpulan dari karakter. Jika diperhatikan lebih dalam lagi, suatu karakter terdiri

dari 26 huruf alfabet (baik huruf besar maupun huruf kecil), angka-angka, spasi

putih, dan tanda baca; yang biasa dikenal dengan karakter ASCII1. Selain standar

pengkodean karakter ASCII, komputer juga mengenali himpunan glyph (simbol-

simbol tertentu seperti karakter China) menggunakan sistem unicode.

Tipe data string merupakan kumpulan hingga yang dipilih dari suatu him-

punan alfabet Σ. Misalkan Σ adalah himpunan hingga tak kosong dan Σ = {0, 1},maka t = 0110101 adalah string atas Σ. Panjang suatu string t adalah banyaknya

karakter/simbol dalam t dan dinyatakan dengan |t|. Himpunan semua string atas

Σ dengan panjang n dinyatakan dengan Σn Sebagai contoh, jika Σ = {0, 1} maka

Σ2 = {00, 01, 10, 11}. Selain alfabet biner (Σ = {0, 1}), juga ada alfabet DNA2

(Σ = {A,C,G, T}) yang sering digunakan dalam bioinformatika.

Tugas program yang berkaitan dengan string biasanya adalah mencari suatu

tempat atau posisi dimana suatu pola (string) ditemukan dalam string yang besar

atau teks. Algoritma pencarian string teks ini disebut String Matching. Algoritma

ini paling sering digunakan dalam mencari pola spesifik dalam rangkaian DNA.

Mesin pencari internet juga menggunakan algoritma ini untuk mencari halaman

web yang relevan.

1ASCII=American Standard Code for Information Interchange2DNA=Deoxyribonucleic acid

1

Page 4: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Diasumsikan bahwa teks T adalah suatu larik (array) dengan panjang |T | = n,

sedangkan pola P adalah suatu larik dengan panjang |P | = m ≤ n. Setiap elemen

atau unsur dari T dan P adalah karakter alfabet Σ. Dalam hal ini, larik karakter dari

T dan P merupakan string dari karakter. Selanjutnya, misal diketahui himpunan

alfabet Σ = {a, b, c, . . . , z}, suatu teks T = abcabaabcabac dan pola P = abaa.

Berdasarkan Gambar 1.1 bahwa, pola P terjadi dengan shift s dalam teks T . Dengan

kata lain, pola P terjadi mulai dari posisi s+ 1 dalam teks T .

Gambar 1.1: Contoh permasalahan string-matching. Pola P terjadi hanya sekalidalam teks T di shift s = 3.

Teks T dengan panjang n dapat ditulis sebagai suatu larik T [1..n], sedangkan

pola P yang memiliki panjang m ditulis sebagai P [1..m]. Pandang kembali kasus

pada Gambar 1.1, dimana pola P terjadi dengan shift s dalam teks T . Hal ini

terjadi jika 0 ≤ s ≤ n−m dan T [s+ 1..s+m] = P [1..m] (atau jika T [s+ j] = P [j]

untuk 1 ≤ j ≤ m). Jika pola P terjadi dengan shift s dalam teks T , maka dapat

dikatakan bahwa s adalah shift yang valid.

Beberapa algoritma string-matching beserta waktu persiapan dan waktu pen-

cocokannya dapat dilihat pada Tabel 1.1. Waktu total pengerjaan setiap algoritma

adalah penjumlahan dari waktu persiapan dan waktu pencocokan.

Tabel 1.1: Beberapa Algoritma String-Matching

Algoritma Waktu persiapan Waktu pencocokanNaive 0 O((n−m+ 1)m)Rabin-Karp Θ(m) O((n−m+ 1)m)Finite automaton O(m|Σ|) Θ(n)Knuth-Morris-Pratt Θ(m) Θ(n)

1.1 Algoritma Naive

Algoritma Naive adalah algoritma yang paling sederhana dalam pencocokan string.

Algoritma ini akan menemukan semua shift yang valid mengunakan perulangan yaitu

Pemprograman Komputer II 2 Nanda Arista Rizki, M.Si.

Page 5: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

mengecek kondisi P [1..m] = T [s + 1..s + m] untuk setiap n −m + 1 kemungkinan

dari s. Adapun langkah-langkah dalam pengerjaan algoritma Naive adalah sebagai

berikut.

1 //NAIVE−STRING−MATCHER(T,P)2 n=length(T)

3 m=length(P)

4 for s=0 to n−m5 if P[1..m]==T[s+1..s+m]

6 print "pola P terjadi dengan shift" s

Misalkan T = acaabc dan P = aab, selanjutnya ilustrasi algoritma ini dapat dilihat

pada Gambar 1.2. Dari 4 kemungkinan untuk s, algoritma ini hanya terjadi sekali

di shift s = 2.

Gambar 1.2: Ilustrasi algoritma Naive

1.2 Algoritma Rabin-Karp

Algoritma Rabin-Karp menggunakan notasi teoritis bilangan dasar yang ekivalen

dengan bilangan kedua modulo bilangan ketiga. Secara umum, setiap karakter da-

lam algoritma ini adalah suatu digit dalam notasi radiks-d dimana d = |Σ|. Sebagai

contoh, misalkan himpunan alfabet Σ = {0, 1, . . . , 9}, maka setiap karakter adalah

suatu digit desimal. Dalam hal ini, suatu string dengan k karakter yang berurutan

menggambarkan bilangan desimal dengan panjang k. Artinya string 31415 diperla-

kukan sama seperti bilangan desimal 31, 415.

Diberikan pola P [1..m], lalu dimisalkan p menyatakan nilai desimal yang ber-

korespondensi. Kemudian diberikan teks T [1..n], lalu dimisalkan ts menyatakan

bilangan desimal dengan panjang m yang merupakan sub-string T [s+ 1..s+m] un-

tuk s = 0, 1, . . . , n−m. Tentu ts = p jika dan hanya jika T [s+ 1..s+m] = P [1..m];

selanjutnya s adalah shift yang valid jika dan hanya jika ts = p.

Pemprograman Komputer II 3 Nanda Arista Rizki, M.Si.

Page 6: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Berdasarkan aturan Horner, bahwa perhitungan p adalah

p = P [m] + 10(P [m− 1] + 10(P [m− 2] + · · ·+ 10(P [2] + 10P [1]) · · · )).

Misalkan p = 2468, artinya

2468 =P [4] + 10(P [3] + 10(P [2] + 10P [1]))

=8 + 10(6 + 10(4 + 10(2)))

=8 + 60 + 400 + 2000 = 2468.

Dengan cara yang sama, dapat dihitung t0 dari T [1..m]. Selanjutnya adalah meng-

hitung t1, t2, . . . , tn−m. Dapat diamati bahwa menghitung ts+1 dapat diperoleh dari

ts, karena

ts+1 = 10(ts − 10m−1T [s+ 1]) + T [s+m+ 1].

Sebagai ilustrasi, misalkan m = 5 dan saat ini ts = 31415, lalu ingin menghilangkan

digit order tertinggi T [s + 1] = 3 dan membawa digit order terendah yang baru

(misalkan T [s+ 5 + 1] = 2) maka

ts+1 =10(31415− 10000 · 3) + 2

=14152.

Secara umum, algoritma Rabin-Karp adalah sebagai berikut.

1 //RABIN−KARP−MATCHER(T,P,d,q)2 n=length(T)

3 m=length(P)

4 h=dˆ(m−1) mod q

5 p=0

6 t0=0

7 //persiapan

8 for i=1 to m

9 p=(d*p+P[i]) mod q

10 t0=(d*t0+T[i]) mod q

11 //pencocokan

12 for s=0 to n−m

Pemprograman Komputer II 4 Nanda Arista Rizki, M.Si.

Page 7: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

13 if p==ts

14 if P[1..m]==T[s+1..s+m]

15 print "pola P terjadi dengan shift" s

16 if s<n−m17 t[s+1]=(d(t[s]−T[s+1]h)+T[s+m+1]) mod q

Nilai q dalam algoritma Rabin-Karp adalah suatu bilangan prima. Semakin besar

nilai q, maka semakin sedikit hasil modulus yang sama dengan p. Sebagai contoh,

misalkan T = 2359023141526739921, P = 31415, dan q = 13. Pada tahap persi-

apan, perhitungan nilai p = P mod q = 31415 mod 13 = 7 dapat dilakukan dengan

langsung atau menggunakan iterasi sebagai berikut.

(i = 1) p = 3 mod 13 = 3

(i = 2) p = 31 mod 13 = 5

(i = 3) p = 54 mod 13 = 2

(i = 4) p = 21 mod 13 = 8

(i = 5) p = 85 mod 13 = 7.

Cara yang sama dapat dilakukan untuk memperoleh nilai t0. Selanjutnya ilustrasi

algoritma ini dapat dilihat pada Gambar 1.3. Misal ingin mengetahui nilai t8, maka

dihitung melalui cara berikut.

14152 ≡ (31415− 3 · 10000) · 10 + 2 (mod 13)

≡ (7− 3 · 3) · 10 + 2 (mod 13)

≡ 8 (mod 13),

karena h = 10000 mod 13 = 3. Berdasarkan Gambar 1.3, karena ada dua ts yang

sama dengan p = 7 maka yang dipilih adalah ts yang T [s+1..s+5] = P [1..5] = 31415.

Gambar 1.3: Ilustrasi algoritma Rabin-Karp

Pemprograman Komputer II 5 Nanda Arista Rizki, M.Si.

Page 8: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

1.3 Latihan

1. Misalkan T = programstudimatematika.

a. Buatlah program yang dapat mencocokan apakah pola P = ima terdapat

dalam teks T !

b. Tentukan pada posisi ke berapakah pola tersebut terjadi!

2. Diberikan 10 string yang ditampilkan dalam Tabel 1.2. Buatlah program yang

dapat mengecek apakah pola P = nur terjadi untuk beberapa string tersebut!

Tabel 1.2: Teks atas Σ = {a, b, . . . , z}

No. Teks1 erlina2 nurul3 ghony4 stefanny5 elisa6 ersin7 vika8 latifah9 nur

10 muliya

Pemprograman Komputer II 6 Nanda Arista Rizki, M.Si.

Page 9: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

BAB 2

Sorting

Seperti halnya Bab 1, bahwa perulangan (baik for , while , maupun repeat) dalam

materi pengurutan ini memainkan peranan yang sangat penting. Dalam pemro-

graman, masalah pengurutan tidaklah lepas dari variabel larik (array). Sehingga

perulangan menjadi senjata yang cocok ketika berhadapan dengan masalah larik.

2.1 Insertion Sort

Diberikan himpunan dari n bilangan, yaitu {a1, a2, . . . , an}. Selanjutnya akan di-

berikan algoritma yang akan menghasilkan suatu permutasi {a′1, a′2, . . . , a′n} dengan

cara menata ulang sedemikian sehingga a′1 ≤ a′2 ≤ · · · ≤ a′n. Algoritma yang seder-

hana untuk menjawab permasalahan ini adalah insertion sort. Algoritma ini efisien

untuk mengurutkan sejumlah kecil elemen.

Algoritma insertion sort menggunakan suatu ’wadah’ untuk digunakan dalam

proses pengurutan. Contoh sederhana dalam penggunaan ’wadah’ ini diterapkan

pada array A = {5, 2}. Karena elemen pertama dari A lebih besar dari elemen

kedua dari A, sehingga perlu dilakukan penukaran posisi dalam array A. Nilai dari

variabel ’wadah’ adalah elemen kedua dari A yaitu 2. Nilai elemen kedua disalin

dari elemen pertama, lalu diperoleh A = {5, 5}. Kemudian elemen pertama disalin

dari nilai ’wadah’ sehingga diperoleh A = {2, 5}. Tentu penggunaan ’wadah’ ini

digunakan ketika ada elemen yang ingin ditukar.

7

Page 10: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Misal diberikan suatu array A = {5, 2, 4, 6, 1, 3}. Selanjutnya ilustrasi dari ite-

rasi algoritma ini dapat dilihat pada Gambar 2.1. Perhatikan bahwa elemen pertama

dari A lebih besar dari elemen kedua dari A, sehingga perlu dilakukan cara yang

sama seperti penjelasan sebelumnya. Pada proses ketiga, karena elemen pertama

hingga elemen keempat telah terurut maka tidak perlu dilakukan pengaturan ulang

posisi. Namun pada proses keempat (lihat Gambar 2.1d), karena ’wadah’ bernilai

1 lebih kecil dari pada elemen sebelumnya, maka posisi ’wadah’ ditaruh di elemen

pertama. Proses berlanjut hingga semua elemen dari A seperti pada Gambar 2.1f,

yaitu telah diurutkan dari yang terkecil hingga terbesar.

(a) (b) (c)

(d) (e) (f)

Gambar 2.1: Ilustrasi algoritma insertion sort

Adapun langkah-langkah algoritma insertion sort adalah sebagai berikut.

1 // INSERTION−SORT(A)2 for j=2 to length(A)

3 begin

4 wadah=A[j]

5 i=j−16 while i>0 and A[i]>wadah

7 begin

8 A[i+1]=A[i]

9 i=i−110 end;

11 A[i+1]=wadah

12 end;

Pemprograman Komputer II 8 Nanda Arista Rizki, M.Si.

Page 11: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

2.2 Selection Sort

Algoritma selection sort melakukan pekerjaannya berdasarkan urutan (terkecil). Al-

goritma ini membagi dua bagian yaitu sub-array yang sudah diurutkan dan sub-

array sisanya. Misal diberikan suatu array dengan enam elemen yaitu

A0 = {5, 2, 4, 6, 1, 3}.

Tahap pertama adalah mencari elemen terkecil, lalu ditempatkan di posisi pertama:

A1 = {1, 5, 2, 4, 6, 3}.

Kemudian mencari elemen terkecil kedua dan ditempatkan di posisi kedua:

A2 = {1, 2, 5, 4, 6, 3}.

Dengan cara yang sama, diperolehlah permutasi berikut:

A3 = {1, 2, 3, 5, 4, 6}

A4 = {1, 2, 3, 4, 5, 6}

A5 = {1, 2, 3, 4, 5, 6}

A6 = {1, 2, 3, 4, 5, 6}.

Dengan kata lain, hasil yang diperoleh setelah iterasi ke k adalah terbentuknya array

dimana k elemen pertama (dari string awal) telah terurut.

Pada dasarnya, algoritma selection sort membagi dua himpunan, yaitu sub

himpunan yang telah diurutkan dan sub himpunan yang belum diurutkan. Pada

tahapan awal, array A0 = {5, 2, 4, 6, 1, 3} merupakan sub himpunan yang belum

diurutkan. Selanjutnya, perhatikan iterasi pada Tabel 2.1 berikut. Elemen terkecil

pada tabel tersebut merupakan nilai terkecil dari sub himpunan yang belum diurut-

kan. Elemen terkecil akan dimasukan ke dalam sub himpunan yang telah diurutkan

pada iterasi setelahnya.

Pemprograman Komputer II 9 Nanda Arista Rizki, M.Si.

Page 12: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Tabel 2.1: Ilustrasi Algoritma Dua Himpunan

Iterasi ke-Sub himpunan

Elemen terkecilTelah diurut Belum diurutkan

0 5,2,4,6,1,3 11 1 5,2,4,6,3 22 1,2 5,4,6,3 33 1,2,3 5,4,6 44 1,2,3,4 5,6 55 1,2,3,4,5 6 66 1,2,3,4,5,6

Adapun langkah-langkah dalam pengerjaan algoritma selection sort adalah

sebagai berikut.

1 //SELECTION−SORT(A)2 for i=1 to length(A)−13 min=i

4 for j=i+1 to length(A)

5 if A[j] < A[min]

6 min=j

7

8 if min != i

9 wadah=A[i]

10 A[i]=A[min]

11 A[min]=wadah

2.3 Bubble Sort

Algoritma bubble sort merupakan algoritma yang sederhana. Dimulai dari mem-

bandingkan dua nilai elemen pertama dari array dan menukarnya jika tidak sesuai

letak urutannya. Lalu membandingkan nilai elemen kedua dan ketiga, kemudian

menukarnya jika kedua elemen tersebut belum terurut. Proses ini berlanjut hingga

semua elemen telah diurutkan.

Sebagai ilustrasi, misal A = {5, 2, 4, 6, 1, 3} adalah suatu array dengan enam

Pemprograman Komputer II 10 Nanda Arista Rizki, M.Si.

Page 13: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

elemen. Berikut adalah hasil dari iterasi pertama.

{5, 2, 4, 6, 1, 3} → {2, 5, 4, 6, 1, 3}

{2, 5, 4, 6, 1, 3} → {2, 4, 5, 6, 1, 3}

{2, 4, 5, 6, 1, 3} → {2, 4, 5, 6, 1, 3}

{2, 4, 5, 6, 1, 3} → {2, 4, 5, 1, 6, 3}

{2, 4, 5, 1, 6, 3} → {2, 4, 5, 1, 3, 6}.

Pada iterasi kedua diperoleh hasil berikut.

{2, 4, 5, 1, 3, 6} → {2, 4, 5, 1, 3, 6}

{2, 4, 5, 1, 3, 6} → {2, 4, 5, 1, 3, 6}

{2, 4, 5, 1, 3, 6} → {2, 4, 1, 5, 3, 6}

{2, 4, 1, 5, 3, 6} → {2, 4, 1, 3, 5, 6}

{2, 4, 1, 3, 5, 6} → {2, 4, 1, 3, 5, 6}.

Iterasi ini berlanjut hingga diperoleh permutasi yang diinginkan yaitu {1, 2, 3, 4, 5, 6}.

Adapun langkah-langkah dalam pengerjaan algoritma bubble sort adalah se-

bagai berikut.

1 //BUBBLE−SORT(A)2 n = length(A)

3 repeat

4 tertukar = false

5 for i = 2 to n

6 if A[i−1] > A[i]

7 wadah=A[i−1]8 A[i−1]=A[i]9 A[i]=wadah

10 tertukar = true

11 n = n − 1

12 until not tertukar

Pemprograman Komputer II 11 Nanda Arista Rizki, M.Si.

Page 14: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

2.4 Latihan

1. Diberikan suatu array A = {1, 3, 0, 9, 2, 0, 1, 6}. Buatlah program untuk meng-

urutkan elemen-elemen A dari terkecil hingga terbesar!

2. Data hasil kuesioner tentang Indeks Prestasi Kumulatif (IPK) mahasiswa pro-

gram studi Matematika angkatan 2017 disajikan dalam Tabel 2.2. Buatlah

program yang dapat menghitung nilai median dari data tersebut! (dengan

menggunakan algoritma pengurutan)

Tabel 2.2: IPK Mahasiswa Program Studi Matematika

No responden IPK No responden IPK No responden IPK1 3.32 11 3.97 21 3.342 3.36 12 3.68 22 3.553 3.89 13 3.38 23 3.864 3.42 14 3.79 24 3.905 3.27 15 3.30 25 3.976 3.68 16 3.52 26 3.557 3.70 17 3.668 3.37 18 3.919 3.63 19 3.3610 3.84 20 3.48

3. Buatlah program yang dapat menghitung nilai kuartil bawah (Q1) dan kuartil

atas (Q3) untuk data yang disajikan dalam Tabel 2.2!

4. Buatlah perbandingan untuk ketiga algoritma pengurutan dengan memperha-

tikan waktu proses:

1 uses crt, DateUtils, SysUtils;

2 var

3 mulai, selesai: TDateTime;

4 selisih: Integer;

5

6 begin

7 ClrScr;

8 mulai := Now;

9

10 {Taruh proses algoritma Anda disini}

Pemprograman Komputer II 12 Nanda Arista Rizki, M.Si.

Page 15: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

11

12 selesai := Now;

13

14 //selisih := SecondsBetween(mulai,selesai);

15 //Writeln('Waktu yang diperlukan adalah ',

16 // IntToStr(selisih) ,' detik');

17

18 selisih := MilliSecondsBetween(mulai,selesai);

19 Writeln('Waktu yang diperlukan adalah ',

20 IntToStr(selisih) ,' mili detik');

21

22 Read;

23 end;

Pemprograman Komputer II 13 Nanda Arista Rizki, M.Si.

Page 16: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

BAB 3

Eigen Value and Eigen Vector

Sebelum masuk ke materi tentang nilai eigen dan vektor eigen, maka terlebih dahulu

dijelaskan sedikit materi tentang vektor dan matriks. Dalam bahasa pemrograman,

array satu dimensi dapat mewakili suatu vektor, sementara array dua dimensi dapat

mewakili suatu matriks. Jika ingin mendefinisikan vektor v =[v1 v2

]dimana v1

dan v2 merupakan bilangan bulat (integer) dalam bahasa Pascal, maka salah satu

caranya adalah menuliskan program berikut.

1 var

2 v: array[1..10] of integer;

3 i:integer;

4

5 begin

6 for i:=1 to 2 do

7 begin

8 write('v[',i,']= ');

9 readln(v[i]);

10 end;

11 end.

Ingat bahwa banyaknya elemen dalam variabel v yang diinginkan tidak boleh me-

lebihi variabel array v yang telah dideklarasikan sebelumnya. Jadi dalam baha-

sa Pascal, penulisan ”array[1..10]” diperbolehkan walaupun hanya memanfaatkan

array-nya hingga elemen ke dua saja. Untuk memperdalam pemahaman tentang

14

Page 17: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

vektor, perhatikan rumus Euclidean norm untuk vektor v berikut.

‖v‖2 :=

√√√√ 2∑i=1

v2i =√v21 + v22.

Dengan mengetahui pola tentang perhitungan Euclidean norm untuk vektor v, se-

hingga dalam Pascal dapat ditulis sebagai berikut.

1 var

2 jumlah, euclidean norm: integer;

3

4 begin

5 jumlah:=0;

6 for i:=1 to 2 do

7 begin

8 write('v[',i,']= ');

9 readln(v[i]);

10 jumlah:=jumlah+sqr(v[i]);

11 //sqr(v[i]) dapat diganti dengan v[i]*v[i]

12 end;

13 writeln('Euclidean norm = ', sqrt(jumlah));

14 end.

Pemahaman yang dipelajari selanjutnya adalah mengenai matriks. Misal A

adalah matriks berukuran 2 × 2 dimana semua elemennya adalah bilangan real,

maka salah satu cara mendefinisikan matriks A dalam bahasa Pascal adalah sebagai

berikut.

1 var

2 A: array[1..2,1..2] of real;

3 i,j:integer;

4

5 begin

6 for i:=1 to 2 do

7 begin

8 for j:=1 to 2 do

9 begin

10 write('A[',i,',',j,']= ');

Pemprograman Komputer II 15 Nanda Arista Rizki, M.Si.

Page 18: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

11 readln(A[i,j]);

12 end;

13 writeln;

14 end;

15 end.

Perlu diingat bahwa matriks 3 × 3, 3 × 4, 4 × 4, dan seterusnya juga merupakan

array dua dimensi.

Berbicara tentang matriks, biasanya tidak lepas dengan operasinya. Misalkan

A =

[a11 a12

a21 a22

]dan B =

[b11 b12

b21 b22

]adalah dua matriks berukuran 2× 2, maka

AB =

[a11 a12

a21 a22

][b11 b12

b21 b22

]=

[a11 · b11 + a12 · b21 a11 · b12 + a12 · b22a21 · b11 + a22 · b21 a21 · b12 + a22 · b22

].

Oleh karena itu, perhitungan matriks AB dalam bahasa Pascal dapat ditulis sebagai

berikut.

1 for i:= 1 to 2 do

2 for j:= 1 to 2 do

3 begin

4 jumlah:=0;

5 for k:=1 to 2 do

6 jumlah:=jumlah+A[i,k]*B[k,j];

7 AB[i,j]:= jumlah;

8 end;

Misal C =

c11 c12 c13

c21 c22 c23

c31 c32 c33

adalah matriks 3× 3 sedangkan D =[d1 d2 d3

]′adalah vektor kolom berukuran 3× 1, maka

CD =

c11 · d1 + c12 · d2 + c13 · d3c21 · d1 + c22 · d2 + c23 · d3c31 · d1 + c32 · d2 + c33 · d3

.

Pemprograman Komputer II 16 Nanda Arista Rizki, M.Si.

Page 19: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Sehingga, hasil perkalian antara matriks dan vektor dalam Pascal dapat ditulis

menjadi:

1 for i:=1 to 3 do

2 begin

3 jumlah:=0;

4 for j:=1 to 3 do

5 jumlah:=jumlah+C[i,j]*D[j];

6 CD[i]:=jumlah;

7 end;

Pemrograman bahasa Pascal menyediakan unit untuk mempermudah dalam

perhitungan sederhana untuk vektor dan matriks. Unit ini bernama ”matrix”.

Ingat bahwa vektor juga merupakan matriks. Berikut contoh penggunaannya.

1 program coba unit matrix;

2 uses

3 Crt, matrix;

4 var

5 C:TMatrix3 double;

6 D,hasil:TVector3 double;

7

8 begin

9 ClrScr;

10 C.init(0,11,−5,−2,17,−7,−4,26,−10); //input elemen matriks

11 D.init(1,1,1); //input elemen vektor

12 hasil:=C*D;

13 writeln('Hasil perkaliannya:');

14 writeln(hasil.data[0]:6:2);

15 writeln(hasil.data[1]:6:2);

16 writeln(hasil.data[2]:6:2);

17 readln;

18 end.

Namun tipe matriks dan vektor yang dapat digunakan hanya beberapa saja (tidak

berlaku secara umum). Lihat Tabel 3.1.

Pemprograman Komputer II 17 Nanda Arista Rizki, M.Si.

Page 20: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Tabel 3.1: Tipe Data dalam Unit Matrix

TypeTmatrix2 double data Tvector2 double dataTmatrix2 extended data Tvector2 extended dataTmatrix2 single data Tvector2 single dataTmatrix3 double data Tvector3 double dataTmatrix3 extended data Tvector3 extended dataTmatrix3 single data Tvector3 single dataTmatrix4 double data Tvector4 double dataTmatrix4 extended data Tvector4 extended dataTmatrix4 single data Tvector4 single data

Pemahaman tentang konsep matriks dan polanya dalam bahasa Pascal, dapat

diasah dalam studi kasus dekomposisi Cholesky. Misal A =

a11 a12 a13

a21 a22 a23

a31 a32 a33

adalah

matriks 3× 3 yang ingin dilakukan dekomposisi Cholesky, maka

A =

a11 a12 a13

a21 a22 a23

a31 a32 a33

=

l11 0 0

l21 l22 0

l31 l32 l33

l11 l21 l31

0 l22 l32

0 0 l33

≡ LL′

=

l211 l21l11 l31l11

l21l11 l221 + l222 l31l21 + l32l22

l31l11 l31l21 + l32l22 l231 + l232 + l233

, (3.1)

dengan L adalah matriks segitiga bawah. Namun tidak semua matriks dapat di-

dekomposisi seperti itu. Syarat suatu matriks A (berordo n × n) dapat dilakukan

dekomposisi Cholesky adalah jika matriks A definit positif, yaitu v′Av > 0 untuk

semua vektor kolom vn×1.

Pemprograman Komputer II 18 Nanda Arista Rizki, M.Si.

Page 21: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Perhatikan kembali Persamaan 3.1, untuk elemen diagonal dapat diperoleh

pola berikut.

l11 =√a11

l22 =√a22 − l221

l33 =√a33 − (l231 + l232),

atau secara umum bahwa

lkk =

√√√√akk −k−1∑j=1

l2kj.

Selanjutnya untuk elemen di bawah diagonal utama, diperoleh pola sebagai berikut.

l21 =1

l11a21

l31 =1

l11a31

l32 =1

l22(a32 − l31l21)

sehingga secara umum dapat dinyatakan sebagai berikut.

lik =1

lkk

(aik −

k−1∑j=1

lijlkj

).

Berikut adalah salah satu contoh program Pascal untuk melakukan dekomposisi

Cholesky.

1 Program dekomposisi cholesky;

2 uses Crt;

3 type

4 matriks = array of array of double;

5

6 function cholesky(const A: matriks): matriks;

7 var

8 i, j, k: integer;

9 s: double;

Pemprograman Komputer II 19 Nanda Arista Rizki, M.Si.

Page 22: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

10 begin

11 // mendefinisikan matriks cholesky berukuran nxn

12 setlength(cholesky, length(A), length(A));

13 for i := 1 to length(cholesky) do

14 for j := 0 to i do

15 begin

16 s := 0;

17 for k := 0 to j − 1 do

18 s := s + cholesky[i][k] * cholesky[j][k];

19 if i = j then //diagonal utama

20 cholesky[i][j] := sqrt(A[i][i] − s)

21 else

22 cholesky[i][j] := (A[i][j] − s) / cholesky[j][j];

23 end;

24 end;

25

26 procedure tampil matriks(const A: matriks);

27 var

28 i, j: integer;

29 begin

30 for i := 1 to length(A) do

31 begin

32 for j := 1 to length(A) do

33 write(A[i,j]:8:3);

34 writeln;

35 end;

36 end;

37

38 const

39 matriks A: array[0..2,0..2] of double = (( 2,−1, 0),

40 (−1, 2,−1),41 ( 0,−1, 2));

42 var

43 indeks: integer;

44 proses 1, proses 2: matriks;

45

46 begin

47 ClrScr;

48

49 // mendefinisikan matriks proses 1

50 // yang ukurannya sama dengan matriks A

51 setlength(proses 1, length(matriks A), length(matriks A));

Pemprograman Komputer II 20 Nanda Arista Rizki, M.Si.

Page 23: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

52

53 // matriks A dikonversi agar dapat dibaca

54 for indeks := 1 to length(matriks A) do

55 proses 1[indeks] := matriks A[indeks];

56 proses 2 := cholesky(proses 1);

57

58 Writeln('A=');

59 tampil matriks(proses 1);

60 Writeln;

61 Writeln('L=');

62 tampil matriks(proses 2);

63

64 writeln;

65 readln;

66 end.

Perlu diperhatikan bahwa pendefinisian batas indeks yang tepat sangat dianjurkan

ketika ingin menggunakan fungsi length untuk peubah array. Jadi, walaupun hanya

ingin memanfaatkan elemen array hingga ke dua saja, maka lebih baik menuliskan-

nya dengan ”array[1..2]” jika ingin menggunakan hasil dari fungsi length.

3.1 Eigen Value

Misalkan A adalah matriks berukuran n× n. Sebuah vektor taknol v ∈ Rn disebut

vektor eigen dari A; dan skalar λ disebut nilai eigen dari A, jika memenuhi

Av = λv. (3.2)

Untuk memperoleh nilai eigen dari matriks A, Persamaan 3.2 dapat dituliskan kem-

bali menjadi

Av = λIv

Av − λIv = 0

(A− λI)v = 0. (3.3)

Pemprograman Komputer II 21 Nanda Arista Rizki, M.Si.

Page 24: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Solusi untuk Persamaan 3.3 dapat diperoleh dengan menyelesaikan persamaan ka-

rakteristik berikut.

|A− λI| = 0.

Sebagai contoh, misal diberikan matriks A sebagai berikut.

A =

0 11 −5

−2 17 −7

−4 26 −10

.Matriks A tersebut ingin dicari nilai eigennya. Langkah pertama adalah menentukan

matriks A− λI.

A− λI =

0 11 −5

−2 17 −7

−4 26 −10

−λ 0 0

0 λ 0

0 0 λ

=

−λ 11 −5

−2 17− λ −7

−4 26 −10− λ

.Lalu tentukan determinan dari A− λI.

|A− λI| = + (−λ)

∣∣∣∣∣ 17− λ −7

26 −10− λ

∣∣∣∣∣− (11)

∣∣∣∣∣ −2 −7

−4 −10− λ

∣∣∣∣∣+ (−5)

∣∣∣∣∣ −2 17− λ−4 26

∣∣∣∣∣=− λ [(17− λ)(−10− λ)− (−7)(26)]− 11 [(−2)(−10− λ)− (−7)(−4)]

− 5 [(−2)(26)− (17− λ)(−4)]

=− λ[−170− 7λ+ λ2 + 182]− 11[20 + 2λ− 28]− 5[−52 + 68− 4λ]

=− λ3 + 7λ2 − 12λ− 22λ+ 20λ+ 88− 80

=− λ3 + 7λ2 − 14λ+ 8.

Pemprograman Komputer II 22 Nanda Arista Rizki, M.Si.

Page 25: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Selanjutnya temukan solusi dari |A− λI| = 0.

|A− λI| = 0

−λ3 + 7λ2 − 14λ+ 8 = 0

−(λ− 4)(λ− 2)(λ− 1) = 0.

Sehingga diperoleh nilai eigen dari matriks A, yaitu λ = 4, λ = 2, dan λ = 1.

3.2 Power Method

Jika λ1 adalah nilai eigen terbesar (secara absolut) dari matriks A, maka λ1 disebut

nilai eigen dominan. Vektor eigen v1 yang berkorespondensi pada λ1 tersebut

dinamakan vektor eigen dominan. Suatu vektor v dikatakan ternormalisasi jika

koordinat tertinggi dalam vektor v adalah 1. Misalkan[v1 v2 · · · vn

]′adalah

vektor eigen yang ingin dinormalisasi, maka

v =

(1

c

)[v1 v2 · · · vn

]′merupakan vektor yang telah dinormalisasi, dimana

c = vj dengan |vj| = max1≤i≤n

{|vi|}.

Misalkan matriks A memiliki nilai eigen dominan yaitu λ, maka hanya ada

satu vektor eigen yang ternormalisasi yang berkorespondensi dengan λ. Prosedur

untuk menemukan pasangan eigen ini (yaitu λ dan v) dapat ditemukan secara iteratif

dengan metode power . Prosedur menggunakan metode ini, dimulai dengan vektor

awal

x0 =[1 1 · · · 1

]′,

Pemprograman Komputer II 23 Nanda Arista Rizki, M.Si.

Page 26: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

lalu konstruksi barisan {xk} secara rekursif:

yk = Axk (3.4)

xk+1 =1

ck+1

yk, (3.5)

dengan ck+1 adalah koordinat dari yk yang terbesar. Sehingga barisan {xk} dan

{ck} masing-masing akan konvergen ke v dan λ, atau dengan kata lain bahwa

limk→∞

xk = v dan limk→∞

ck = λ. (3.6)

Jika x0 merupakan vektor eigen namun x0 6= v, maka inisialisasi x0 harus diubah.

Untuk memahami konsep metode power ini, sebagai contoh misalkan

A =

0 11 −5

−2 17 −7

−4 26 −10

(3.7)

dan inisialisasi yang digunakan adalah x0 =[1 1 1

]′. Dengan menggunakan Per-

samaan 3.4 dan 3.5, diperoleh iterasi pertama yaitu 0 11 −5

−2 17 −7

−4 26 −10

1

1

1

=

6

8

12

= 12

1223

1

= c1x1.

Kemudian iterasi kedua menghasilkan 0 11 −5

−2 17 −7

−4 26 −10

1223

1

=

73103163

=16

3

71658

1

= c2x2.

Proses ini berlanjut hingga diperoleh pasangan eigen yang konvergen, seperti yang

terlihat pada Tabel 3.2. Berdasarkan hasil iterasi, barisan vektor eigen konvergen

ke v =[25

35

1]′

dan barisan konstanta konvergen ke λ = 4.

Pemprograman Komputer II 24 Nanda Arista Rizki, M.Si.

Page 27: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Tabel 3.2: Iterasi Metode Power untuk Matriks A (Pers. 3.7)

k Axk = yk ck+1xk+1

0 [ 6.000000 8.000000 12.00000 ]′ 12.00000 [ 0.500000 0.666667 1]′

1 [ 2.333333 3.333333 5.333333 ]′ 5.333333 [ 0.437500 0.625000 1]′

2 [ 1.875000 2.750000 4.500000 ]′ 4.500000 [ 0.416667 0.611111 1]′

3 [ 1.722222 2.555556 4.222222 ]′ 4.222222 [ 0.407895 0.605263 1]′

4 [ 1.657895 2.473684 4.105263 ]′ 4.105263 [ 0.403846 0.602564 1]′

5 [ 1.628205 2.435897 4.051282 ]′ 4.051282 [ 0.401899 0.601266 1]′

6 [ 1.613924 2.417722 4.025316 ]′ 4.025316 [ 0.400943 0.600629 1]′

7 [ 1.606918 2.408805 4.012579 ]′ 4.012579 [ 0.400470 0.600313 1]′

8 [ 1.603448 2.404389 4.006270 ]′ 4.006270 [ 0.400235 0.600156 1]′

9 [ 1.601721 2.402191 4.003130 ]′ 4.003130 [ 0.400117 0.600078 1]′

10 [ 1.600860 2.401095 4.001564 ]′ 4.001564 [ 0.400059 0.600039 1]′

3.3 Shifted-inverse Power Method

Misalkan A adalah matriks n×n yang memiliki pasangan eigen yaitu λ dan v, maka

berlaku:

1. Shifting Eigenvalues.

Jika α adalah sebarang konstanta, maka λ − α dan v adalah pasangan eigen

dari matriks A− αI.

2. Inverse Eigenvalues.

Jika λ 6= 0, maka 1/λ dan v adalah pasangan eigen dari matriks A−1.

3. Jika α 6= λ, maka maka 1/(λ− α) dan v adalah pasangan eigen dari matriks

(A− αI)−1.

Jika diasumsikan matriks A memiliki nilai eigen yang berbeda, yaitu λ1, λ2, . . . , λn.

Maka sebuah konstanta α dapat dipilih sedemikian sehingga

µ1 = 1/(λj − α) (3.8)

adalah nilai eigen dominan dari matriks (A− αI)−1. Lebih lanjut, ketika x0 dipilih

dengan tepat, maka barisan{xk =

[x(k)1 , x

(k)2 , . . . , x

(k)n

]}dan {ck} dapat dibangkit-

Pemprograman Komputer II 25 Nanda Arista Rizki, M.Si.

Page 28: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

kan secara rekursif dengan cara berikut:

yk = (A− αI)−1xk (3.9)

xk+1 =1

ck+1

yk, (3.10)

dimana ck+1 = x(k)j dan x

(k)j = max

1≤i≤n{|x(k)i |} akan konvergen ke pasangan eigen

dari matriks (A − αI)−1, yaitu µ1 dan vj. Dengan demikian, nilai eigen yang

berkorespondensi dengan matriks A adalah

λj =1

µ1

+ α. (3.11)

Konsep shifted-inverse power method lebih mudah dipahami jika mengambil

contoh matriks sebelumnya. Misalkan

A =

0 11 −5

−2 17 −7

−4 26 −10

, (3.12)

yang diketahui bahwa memiliki nilai eigen λ1 = 4, λ2 = 2, dan λ3 = 1. Pengerjaan

metode ini dilakukan dengan 3 kasus.

1. Untuk λ1 = 4.

Jika dipilih α = 4.2, maka matriks A− 4.2I adalah sebagai berikut.

A− 4.2I =

−4.2 11 −5

−2 12.8 −7

−4 26 −14.2

.Jika dimulai dengan x0 =

[1 1 1

]′, maka berdasarkan Persamaan 3.9 di-

peroleh vektor y0 =[−9.545454545 −14.09090909 −23.18181818

]′. Lalu

hitung nilai tertinggi dari y0 yaitu c1 = −23.18181818. Selanjutnya berda-

sarkan Persamaan 3.10, diperoleh x1 =[0.4117647059 0.6078431373 1

]′.

Langkah ini berlanjut hingga diperoleh iterasi seperti pada Tabel 3.3.

Pemprograman Komputer II 26 Nanda Arista Rizki, M.Si.

Page 29: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Tabel 3.3: Iterasi Shifted-inverse Power Method untuk Matriks A− 4.2I

k (A− 4.2I)−1xk = ck+1xk+1

0 -23.18181818 [ 0.4117647059 0.6078431373 1 ]′

1 -5.356506239 [ 0.4009983361 0.6006655574 1 ]′

2 -5.030252609 [ 0.4000902120 0.6000601413 1 ]′

3 -5.002733697 [ 0.4000081966 0.6000054644 1 ]′

4 -5.000248382 [ 0.4000007451 0.6000004967 1 ]′

5 -5.000022579 [ 0.4000000677 0.6000000452 1 ]′

6 -5.000002053 [ 0.4000000062 0.6000000041 1 ]′

7 -5.000000187 [ 0.4000000006 0.6000000004 1 ]′

8 -5.000000017 [ 0.4000000001 0.6000000000 1 ]′

Perhatikan bahwa barisan {ck} konvergen ke µ1 = −5 yang merupakan nilai

eigen dari (A − 4.2I)−1 dan barisan {Xk} konvergen ke v1 =[25

35

1]′

.

Dengan demikian, nilai eigen λ1 dari A diperoleh dengan perhitungan berikut.

λ1 =1

µ1

+ α =1

(−5)+ 4.2 = −0.2 + 4.2 = 4.

2. Untuk λ2 = 2.

Pilih α = 2.1, lalu dimulai dengan vektor x0 =[1 1 1

]′. Sehingga diperoleh

matriks A− 2.1I dan vektor y0 berikut.

A− 2.1I =

−2.1 11 −5

−2 14.9 −7

−4 26 −12.1

; y0 =

11.05263158

21.57894737

42.63157895

.Lalu hitung konstanta c1 = 42.63157895. Kemudian berdasarkan Persamaan

3.10, diperoleh x1 =[0.2592592593 0.5061728395 1

]′. Langkah ini berlanjut

hingga diperoleh iterasi seperti yang tampak pada Tabel 3.4.

Perhatikan bahwa nilai eigen dominan dari (A − 2.1I)−1 adalah µ1 = −10.

Dengan demikian, pasangan eigen dari matriks A adalah

λ2 =1

µ1

+ α =1

(−10)+ 2.1 = −0.1 + 2.1 = 2

v2 =

1412

1

.Pemprograman Komputer II 27 Nanda Arista Rizki, M.Si.

Page 30: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Tabel 3.4: Iterasi Shifted-inverse Power Method untuk Matriks A− 2.1I

k (A− 2.1I)−1xk = ck+1xk+1

0 42.63157895 [ 0.2592592593 0.5061728395 1 ]′

1 -9.350227420 [ 0.2494788047 0.4996525365 1 ]′

2 -10.03657511 [ 0.2500273314 0.5000182209 1 ]′

3 -9.998082009 [ 0.2499985612 0.4999990408 1 ]′

4 -10.00010097 [ 0.2500000757 0.5000000505 1 ]′

5 -9.999994686 [ 0.2499999960 0.4999999973 1 ]′

6 -10.00000028 [ 0.2500000002 0.5000000001 1 ]′

3. Untuk λ3 = 1.

Pilih α = 0.875, lalu dimulai dengan vektor x0 =[1 1 1

]′. Hasil iterasi

metode ini, disajikan ke dalam Tabel 3.5.

Tabel 3.5: Iterasi Shifted-inverse Power Method untuk Matriks A− 0.875I

k (A− 0.875I)−1xk = ck+1xk+1

0 -30.40000000 [ 0.5052631579 0.4947368421 1 ]′

1 8.404210526 [ 0.5002004008 0.4997995992 1 ]′

2 8.015390782 [ 0.5000080006 0.4999919994 1 ]′

3 8.000614449 [ 0.5000003200 0.4999996800 1 ]′

4 8.000024576 [ 0.5000000128 0.4999999872 1 ]′

5 8.000000983 [ 0.5000000005 0.4999999995 1 ]′

6 8.000000039 [ 0.5000000000 0.5000000000 1 ]′

Perhatikan bahwa nilai eigen dominan dari (A − 0.875I)−1 adalah µ1 = 8.

Dengan demikian, pasangan eigen dari matriks A adalah

λ3 =1

µ1

+ α =1

8+ 0.875 = 0.125 + 0.875 = 1

v2 =

1212

1

.Berdasarkan hasil iterasi pada Tabel 3.5, barisan vektor {xk} jika dimulai dari

x0 =[1 1 1

]′maka konvergen dalam 7 iterasi.

Pemprograman Komputer II 28 Nanda Arista Rizki, M.Si.

Page 31: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

3.4 Latihan

1. Diberikan sebuah vektor v =[v1 v2 . . . vn

]. Buatlah program Pascal yang

dapat menghitung Manhattan norm berikut.

‖v‖1 := |v1|+ |v2|+ · · ·+ |vn|.

2. Buatlah suatu program Pascal yang dapat menghitung p-norm untuk vektor

v dalam soal nomor 1, ketika p = 3.

‖v‖p := (|v1|p + |v2|p + · · ·+ |vn|p)1p .

3. Buatlah suatu program Pascal yang dapat menghitung norm tak hingga untuk

vektor v dalam soal nomor 1.

‖v‖∞ := max{|v1|, |v2|, . . . , |vn|}.

4. Misalkan A =

0 11 −5

−2 17 −7

−4 26 −10

dan x0 =

1

1

1

. Buatlah program Pascal yang

dapat menentukan nilai eigen dominan dan vektor eigen dominan!

5. Misalkan A =

[2 0

1 8

]dan x0 =

[1

1

]. Buatlah program Pascal yang dapat

menentukan nilai eigen dan vektor eigen menggunakan Shifted-inverse Power

Method !

Pemprograman Komputer II 29 Nanda Arista Rizki, M.Si.

Page 32: Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2.pdf · 3 m=length(P) 4 fors=0tonm 5 ifP[1..m]==T[s+1..s+m] ... selanjutnya sadalah shift yang valid

Daftar Pustaka

[1] Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C. (2014). Introduction to

Algorithms, 3rd ed. Cambridge: MIT Press.

[2] Gonnet, G.H., Baeza-Yates, R. (1991). Handbook of Algorithms and Data Stru-

ctures: In Pascal and C, 2nd ed. New York: Addison-Wesley Publishing.

[3] Mathews, J.H., Fink, K.D. (1999). Numerical Methods Using MATLAB, 3rd

ed. New Jersey: Prentice-Hall.

30