• Tidak ada hasil yang ditemukan

LU DECOMPOSITION (FAKTORISASI MATRIK)

N/A
N/A
Protected

Academic year: 2021

Membagikan "LU DECOMPOSITION (FAKTORISASI MATRIK)"

Copied!
11
0
0

Teks penuh

(1)

LU DECOMPOSITION

(FAKTORISASI MATRIK)

Dr. Eng. Supriyanto, M.Sc

Lab. Komputer, Departemen Fisika, Universitas Indonesia

email: supri@fisika.ui.ac.id atau supri92@gmail.com

5 Februari 2005

Pada semua catatan yang terdahulu, telah diulas secara panjang lebar bahwa sistem persamaan linear dapat dicari solusinya secara langsung dengan metode eliminasi gauss. Namun perlu juga diketahui bahwa eliminasi gauss bukan satu-satunya metode dalam mencari solusi sistem persamaan linear, misalnya ada metode matrik inversi seperti yang dijelaskan pada catatan yang paling terakhir. Terlepas dari masalah in-efisiensi penye-lesaiannya, yang jelas metode invers matrik bisa digunakan untuk menyelesaikan sistem persamaan linear.

Nah, pada catatan kali ini, saya ingin mengetengahkan sebuah metode yang lain untuk menyelesaikan sistem persamaan linear, yaitu metode faktorisasi matrik yang umum dikenal sebagai LU-decomposition. Metode ini sekaligus menjadi pengantar menuju metode Singular Value Decomposition, (SVD), suatu metode yang saat ini paling “han-dal” dalam menyelesaikan sistem persamaan linear dan merupakan bagian dari metode

least square.

Seperti biasa, kita berasumsi bahwa sistem persamaan linear dapat dinyatakan dalam operasi matrik

Ax = b (1)

Pada metode LU-decomposition, matrik A difaktorkan menjadi matrik L dan matrik U, dimana dimensi atau ukuran matrik L dan U harus sama dengan dimensi matrik A. Atau

(2)

dengan kata lain, hasil perkalian matrik L dan matrik U adalah matrik A,

A = LU (2)

sehingga persamaan (1) menjadi

LUx = b

Langkah penyelesaian sistem persamaan linear dengan metode LU-decomposition, di-awali dengan menghadirkan vektor y dimana,

Ux = y (3)

Langkah tersebut tidak bermaksud untuk menghitung vektor y, melainkan untuk menghi-tung vektor x. Artinya, sebelum persamaan (3) dieksekusi, nilai-nilai yang menempati elemen-elemen vektor y harus sudah diketahui. Lalu bagaimana cara memperoleh vektor

y? Begini caranya,

Ly = b (4)

Kesimpulannya, metode LU-decomposition dilakukan dengan tiga langkah sebagai berikut: • Melakukan faktorisasi matrik A menjadi matrik L dan matrik U → A = LU.

• Menghitung vektor y dengan operasi matrik Ly = b. Ini adalah proses

forward-substitution atau substitusi-maju.

• Menghitung vektor x dengan operasi matrik Ux = y. Ini adalah proses

backward-substitution atau substitusi-mundur.

Metode LU-decomposition bisa dibilang merupakan modifikasi dari eliminasi gauss, karena beberapa langkah yang mesti dibuang pada eliminasi gauss, justru harus dipakai oleh LU-decomposition. Untuk lebih jelasnya, perhatikan contoh berikut ini. Diketahui sistem persamaan linear sebagai berikut

P1 : x1 + x2 + 3x4 = 4

P2 : 2x1 + x2 x3 + x4 = 1

P3 : 3x1 x2 x3 + 2x4 = -3

(3)

Sistem tersebut dapat dinyatakan dalam operasi matrikAx = y, ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 1 0 3 2 1 −1 1 3 −1 −1 2 −1 2 3 −1 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ x1 x2 x3 x4 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦= ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 4 1 −3 4 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ (5)

Pada metode eliminasi gauss, matrik A dikonversi menjadi matrik triangular melalui uru-tan operasi-operasi berikut: (P2− 2P1) → (P2), (P3− 3P1) → (P3), (P4− (−1)P1) → (P4), (P3 − 4P2) → (P3), (P4 − (−3)P2) → (P4). Disisi lain, vektor b ikut berubah

