Modul 3:
Solu si SP SPAL dengan Tekn ik Dekom posisi
A. Prinsip Dekomposisi
LU dan
LU
Identitas
Matriks [A] dari SPAL didekomposisi (difaktorisasis) menjadi matriks-matrik segitiga bawah ( L) dan segitiga atas ( U ) sedemikian rupa sehingga identitasnya adalah: [A] = [L]·[U ] B. Notasi Matriks Notasi matriks
L
=
L
A
atau
=
L·U
LU berdasarkan Metode Doolittle
seperti di atas dituliskan sbb:
1 l 2,1 M l i ,1 l i +1,1 M l n,1
0 1
L L
0 0
M
O
M
l i,2
L
1
L 0 L 0 L
l i +1, 2 L l i +1, i L M M O l n,2
L
0 0 M 1 M
l n,i
L
Perhatikan, bahwa semua elemen diagonal dari matriks atas berharga 1 (satu) ! Notasi matriks
U
=
U dituliskan
u1,1 0 M 0 0 M 0
u1, 2 u 2, 2
L u1, i L L
u1, n −1 u 2, n −1
M
0 0
ui , n −1
0
di
sbb:
M
M
L
O O L L
ui +1, n −1
M
0
M ui , n ui +1, n M u n, n u1, n u 2, n
Perhatikan, bahwa semua elemen yang terletak di bawah Seri Kuliah Metode Numerik (Modul 3: Solusi SPAL dengan Teknik Dekomposisi
LU )
(1/1)
diagonal dari matriks C. Notasi Matriks Notasi matriks
L
=
L
U di
atas (=
u 1,1 1,1
… u n n, n ) berharga 0 (nol) !
LU berdasarkan Metode Crout
seperti di atas dituliskan sbb:
l 1,1 l 2,1 M l i ,1 l i+1,1 M l n,1
0
L
l 2, 2
L
M
0 0
L
M
O
L
l i,2
L
l i ,i
L
l i +1, 2
L
l i +1,i
L
M
M
l n, 2
L
l n ,i
L
0 0
0 0 M l n ,n M
Perhatikan, bahwa semua elemen diagonal dari matriks L di atas tidak harus berharga 1 (satu), sedangkan, elemen-elemen di atas diagonal semuanya berharga 0 (nol) ! Notasi matriks
U
=
U dituliskan
1 0 M 0 0 M 0
sbb:
u1, 2 L u1, i
u1, n −1
1
L L
u 2 , n −1
M
O
0 0
M O
ui +1, n −1
M
0
ui , n −1
M L L
0
u 2, n M ui , n ui +1, n M 1 u1, n
Perhatikan, bahwa semua elemen diagonal (= u 1,1 1,1 … u n n, n ) berharga 1 (satu), sedangkan yang terletak di bawahnya berharga 0 (nol) ! D. Notasi Matriks
A
dan LU dalam SPAL
Notasi Matriks LU sebagai dekomposan matriks dituliskan dalam SPAL sbb:
A
dapat
[A] · [x ] = [L]·[U ]·[ ]·[x ] = [b ]
Seri Kuliah Metode Numerik (Modul 3: Solusi SPAL dengan Teknik Dekomposisi
LU )
(2/2)
Sehingga, dalam notasi a1,1 a2,1 M an,1
L a1,n
a1, 2 a 2, 2
L a 2 ,n
=
a n ,n M
L
L
Metode Doolittle dapat dituliskan:
1 l 2,1 M l n ,1
Sedangkan, dalam notasi a1,1 a2,1 M an,1
L a1,n
a1, 2 a 2, 2
L a 2 ,n M
L
=
L a n ,n
0
L
u1,1 0 · M M 1 0
L 0 L 0
l n,2 L
u1, 2
L
L u1,n L a 2, n
u n ,n M
0
L
Metode Crout dapat dituliskan:
l 1,1 l 2,1 M l n,1
0
L
O
L
l n, 2
O L
0 0
1 0 · M M l n , n 0
u1, 2
L u1,n
1
L a2,n
0
O L
1 M
E. Deskripsi Tahapan dan Strategi Dekomposisi Notasi A = LU dalam Metode Doolittle seperti di atas dapat diuraikan dalam operasi perkalian matriks (sebagai contoh: matriks n x n ) sbb: Baris 1 (i = 1): a1,1 a1, 2
M a1, n
= u1,1 = u1, 2 M = u1, n
u1, i
= a1, i ;
i
= 1, K, n
Baris 2 (i = 2): = l2,1·u1,1 a2,2 = l2,1·u1,2 + u2,2 a2,3 = l2,1·u1,3 + u2,3 a2,1
M a2,n
M
= l2,1·u1,n + u2,n
Seri Kuliah Metode Numerik (Modul 3: Solusi SPAL dengan Teknik Dekomposisi
LU )
(3/3)
Baris 3 (i = 3): = l3,1·u1,1 a3,2 = l3,1·u1,2 + l32·u2,2 a3,3 = l3,1·u1,3 + l32·u2,3 + u3,3 a3,1
M a3,n
M
= l3,1·u1,n + l32·u2,n + u3,n
Baris n (i = n ): ): an,1 an,2 an,3
M an,n-1 an,n
= ln,1·u1,1 = ln,1·u1,2 + ln,2·u2,2 = ln,1·u1,3 + ln,2·u2,3 + ln,3·u3,3 M
= ln,1·u1,n-1 + ln,2·u2,n-1 + ln,3·u3,n-1 + … + ln,n-1·un-1,n-1 = ln,1·u1,n + ln,2·u2,n + ln,3·u3,n + … + … + un,n
# Dari operasi-operasi operasi-operasi perkalian matriks dapat disimpulkan beberapa hal berikut:
LU
seperti di atas,
(1). Mekanisme ‘proses dekomposisi’ dilakukan dengan cara mengisi terlebih dahulu baris pertama matriks U . Selanjutnya, mengisi matriks L pada baris terendah terlebih dulu (mulai baris ke-2), dan kemudian diikuti pengisian matriks U pada baris yang sama, demikian seterusnya sampai baris terakhir (ke- n ). ). (2). Harga-harga dari semua elemen matriks U pada baris 1 identik dengan elemen-elemen matriks A (matriks asal), (3). Harga-harga elemen pada kolom 1 untuk matriks dihitung menggunakan persamaan berikut: li ,1 ,1
=
a i i ,1 ,1
/ u 1,1 1,1 ;
i =
L,
dapat
2,…,n
(4). Jumlah maksimum operasi penjumlahan per elemen matriks A sesuai dengan jumlah/posisi baris, (5). Pada baris rendah, langkah/iterasi pengisian matriks U lebih banyak dibandingkan dengan matriks L, dan sebaliknya. Seri Kuliah Metode Numerik (Modul 3: Solusi SPAL dengan Teknik Dekomposisi
LU )
(4/4)
Tugas / Latihan: Latihan: Lakukan hal yang sama seperti di atas untuk konfigurasi matriks LU yang disusun dengan Metode Crout ! F. Algoritma Dekomposisi dan Komputasi Praktis (a). Algoritma solusi numerik dengan
Metode Doolittle :
Baris 1: u1, i
=
a1, i ;
i
= 1, L, n
Baris 2: ð
Pengisian matriks L: l 2,1
ð
=
a2,1 u1,1
Pengisian matriks u 2, 2 u 2, 3 u 2, 4
U :
= = =
− l 2,1 ⋅ u1, 2 a2,3 − l 2,1 ⋅ u1,3 a2, 4 − l 2,1 ⋅ u1, 4
=
a2, n
a2 , 2
M u 2, n
− l 2, n ⋅ u1, n
Baris 3: ð
ð
Pengisian matriks L: l 3,1
=
l 3, 2
=
a3,1 u1,1
(a3,2 − l 3,1 ⋅ u1,2 ) u 2, 2
Pengisian matriks u3,3 u3, 4
= =
a3,3
=
a3, n
U :
− l 3,1 ⋅ u1,3 − l 3,2 ⋅ u2,3 a3, 4 − l 3,1 ⋅ u1, 4 − l 3, 2 ⋅ u 2, 4
M u3, n
− l 3,1 ⋅ u1, n − l 3, 2 ⋅ u 2, n
Seri Kuliah Metode Numerik (Modul 3: Solusi SPAL dengan Teknik Dekomposisi
LU )
(5/5)
Baris n : ð
Pengisian matriks L: l n ,1
=
an ,1 u1,1
l n, 2
=
(an,2 − l n,1 ⋅ u1,2 )
l n ,3
=
(an,3 − l n,1 ⋅ u1,3 − l n,2 ⋅ u2,3 )
u 2, 2
u3,3
M l n , n −1
ð
=
(an, n −1 − l n,1 ⋅ u1, n −1 − l n,2 ⋅ u2, n −1 − L − l n, n −1 ⋅ un −1, n −1 ) u n −1, n −1
Pengisian matriks u n, n
=
an , n
U :
− l n ,1 ⋅ u1, n − l n, 2 ⋅ u2, n − L − l n, n −1 ⋅ un −1, n
(b). Algoritma solusi numerik dengan
Metode Crout :
Sebaai latihan, coba saudara lakukan sendiri dengan cara mengikuti langah-langkah untuk Metode Doolittle seperti di atas dengan cermat dan seksama! Fortran-77 untuk Metode Doolittle : (c). Komputasi dengan FortranMODEL VARIABEL MATRIKS (2-dimensi): C
PROGRAM Pengujian Dekomposisi LU
C C
Deklarasi Jenis dan Variabel: ----------------------------IMPLICIT NONE INTEGER iarg PARAMETER (iarg = 7) INTEGER i,j,neq REAL*8 A(iarg,iarg),LU(iarg,iarg) LU(iarg,iarg)
C
CALL system('clear') C C
Proses Pemasukan Harga Variabel: -------------------------------WRITE(*,10) 'Jumlah Persamaan : ' READ(*,*) neq DO i = 1,neq
Seri Kuliah Metode Numerik (Modul 3: Solusi SPAL dengan Teknik Dekomposisi
LU )
(6/6)
DO j = 1,neq WRITE(*,20) 'A(',i,',',j,') : ' READ(*,*) A(i,j) ENDDO ENDDO C C
Proses Pemanggilan Subprogram Eliminasi Gauss-Jordan: ----------------------------------------------------CALL DECOLU(neq,A,LU)
C C
Pemaparan/penyajian Hasil Perhitungan: -------------------------------------WRITE(*,30) 'Matriks LU yang diperoleh:' DO i = 1,neq DO j = 1,neq WRITE(*,40) LU(i,j) ENDDO WRITE(*,*) ENDDO
C
10 20 30 40 40
FORMAT FORMAT FORMAT FORMAT FORMAT
(3X,A,$) (3X,A,I1,A1,I1,A,$) (/,1X,A) (3X,F10.4,$) (3X,F10.4,3X,F10.4,3X,F10.4,3X,F10.4,3X,F10.4)
STOP END
SUBROUTINE DECOLU(n,A,LU) C --------------------------------------------------------------------------C SUBPROGRAM DEKOMPOSI LU: | C Merupakan solusi DEKOMPOSISI Matriks A menjadi matriks-matriks L | C dan U dengan format [A] = [L].[U] yang hasilnya disimpan dalam LU | C n = dimensi matriks A (identik dengan jumlah PAL), | C A = matriks bujur sangkar n x n yang berisi koefisien persamaan, | C LU = matriks bujur sangkar tempat penyimpanan hasil dekomposisi | C matrik A menjadi L dan U (yang disimpan sekaligus dalam LU). | C --------------------------------------------------------------------------C C
Deklarasi Variabel: ------------------INTEGER n REAL*8 A(7,7),LU(7,7) INTEGER i,j,k REAL*8 sum
C C
Proses pengisian matriks L dan U (dalam matriks LU): ----------------------------------------------------
C C
C C
DO j = 1,n Proses pengisian matriks U pada baris pertama: ---------------------------------------------LU(1,j) = A(1,j) ENDDO DO i = 2,n Proses pengisian matriks L: --------------------------LU(i,1) = A(i,1)/LU(1,1) sum = 0.0D0 DO j = 2,i-1 DO k = 1,i-2 sum = sum + LU(i,k)*LU(k,j) ENDDO LU(i,j) = (A(i,j) - sum)/LU(j,j) ENDDO
Seri Kuliah Metode Numerik (Modul 3: Solusi SPAL dengan Teknik Dekomposisi
LU )
(7/7)
C C
Proses pengisian matriks U: --------------------------DO j = i,n sum = 0.0D0 DO k = 1,i-1 sum = sum + LU(i,k)*LU(k,j) ENDDO LU(i,j) = A(i,j) - sum ENDDO ENDDO RETURN END
MODEL VARIABEL VEKTOR (2-dimensi): C C C
PROGRAM Solusi Sistem Persamaan Aljabar Linier (SPAL) atau atau Persamaan Aljabar Linier Simultan dengan teknik TRIDIAGONAL yang terwakili (disimpan) dalam 1 vektor
C C
Deklarasi Jenis dan Variabel: ----------------------------IMPLICIT NONE INTEGER iarg PARAMETER (iarg = 7) INTEGER i,neq REAL*8 b(iarg),d(3*iarg),x(iarg) CALL system('clear') OPEN (10,FILE='s3diag.dta')
C C
Proses Pemasukan Harga Variabel: -------------------------------READ(10,*) neq WRITE(*,*) 'Jumlah Persamaan : ',neq READ(10,*) d(1+neq),d(1+2*neq),b(1) DO i = 2,neq-1 READ(10,*) d(i),d(i+neq),d(i+2*neq),b(i) ENDDO READ(10,*) d(neq),d(neq+neq),b(neq)
C C
Proses Pemanggilan Subprogram Eliminasi Gauss-Jordan: ----------------------------------------------------CALL V3DIAG(neq,d,x,b)
C C
Pemaparan/penyajian Hasil Perhitungan: -------------------------------------WRITE(*,*) '--------HASIL---------' DO i = 1,neq WRITE(*,40) 'x(',i,') = ',x(i) ENDDO CLOSE(10) 20 FORMAT (3X,A,I1,A1,I1,A,G15.7) 30 FORMAT (5X,A,I1,A,G15.7) 40 FORMAT (5X,A,I1,A,G15.7) STOP END INCLUDE 'v3diag.sub'
Seri Kuliah Metode Numerik (Modul 3: Solusi SPAL dengan Teknik Dekomposisi
LU )
(8/8)
File v3diag.sub (dalam include): SUBROUTINE V3DIAG(n,d,x,b) C --------------------------------------------------------------------------C SUBPROGRAM SOLUSI MATRIKS TRI-DIAGONAL dengan ELIMINASI GAUSS | C Merupakan solusi Sistem Persamaan Aljabar Linier (SPAL) dengan | C format persamaan matriks: [A].[x] = [b], dengan rincian sbb | C n = jumlah persamaan aljabar linier (dimensi SPAL) | C d(2..n) = vektor koefisien diagonal bawah dengan dimensi n-1,| C d(n+1..2n) = vektor koefisien diagonal utama dengan dimensi n, | C d(2n+1..3n-1) = vektor koefisien diagonal atas dengan dimensi n-1, | C x = vektor variabel persamaan yang akan dicari harga-harganya | C b = vektor ruas kanan yang berisi harga-harga persamaan tunggal | C --------------------------------------------------------------------------C C
Deklarasi Variabel: ------------------INTEGER n REAL*8 d(3*n),b(n),x(n) INTEGER i,l,m REAL*8 PIVOT,MULT
C C
Proses solusi: (a) Substitusi dan Eliminasi ------------------------------------------DO i = 1,n-1 PIVOT = d(i+n) MULT = d(i+1)/PIVOT d(i+1) = MULT d(i+n+1) = d(i+n+1) - MULT*d(i+2*n) b(i+1) = b(i+1) - MULT*b(i) ENDDO
C C
Proses solusi: (b) Substitusi Balik ----------------------------------x(n) = b(n)/d(n+n) DO i = n-1,1,-1 x(i) = (b(i) - d(i+2*n)*x(i+1))/d(i+n) ENDDO RETURN END
(d). Untuk Pemahaman P emahaman yang lebih l ebih mendalam, me ndalam, cobalah buat program dalam bahasa FortranFortran-77 untuk Metode Crout ! G. Manfaat Dekomposisi
LU untuk
Solusi SPAL
Solusi SPAL [A] · [ x] = [ b], melalui teknik dekomposisi matriks [A], sangat bermanfaat untuk menyelesaikan problem-problem ataupun model matematis yang membentuk SPAL dengan matriks [A] yang sama untuk berbagai vektor jawab, [ b]. Dengan teknik dekomposisi LU ini, penyelesaian akan menjadi sangat efisien dan banyak menghemat waktu pada saat telah Seri Kuliah Metode Numerik (Modul 3: Solusi SPAL dengan Teknik Dekomposisi
LU )
(9/9)
diperoleh dekomposisi matriks [ A], karena hasil dekomposisi LU tersebut dapat dipakai untuk semua SPAL dengan matriks [A] yang identik. Bentuk umum SPAL yang menggunakan matriks [ A] yang identik, seperti disebutkan di atas, dapat dituliskan sbb: x1,1 x1,2 [A] · M x1, n
L xn,1 x2,2 L xn, 2 M M x2, n L xn, n x2,1
b1,1 b1,2 = M b1, n
b2,1 b2,2
L bn,1 bn, 2
M b2, n
bn, n M
L
Perhatikan, bahwa bentuk di atas sesungguhnya merupakan perkalian 2 bentuk matriks, antara matriks bujur sangkar [A] yang berdimensi n x n dengan matrik segi 4 yang berdimensi n x m , dengan hasil matriks lain yang juga berdimensi n x m ! H. Solusi Numerik SPAL melalui Dekomposisi
LU
Subprogram (SUBROUTINE) di bawah ini dapat digunakan untuk solusi SPAL dengan bentuk normal: [A [ A] · [x ] = [b ], ], menggunakan matriks LU sebagai hasil dekomposisi matriks [A] dengan Metode Doolittle. C
PROGRAM Solusi SPAL dengan Dekomposisi LU
C C
Deklarasi Jenis dan Variabel: ----------------------------IMPLICIT NONE INTEGER iarg PARAMETER (iarg = 7) INTEGER i,j,neq REAL*8 LU(iarg,iarg),b(iarg),x(iarg) CALL system('clear') OPEN (11,FILE='inputLU.dta')
C C
Proses Pemasukan Harga Variabel dari FILE: -----------------------------------------READ(11,*) neq DO i = 1,neq READ(11,*) (LU(i,j), j=1,neq),b(i) ENDDO
C C
Proses Pemanggilan Subprogram Eliminasi Gauss-Jordan: ----------------------------------------------------CALL DECOLU(neq,LU) CALL SOLVLU(neq,LU,x,b)
Seri Kuliah Metode Numerik (Modul 3: Solusi SPAL dengan Teknik Dekomposisi
LU )
(10/10)
C C
Pemaparan/penyajian Hasil Perhitungan: -------------------------------------WRITE(*,30) 'Matriks LU dan vektor x yang diperoleh:' DO i = 1,neq DO j = 1,neq WRITE(*,40) LU(i,j) ENDDO WRITE(*,50) 'x(',i,') = ',x(i) ENDDO CLOSE(11) 10 20 30 40 50
FORMAT FORMAT FORMAT FORMAT FORMAT
(3X,A,$) (3X,A,I1,A1,I1,A,$) (/,1X,A) (3X,F10.4,$) (5X,1H|,5X,A,I1,A,G10.4)
STOP END INCLUDE 'decoLU.sub' INCLUDE 'solvLU.sub'
Tugas ! Ujilah program di atas untuk SPAL berikut: 2 1 3 x1 11 4 3 10 ⋅ x2 = 28 2 4 17 x3 31
Perhatikan dengan seksama hasil dekomposisinya (matriks dan solusi vektor x-nya !
LU )
I. Daftar Pustaka Atkinson, Kendal E., “An Introduction to Numerical Analysis”, John Wiley & Sons, Toronto, pp. 33-39, 1978. Atkinson, L.V., Harley, P.J., “An Introduction to Numerical Methods with Pascal”, Addison-Wesley Publishing Co., Tokyo, pp. 49-59, 1983. Bismo, Setijo, “Kumpulan Bahan Kuliah Metode Numerik”, Jurusan TGP-FTUI, 1999.
Seri Kuliah Metode Numerik (Modul 3: Solusi SPAL dengan Teknik Dekomposisi
LU )
(11/11)