Anda di halaman 1dari 7

1 BAB 7 METODE FAKTORISASI Pendahuluan Metode eliminasi Gauss telah dibahas dalam bab yang lalu dalam rangka

meyelesaikan soal Ax = b. Metode itu pada dasarnya memanfaatkan matrix dengan sifat khusus yang disebut matrix Gauss, dalam usaha memecah matrix A itu ke dalam dua buah matrix, yaitu MSB-satuan L dan MSA U sedemikian sehingga A = LU. Dengan cara itu diperoleh keuntungan substansial dalam komputasi. Metode Gauss hanya merupakan salah satu implementasi dari metode-metode pemecahan atas soal Ax = b yang bertumpu pada gagasan memecah matrix A ke dalam dua atau tiga buah matrix. Atas dsar itu terbuka peluang untuk memecahkan soal dengan cara yang lebih mudah jauh lebih mudah daripada jika diselesaikan melalui proses invers yang sifatnya langsung (misalnya dengan cara SMW). Sepantasnyalah jika secara umum katagori pendekatan ini disebut metode faktorisasi. Sebelum membahas implementasi altenatif dari metode Gauss, yaitu faktorisasi Doolittle, disajikan lebih dahulu metode memecah matrix A menjadi dua buah matrix G dan H sedemikian sehingga A = G + H. Metode ini diperkenalkan oleh Seidel. Faktorisasi Seidel A = G + H Dengan matrix A dipecah menjadi A = G + H, maka dari Ax = b diperoleh (G + H)x = b. Dari pernyataan ini didapatkan pernyataan lain x = G-1b G-1Hx dengan asumsi dasar, yaitu bahwa matrix G taksingular dan inversnya telah dihitung. Atas dasar ini Seidel mengembangkan proses komputasi yang sifatnya iteratif xk+1 = G-1b G-1Hxk bertumpu pada suatu taksiran awal xo. Pada dasarnya ada banyak cara untuk memilih G. Oleh karena itu faktorisasi Seidel hanya merupakan salah satu dari sejumlah metode-metode yang bersifat iteratif. Faktorisasi Doolittle Doolittle mengusulkan teknik komputasi yang lebih elegan A = LU aij = eiTAej = eiT LUej = (eiT L)(Uej) aij =

r =1

ir

u rj = i1u1j + i2u2j + i3u3j + + inunj .

Karena dipilih L MSB-satuan, dan U MSA, operasi penjumlahan dalam rumus itu tidak harus dikerjakan n kali, namun kurang dari itu tergantung kepada nilai dari i dan j. Oleh karena itu perlu ditinjau 3 buah kasus:

2 (1) kasus i = j = k: akk =

r =1

kr

u rk = k1u1k + k2u2k + k3u3k + + kkukk

= { k1u1k + k2u2k + k3u3k + + k,k-1u.k-1k } + kkukk. Karena telah dipilih kk = 1, maka diperoleh rumus untuk menghitung ukk : ukk = akk { k1u1k + k2u2k + k3u3k + + k,k-1u.k-1,k }. (2) kasus i < j : Dalam kasus ini penjumlahan hanya dapat dikerjakan i kali. Oleh karena itu aij =

r =1

ir

u rj = i1u1j + i2u2j + i3u3j + + iiuij

= { i1u1j + i2u2j + i3u3j + + i,i-1u.i-1j } + iiuij. Karena telah dipilih ii = 1, maka atas dasar relasi ini dapat diperoleh rumus untuk uij, yaitu: uij = aij { i1u1j + i2u2j + i3u3j + + i,k-1u.k-1,j }. (3) kasus i > j : Berbeda dengan kasus (2), sekarang penjumlahan hanya dapat dilakukan j kali saja. Oleh karena itu aij =

r =1

ir

u rj = i1u1j + i2u2j + i3u3j + + iiuij

= { i1u1j + i2u2j + i3u3j + + i,j-1uj-1,j } + iiuij. Misalnya nilai uij sudah dihitung sebelumnya, maka relasi ini memberi kita kesempatan untuk menghitung ij. Hasilnya adalah sebagai dibawah ini:
ij = [ aij { i1u1j + i2u2j + i3u3j + + i,k-1u.k-1,j } ] / uii.

Atas dasar kenyataan itu Doolittle mengkonstruksi algoritma yang elegan untuk melaksanakan proses faktorisasi atas matrix bujur sangkar. Pada gilirannya, proses itu membuka peluang untuk memecahkan soal Ax = b, jika A dan b diketahui: (1) lakukan faktorisasi atas A menjadi L dan U, sedemikian sehingga A = LU; (2) misalkan y = Ux, selesaikan Ly = b; (3) selesaikan Ux = y, untuk mendapatkan x yang merupakan solusi atas Ax = b. Perhatikanlah bahwa tahap (2) dan (3) dapat dilakukan tanpa operasi invers. Manfaat samping operasi faktorisasi Doolittle ini adalah bahwa nilai determinan matrix juga diperoleh,mengingat det(A) = det(LU) = det(L) det(U) = det(U). Determinan matrix adalah hasil perkalian nilai elemen-elemen diagonal matrix segitiga atas U.