nilainya menyesuaikan proses triangularisasi, ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 1 0 3 0 −1 −1 −5 0 0 3 13 0 0 0 −13 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ x1 x2 x3 x4 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦= ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 4 −7 13 −13 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ (6)

Lain halnya dengan metode LU-decomposition dimana vektor b tidak mengalami peruba-han. Yang berubah hanya matrik A saja, yaitu menjadi matrik L dan matrik U,A = LU

A = ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 1 0 3 2 1 −1 1 3 −1 −1 2 −1 2 3 −1 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦= ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 0 0 0 2 1 0 0 3 4 1 0 −1 −3 0 1 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 1 0 3 0 −1 −1 −5 0 0 3 13 0 0 0 −13 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ Jadi matrik L dan U masing-masing adalah

L = ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 0 0 0 2 1 0 0 3 4 1 0 −1 −3 0 1 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ U = ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 1 0 3 0 −1 −1 −5 0 0 3 13 0 0 0 −13 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦

Coba bandingkan matrik U di atas dengan matrik hasil triangularisasi dari metode elim-inasi gauss pada persamaan (6), sama persis bukan? Jadi, cara memperoleh matrik U adalah dengan proses triangularisasi! Lantas, bagaimana cara memperoleh matrik L? Be-gini caranya: (1) elemen-elemen diagonal matrik L diberi nilai 1 (Asal tahu saja, cara ini dikenal dengan metode Doolittle). (2) elemen-elemen matrik L yang berada di atas elemen-elemen diagonal diberi nilai 0. (3) sedangkan, elemen-elemen matrik L yang be-rada di bawah elemen-elemen diagonal diisi dengan faktor pengali yang digunakan pada

(4)

proses triangularisasi eliminasi gauss. Misalnya pada operasi(P2− 2P1) → (P2), maka faktor pengalinya adalah 2; pada operasi (P3 − 3P1) → (P3), maka faktor pengalinya adalah3, dan seterusnya.

Inilah letak perbedaannya, seluruh faktor pengali tersebut sangat dibutuhkan pada metode LU-decomposition untuk membentuk matrik L. Padahal dalam metode eliminasi gauss, seluruh faktor pengali tersebut tidak dimanfaatkan alias dibuang begitu saja. Di-sisi lain, vektor b tidak mengalami proses apapun sehingga nilainya tetap. Jadi, proses konversi matrik pada metode LU-decomposition hanya melibatkan matrik A saja!

Setelah langkah faktorisasi matrik A dilalui, maka operasi matrik pada persamaan (5) menjadi, ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 0 0 0 2 1 0 0 3 4 1 0 −1 −3 0 1 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 1 0 3 0 −1 −1 −5 0 0 3 13 0 0 0 −13 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ x1 x2 x3 x4 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦= ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 4 1 −3 4 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ (7)

Langkah berikutnya adalah menentukan vektor y, dimanaLy = b, ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 0 0 0 2 1 0 0 3 4 1 0 −1 −3 0 1 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ y1 y2 y3 y4 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦= ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 4 1 −3 4 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦

Dengan proses substitusi-maju, elemen-elemen vektor y dapat ditentukan, y1 = 4,

2y1+ y2 = 1,

3y1+ 4y2+ y3 = −3,

−y1− 3y2+ y4 = 4

maka diperolehy1 = 4, y2= −7, y3 = 13, y4 = −13.

Langkah terakhir adalah proses substitusi-mundur untuk menghitung vektor x, dimana Ux = y, ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 1 0 3 0 −1 −1 −5 0 0 3 13 0 0 0 −13 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ x1 x2 x3 x4 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦= ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 4 −7 13 −13 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦

(5)

Melalui proses ini, yang pertama kali didapat solusinya adalah x4, kemudian x3, lalu diikutix2, dan akhirnyax1.

x4 = 1

x3 = 13(13 − 13x4) = 0

x2 = −(−7 + 5x4+ x3) = 2

x1 = 4 − 3x4 − x2 = −1

akhirnya diperoleh solusi x1 = −1, x2 = 2, x3 = 0, dan y4 = 1. Demikianlah contoh penyelesaian sistem persamaan linear dengan metode LU-decomposition.

Sekali matrik A difaktorkan, maka vektor b bisa diganti nilainya sesuai dengan sistem persamaan linear yang lain, misalnya seluruh nilai di ruas kanan diganti menjadi

P1 : x1 + x2 + 3x4 = 8

P2 : 2x1 + x2 x3 + x4 = 7

P3 : 3x1 x2 x3 + 2x4 = 14

P4 : −x1 + 2x2 + 3x3 x4 = -7

Dalam operasi matrik menjadi ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 1 0 3 2 1 −1 1 3 −1 −1 2 −1 2 3 −1 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ x1 x2 x3 x4 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦= ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 8 7 14 −7 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ (8)

Perhatikan baik-baik! Matrik A sama persis dengan contoh sebelumnya. Perbedaannya hanya pada vektor b. Selanjutnya, dengan metode LU-decomposition, persamaan (8) menjadi ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 0 0 0 2 1 0 0 3 4 1 0 −1 −3 0 1 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 1 1 0 3 0 −1 −1 −5 0 0 3 13 0 0 0 −13 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ x1 x2 x3 x4 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦= ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ 8 7 14 −7 ⎤ ⎥ ⎥ ⎥ ⎥ ⎦ (9)

Silakan anda lanjutkan proses perhitungannya dengan mencari vektor y sesuai contoh yang telah diberikan sebelumnya. Pada akhirnya akan diperoleh solusi sebagai berikut: x1 = 3, x2 = −1, x3 = 0, dan y4 = 2.

(6)

Sekarang saatnya saya tunjukkan algoritma metode LU decomposition. Algoritma ini dibuat untuk menyelesaikan sistem persamaan linear, dengan cara menfaktorkan matrik A = (aij) berukuran n x n menjadi matrik L = (lij) dan matrik U = (uij) dengan ukuran yang sama. Algoritma LU-decomposition yang anda lihat sekarang merupakan modifikasi dari algoritma eliminasi gauss. Silakan anda periksa langkah-langkah mana saja yang telah mengalami modifikasi! Tapi asal tahu saja bahwa ini bukan satu-satunya algoritma untuk mendapatkan matrik LU. Sejauh yang saya tahu, ada algoritma lain untuk tujuan yang sama, dimana algoritma tersebut membutuhkan matrik permutasi untuk menggeser elemen pivot yang bernilai nol agar terhindar dari singular. Nah, sedangkan algoritma yang akan anda baca saat ini, sama sekali tidak “berurusan” dengan matrik permutasi. Algoritma ini cuma memanfaatkan “trik” tukar posisi yang sudah pernah dibahas di awal-awal catatan khususnya ketika membahas konsep eliminasi gauss.

Satu lagi yang harus saya sampaikan juga adalah bahwa dalam algoritma ini, elemen matrik L dan matrik U digabung jadi satu dan menggantikan seluruh elemen-elemen matrik A. Perhatian! cara ini jangan diartikan sebagai perkalian matrik L dan matrik U menjadi matrik A kembali. Cara ini dimaksudkan untuk menghemat memori komputer. Suatu aspek yang tidak boleh diabaikan oleh para programer. Marilah kita simak algoritmanya bersama-sama!

INPUT: dimensin; nilai elemen aij,1 ≤ i, j ≤ n; nilai elemen bi.

OUTPUT: solusi x1, x2, x3, ..., xn atau pesan kesalahan yang mengatakan bahwa fak-torisasi tidak mungkin dilakukan.

• Langkah 1: Inputkan konstanta-konstanta dari sistem persamaan linear kedalam elemen-elemen matrik A dan vektor b, seperti berikut ini:

A = ⎡ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ a11 a12 . . . a1n a21 a22 . . . a2n .. . ... ... an1 an2 . . . ann ⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ b = ⎡ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ b1 b2 .. . bn ⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ (10)

• Langkah 2: Untuk i = 1, ..., n − 1, lakukan Langkah 3 sampai Langkah 5.

• Langkah 3: Definisikan p sebagai integer dimana i ≤ p ≤ n. Lalu pastikan bahwa api = 0. Langkah dilakukan bila ditemukan elemen diagonal yang bernilai nol (aii = 0). Ketika ada elemen diagonal yang bernilai nol, maka

(7)