FAKTORISASI DOOLITTLE (tanpa penukaran baris) 0. Langkah awal: k : = 1, untuk j = 1, 2, ..., n, kerjakan u1j : = a1j j1 : = aj1/u11 1. Untuk langkah k = 2, 3, ... (n-1), kerjakan : Untuk j = k, k+1, k+2, ... , n, kerjakan: k 1 ukj : = akj - r =1 kr urj
jk : = (ajk -

k 1 r =1

jr urk ) /ukk

2. Langkah terakhir, k = n, kerjakan: n 1 unn : = ann - r =1 nr u rn Tahap 0 terdiri atas dua operasi. Operasi pertama menetapkan nilai elemen baris pertama matrix U, sedangkan operasi yang kedua menetapkan nilai elemen kolom pertama matrix L, dengan menggunakan rumus kasus (2) dan kasus (3). Perhatikan bahwa operasi pertama hanya operasi kopi, sedang operasi kedua memberi jaminan bahwa 11 = 1. Tahap 1 memanfaatkan rumus (2) dan (3) untuk langkah-langkah k = 2,3, .., (n-1). Tiap langkah terdiri atas 2 operasi. Operasi pertama untuk menetapkan nilai elemen matrix U pada baris k, sedang operasi kedua menetapkan nilai elemen matrix L pada kolom k. Dijamin juga kk = 1. Akhirnya dalam tahap 2 hanya dihitung unn dengan rumus (2). Jika rumus (3) dipakai, pastilah nn = 1 juga. Faktorisasi Doolittle disebut elegan, karena soal yang terkesan sulit dapat dipecahkan dengan modal kertas, pensil, penghapus dan kalkulator untuk matrix ukuran sedang. Operasi dapat dilakukan tanpa menyentuh bagian matrix A yang belum gilirannya digarap. Jika dilaksanakan dengan komputer, yang diperlukan hanyalah memori untuk menyimpan matrix A, karena matrix hasil, yaitu matrix L dan U, dapat langsung menempati lokasi memori untuk matrix A. Dus dapat dilaksanakan untuk pada komputer untuk matrix skala besar Dalam rumusan di atas, algoritma Doolittle tidak melakukan operasi penukaran baris. Dalam praktek sangat bijaksana jika pada tiap langkah k =1,2,3, .., (n-1) dilakukan operasi penukaran baris untuk menghindari kemacetan dalam menghitung nilai elemen-elemen matrix L oleh pembagian dengan angka nol (jika didapatkan u kk = 0). Bagaimana operasi penukaran baris dilakukan? Cara terbaik untuk menghindari u kk = 0 pada langkah k adalah dengan menukar lebih dahulu matrix baris k dengan baris m > k, sedemikian sehingga akk merupakan elemen dengan nilai absolut terbesar terhadap amk, untuk m > k. Pada azasnya algoritma dengan penukaran baris adalah algoritma tanpa penukaran baris atas matrix PA, dengan P matrix permutasi yang dibangkitkan sambil berjalan. Skrip MATLAB untuk operasi Doolittle tanpa penukaran baris % program faktorisasi A = LU menurut Doolittle TANPA penukaran baris ... % inputkan : matrix A

4 % output : matrix segitiga bawah satuan LL % matrix segitiga atas UU clear; a = [2 1 0 1 3; 8 6 6 2 8; 0 -4 -5 1 -6; 16 24 24 13 33; 0 0 6 26 -17]; alama = a; b = [10 20 30 40 50]'; % program mylu1 adalah di bawah ini: % untuk cek, sesudah exekusi, inputkan ll*uu - alama % hasilnya harus sama dengan nol [n,n] = size(a); for j = 2:n, a(j,1) = a(j,1)/a(1,1); end; for k = 2:(n-1), % pembentukan faktor ke-2 s/d ke-(n-1) for j = k:n, c = 0; for m = 1:(k-1), c = c + a(k,m)*a(m,j); end; a(k,j) = a(k,j) - c; end; for j = (k+1):n, c = 0; for m = 1:(k-1), c = c + a(j,m)*a(m,k); end; a(j,k) = (a(j,k) - c)/a(k,k); end; end; % pembentukan faktor terakhir c = 0; for m = 1:(n-1), c = c + a(n,m)*a(m,n); end; a(n,n) = a(n,n) - c; ll = tril(a,-1)+eye(n,n); uu = triu(a); % menyelesaikan persamaan linear a*x = b dengan ll*uu*x = b % langkah maju y(1) = b(1);

5 for j = 2:n, c = 0; for m = 1:(j-1) c = c + a(j,m)*y(m); end; y(j) = b(j) - c; end; % langkah mundur -- hasil ada di vektor b b(n) = y(n)/a(n,n); for j = n-1:-1:1, c = 0; for m = j+1:n c = c + a(j,m)*b(m); end; b(j) = (y(j) - c)/a(j,j); end; Ilustrasi Atas matrix A tersebut dibawah ini ingin dilakukan operasi faktorisasi tanpa penukaran baris.
1 2 2