program harus mencari dan memeriksa elemen-elemen yang tidak bernilai nol dalam kolom yang sama dengan kolom tempat elemen diagonal tersebut be-rada. Jadi saat proses ini berlangsung, integer i (indeks dari kolom) dibuat konstan, sementara integer p (indeks dari baris) bergerak dari p = i sampai p = n. Bila ternyata setelah mencapai elemen paling bawah dalam kolom tersebut, yaitu saat p = n tetap didapat nilai api = 0, maka sebuah pesan dimunculkan:sistem persamaan linear tidak memiliki solusi yang unik. Lalu program berakhir: STOP.

• Langkah 4: Namun jika sebelum integer p mencapai nilai p = n sudah diper-oleh elemen yang tidak sama dengan nol (api = 0), maka bisa dipastikan p = i. Jika p = i maka lakukan proses pertukaran (Pp)↔ (Pi).

• Langkah 5: Untuk j = i + 1, .., n, lakukan Langkah 6 dan Langkah 7. • Langkah 6: Tentukan mji,

mji = aaji ii • Langkah 7: Lakukan proses triangularisasi,

(Pj − mjiPi) → (Pj) • Langkah 8: Nilai mji disimpan keaji,

aji = mji

• Langkah 9: Nilai b1dicopy key1, lalu lakukan substitusi-maju.

y1 = b1 Untuki = 2, ..., n tentukan xi, yi = bi− i−1  j=1 aijyj

• Langkah 10: Lakukan proses substitusi-mundur, dimulai dengan menentukan xn, xn= an,n+1a nn Untuki = n − 1, ..., 1 tentukan xi, xi = ai,n+1− n j=i+1aijxj aii

(8)

• Langkah 11: Diperoleh solusi yaitu x1, x2, ..., xn. Algoritma telah dijalankan den-gan sukses. STOP.

Algoritma di atas telah diimplementasi kedalam program yang ditulis dengan bahasa Fortran. Program tersebut sudah berhasil dikompilasi dengan visual fortran (windows) dan g77 (debian-linux). Inilah programnya:

DIMENSION A(10,11), B(10), Y(10), X(10) REAL MJI

WRITE(*,*)

WRITE(*,*) ’==> FAKTORISASI MATRIK: LU DECOMPOSITION <==’ WRITE (*,*)

C LANGKAH 1: MEMASUKAN NILAI ELEMEN-ELEMEN MATRIK A DAN VEKTOR B

WRITE (*,’(1X,A)’) ’JUMLAH PERSAMAAN ? ’ READ (*,*) N

WRITE (*,*)

WRITE (*,*) ’MASUKAN ELEMEN-ELEMEN MATRIK A’ DO 50 I = 1,N

DO 60 J = 1,N

WRITE (*,’(1X,A,I2,A,I2,A)’) ’A(’,I,’,’,J,’) = ’ READ (*,*) A(I,J)

60 CONTINUE

WRITE (*,’(1X,A,I2,A)’) ’B(’,I,’) ? ’ READ (*,*) B(I)

WRITE (*,*)

50 CONTINUE

WRITE (*,*)

C MENAMPILKAN MATRIK A

WRITE (*,’(1X,A)’) ’MATRIK A:’ DO 110 I = 1,N

WRITE (*,6) (A(I,J),J=1,N)

110 CONTINUE

WRITE (*,*)

C LANGKAH 2: MEMERIKSA ELEMEN-ELEMEN PIVOT

(9)

DO 10 I=1,NN

C LANGKAH 3: MENDEFINISIKAN P

P = I

100 IF (ABS(A(P,I)).GE.1.0E-20 .OR. P.GT.N) GOTO 200

P = P+1 GOTO 100

200 IF(P.EQ.N+1)THEN

C MENAMPILKAN PESAN TIDAK DAPAT DIFAKTORKAN

WRITE(*,8) GOTO 400 END IF

C LANGKAH 4: PROSES TUKAR POSISI

IF(P.NE.I) THEN DO 20 JJ=1,N C = A(I,JJ) A(I,JJ) = A(P,JJ) A(P,JJ) = C 20 CONTINUE END IF

C LANGKAH 5: PERSIAPAN PROSES TRIANGULARISASI

JJ = I+1 DO 30 J=JJ,N