A = 3
4 5

8 0 16 0

1 6 4 24 0

0 6 5 24 6

1 2 1 13 26

3 8 6 33 17

1. Langkah 1 Mengikuti resep, penetapan atas baris 1 dari U dan kolom 1 dari L menghasilkan:
1 ... 2 4 3

0 4
5

8 0

: : : : : :

1 ... 6 4 24 0

0 ... 6 5 24 6

1 ... 2 1 13 26

3 ... 8 6 33 17

2. Langkah 2 Penetapan baris 2 dari U dan kolom 2 dari L :


1 2 3 4 5

2 ... 4 0 8 0

: : : : : :

1 ... 2 2 8 0

0 ... 6 5 24 6

1 ... 2 1 13 26

3 ... 4 6 33 17

3. Langkah 3
Penetapan baris 3 dari U dan kolom 3 dari L membawa kepada hasil dibawah ini:

6
1 2 3 4 5

2 4 ... 0 8 0

1 2 ... 2 8 0

: : : : : :

0 6 ... 7 24 / 7 6/7

1 2 ... 3 13 26

3 4 ... 14 33 17

4. Langkah 4
Penetapan baris 4 dari U, kolom 4 dari L :
1 4 2

2 0 8

1 2 2 ... 8 0

0 6 7 ... 24 / 7 6/7

: : : : : :

1 2 3 ... 75 / 7 8/3

3 ... 4 5

3 4 14 ... 7 17

5. Langkah 5 merupakan langkah terakhir:


Penetapan elemen terakhir dari U (sesuai rumus) memberi :
1 2

2 4 3 0 4 8 5 0

1 2 2 8 0

0 6 7 24 / 7 6/7

1 2 3 75 / 7 8/3

3 4 14 l 7 41 / 3

Patutlah dicatat bahwa hasil faktorisasi ini sama dengan hasil operasi eliminasi Gauss, sekalipun mengikuti alur komputasi yang berbeda. Jadi hasil akhir adalah
1 4 L = 0 8 0 0 1 2 8 0 0 0 1 24 / 7 6/7 0 0 0 1 8/3 0 0 0 , 0 1 2 0 U = 0 0 0 1 2 0 0 0 0 6 7 0 0 1 2 3 75 / 7 0 3 4 14 . 7 41 / 3

Sekarang jika sisi kanan persamaan linear Ax = b adalah b = [10 20 30 40 50]T, maka pada akhirnya diperoleh solusi x = [1.6829 44.0780 -26.3610 -0.1268 -12.4390] T. Pembaca dapat mencek kebenarannya dengan memasukkannya kembali ke dalam persamaan linear tersebut. Rangkuman Pada dasarnya metode Doolittle hanya memerlukan kertas, potlot dan karet penghapus saja untuk operasi faktorisasi. Awalnya, matrix A disusun dalam tabel n baris dan n kolom. Lalu secara sistematis (dalam n langkah) tabel tersebut diubah menjadi tabel-gabungan matrix L dan matrix U, seraya membuang semua elemen bernilai nol dalam L dan dalam U, serta elemen diagonal dari L (bernilai satu). Tabel-gabungan itu sebenarnya berisi matrix T = L+U-I. Di bawah ini suatu bagan sederhana, agar mudah menghafalya. Pada awal langkah ke-k, tabel-gabungan wujudnya adalah di bawah ini.

7 k u11
21

j ... ...

u12 ... u1,k-1 u22 ... u2,k-1


u1,k u2,k uk-1,k akk ak+1,k

u1,j ... u1,n u2,j ... u2,n


k-1,1 k-1,2 ... uk-1,k-1

. . uk-1,j ... uk-1,n .. akj ... akn

baris k

k1

k2 ...

k,k-1

k+1,1 k+1,2 ... k+1, k-1


baris i

i1

i2 ...

i,k-1

aik ank

Bagian matrix ini belum


disentuh sama sekali akan

n1

n2 ...

n,k-1

dalam langkah ke-k ini

Daerah kiri atas, kanan atas, serta kiri bawah sudah terisi dengan elemen-elemen matrix L dan U. Daerah kanan bawah terisi oleh elemen-elemen matrix A yang belum tersentuh oleh algoritma. Dalam langkah ke-k, dihitung dahulu nilai elemen-elemen baris k matrix U, menurut rumus yang diberikan. Selanjutnya, dihitung nilai elemen-elemen kolom k matrix L, berdasar rumus pula. Elemen diagonal tidak usah dihitung. Urutan hitungan tidak dapat dibalik. Pada langkah ke-1 (k = 1), baris pertama matrix A langsung menjadi baris pertama matrix U. Kolom pertama matrix L sajalah yang harus dihitung. Selanjutnya, pada langkah terakhir (k = n), tinggal satu elemen saja yang masih harus dihitung, yaitu unn.