C LANGKAH 6: TENTUKAN MJI

MJI = A(J,I)/A(I,I)

C LANGKAH 7: PROSES TRIANGULARISASI

DO 40 K=JJ,N

A(J,K) = A(J,K)-MJI*A(I,K)

40 CONTINUE

C LANGKAH 8: MENYIMPAN MJI KE A(J,I)

A(J,I) = MJI

30 CONTINUE

10 CONTINUE

C MENAMPILKAN MATRIK LU

(10)

DO 120 I = 1,N WRITE (*,6) (A(I,J),J=1,N) 120 CONTINUE WRITE (*,*) C LANGKAH 9: SUBSTITUSI-MAJU Y(1) = B(1) DO 15 I=2,N SUM = 0.0 DO 16 J=1,I-1 SUM = SUM+A(I,J)*Y(J) 16 CONTINUE Y(I) = B(I)-SUM 15 CONTINUE C MENAMPILKAN VEKTOR Y

WRITE (*,’(1X,A)’) ’VEKTOR Y:’ DO 138 I = 1,N WRITE (*,6) Y(I) 138 CONTINUE WRITE (*,*) C LANGKAH 10: SUBSTITUSI-MUNDUR X(N) = Y(N)/A(N,N) DO 24 K=1,N-1 I = N-K JJ = I+1 SUM = 0.0 DO 26 KK=JJ,N SUM = SUM+A(I,KK)*X(KK) 26 CONTINUE X(I) = (Y(I)-SUM)/A(I,I) 24 CONTINUE

C LANGKAH 11: MENAMPILKAN SOLUSI DAN SELESAI

WRITE (*,’(1X,A)’) ’SOLUSI:’ DO 18 I = 1,N

(11)

18 CONTINUE WRITE(*,*)

WRITE(*,*) ’SELESAI --> SUKSES’ WRITE(*,*)

400 CONTINUE

6 FORMAT(1X,5(F14.8))

8 FORMAT(1X,’TIDAK DAPAT DIFAKTORKAN’)

END

Demikianlah, sekarang kita punya tiga buah algoritma untuk memecahkan problem sistem persamaan linear, yaitu eliminasi gauss, invers matrik, dan lu-decomposition. Di-antara ketiga-nya, eliminasi gauss adalah algoritma yang paling simpel dan efisien. Dia hanya butuh proses triangularisasi dan substitusi-mundur untuk mendapatkan solusi. Sedan-gkan dua algoritma yang lainnya membutuhkan proses-proses tambahan untuk mendap-atkan solusi yang sama.

Saya cukupkan sementara sampai disini. Insya Allah akan saya sambung lagi dilain waktu. Kalau ada yang mau didiskusikan, silakan hubungi saya melalui email.

Referensi

Dokumen terkait

Nilai retensi protein dengan penambahan prebiotik cenderung lebih tinggi dibanding perlakuan kontrol, hal ini menunjukkan bahwa protein dari pakan dengan penambahan prebiotik

Ekstraksi merupakan suatu cara untuk menarik atau memindahkan sebagian atau seluruh komponen kimia yang terdapat dalam suatu sampel tumbuhan dengan pelarut

Pada tahap analisis, kamus data digunakan sebagai alat komunikasi antara analisis sistem dengan pemakai sistem tentang data yang mengalir dari sistem, yaitu

Lakukan operasi baris elementer sehingga semua elemen dari kolom pivot menjadi nol (0) kecuali pivot number yang harus bernilai satu (1). 1

Dari data sumur uji yang dilakukan pada daerah uji petik Sonai KD/SU-1 terlihat, bahwa zona limonit di daerah ini cukup tebal kurang lebih 4 m dengan kadar Fe = 200.000 ppm = 20

Kesalahan pemahaman, regulasi dan sikap dari birokrat/ aparatur pemerintah terhadap peraturan bersama menteri agama dan menteri dalam negeri (PBM) nomor 9/8 tahun

Penelitian dilakukan untuk memperoleh bukti empiris tentang pengaruh pemahaman tentang panggilan guru Kristen terhadap Pemberitaan Injil Guru-guru Gereja Kristen

In this case, the writer only discusses about one of the rules of language namely; tenses and especially, the students‘ knowledge of simple past tense with using English story and