Komputasi untuk Sains, (Fortran)

Dr. Eng. Supriyanto, M.Sc

Edisi I

Laboratorium Jaringan Komputer Departemen Fisika-FMIPA Univeristas Indonesia 2006

Untuk Muflih Syamil dan Hasan Azmi........

Mottoku : Tenang, Kalem dan Percaya Diri

Kata Pengantar

Sarjana geofisika harus mampu menunjukkan kemauan dan kemampuan untuk dapat mem- formulasikan masalah, menyusun hipotesis, metode dan solusi serta mampu menyelesaikan masalah-masalah tersebut secara mandiri.

Daftar Isi

Lembar Persembahan i Kata Pengantar

v Daftar Isi

vii Daftar Gambar

xi Daftar Tabel

xiii

1 Matrik dan Komputasi

1.1 Pengenalan Matrik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2 Inisialisasi matrik dalam memori komputer . . . . . . . . . . . . . . . . . . . . . .

1.3 Macam-macam matrik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.1 Matrik transpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.2 Matrik Bujursangkar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.3 Matrik Simetrik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.4 Matrik diagonal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.5 Matrik diagonal dominan . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.6 Matrik identitas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.7 Matrik upper-triangular . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.8 Matrik lower-triangular . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.9 Matrik tridiagonal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.10 Vektor-baris dan Vektor-kolom . . . . . . . . . . . . . . . . . . . . . . . . .

1.4 Operasi matematika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4.1 Penjumlahan matrik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4.2 Komputasi penjumlahan matrik . . . . . . . . . . . . . . . . . . . . . . . .

1.4.3 Perkalian matrik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4.4 Komputasi perkalian matrik . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4.5 Perkalian matrik dan vektor-kolom . . . . . . . . . . . . . . . . . . . . . .

1.4.6 Komputasi perkalian matrik dan vektor-kolom . . . . . . . . . . . . . . . . 10

1.4.7 Matrik positif-definite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.5 Penutup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 Metode Eliminasi Gauss

2.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2 Matrik dan Eliminasi Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.3 Algoritma eliminasi Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3 Metode LU Decomposition

3.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4 Invers Matrik dan Eliminasi Gauss

4.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5 Iterasi Jacobi

5.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

6 Iterasi Gauss-Seidel

6.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

7 Iterasi Succesive-Over-Relaxation

7.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

8 Interpolasi Lagrange

8.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

9 Interpolasi Cubic Spline

9.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

10 Metode Euler

10.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

11 Metode Runge Kutta

11.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

12 Metode Finite Difference

12.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

13 Integral Numerik

13.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

14 Metode Newton 101

14.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

15 Metode Monte Carlo 103

15.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

16 Inversi Linear 107

16.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 16.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

17 Inversi Non-Linear 111

17.1 Penyederhanaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

Daftar Acuan 115

Daftar Gambar

9.1 Fungsi f (x) dengan sejumlah titik data . . . . . . . . . . . . . . . . . . . . . . . . 67

9.2 Pendekatan dengan polinomial cubic spline . . . . . . . . . . . . . . . . . . . . . . 68

9.3 Profil suatu object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

9.4 Sampling titik data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

9.5 Hasil interpolasi cubic spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

9.6 Hasil interpolasi lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

10.1 Metode Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

10.2 Trend error metode euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

11.1 Rangkaian RC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

11.2 Kurva muatan q terhadap waktu t . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

13.1 Metode Trapezoida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

13.2 Metode Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

13.3 Metode Composite Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

14.1 Metode Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

15.1 Lingkaran dan bujursangkar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

15.2 Dart yang menancap pada bidang lingkaran dan bujursangkar . . . . . . . . . . . 104

15.3 Dart yang menancap pada bidang 1/4 lingkaran dan bujursangkar . . . . . . . . 105

Daftar Tabel

7.1 Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

7.2 Relaksasi dengan ω = 1, 25 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Bab 1

Matrik dan Komputasi

✍ Objektif : ⊲ Mengenalkan matrik dan jenis-jenis matrik.

⊲ Mengenalkan operasi penjumlahan dan perkalian matrik. ⊲ Mendeklarasikan elemen-elemen matrik ke dalam memori komputer. ⊲ Membuat script operasi matrik.

1.1 Pengenalan Matrik

Notasi suatu matrik berukuran n x m ditulis dengan huruf besar dan dicetak tebal, misalnya

A n×m . Huruf n menyatakan jumlah baris, dan huruf m jumlah kolom. Matrik terdiri dari elemen-elemen matrik yang dinyatakan dengan huruf kecil diikuti angka-angka indeks, mis- alnya a ij , dimana i menunjukan posisi baris ke-i dan j menentukan posisi kolom ke-j.

a  11 a 12 ...a 1m

 a a ...a 

a n1 a n2 ...a nm

Contoh 1: Matrik A 2×3

A= 647

dimana masing-masing elemennya adalah a 11 = 3, a 12 = 8, a 13 = 5, a 21 = 6, a 22 = 4, dan

a 23 = 7. Contoh 2: Matrik B 3×2

B=   59  

2 BAB 1. MATRIK DAN KOMPUTASI dimana masing-masing elemennya adalah b 11 = 1, b 12 = 3, b 21 = 5, b 22 = 9, b 31 = 2, dan

b 32 = 4.

1.2 Inisialisasi matrik dalam memori komputer

Dalam bahasa pemrograman Fortran77, cara mengisi memori komputer dengan elemen-elemen matrik A 2×3 , sesuai dengan Contoh 1 adalah

A(1,1) = 3 A(1,2) = 8 A(1,3) = 5 A(2,1) = 6 A(2,2) = 4 A(2,3) = 7

Sedangkan untuk matrik B 3×2 , sesuai Contoh 2 adalah B(1,1) = 1

B(1,2) = 3 B(2,1) = 5 B(2,2) = 9 B(3,1) = 2 B(3,2) = 4

1.3 Macam-macam matrik

1.3.1 Matrik transpose

Operasi transpose terhadap suatu matrik akan menukar posisi kolom menjadi posisi baris

demikian pula sebaliknya. Notasi matrik tranpose adalah A t atau A . Contoh 3: Operasi transpose terhadap matrik A

1.3.2 Matrik Bujursangkar

Matrik bujursangkar adalah matrik yang jumlah baris dan jumlah kolomnya sama. Contoh 4: Matrik bujursangkar berukuran 3x3 atau sering juga disebut matrik bujursangkar orde 3

A=   597  

1.3. MACAM-MACAM MATRIK

1.3.3 Matrik Simetrik

Matrik simetrik adalah matrik bujursangkar yang elemen-elemen matrik A bernilai sama den- gan matrik transpose-nya (A t ).

Contoh 5: Matrik simetrik

1.3.4 Matrik diagonal

Matrik diagonal adalah matrik bujursangkar yang seluruh elemen-nya bernilai 0 (nol), kecuali elemen-elemen diagonalnya. Contoh 6: Matrik diagonal orde 3

1.3.5 Matrik diagonal dominan

Matrik diagonal dominan adalah matrik bujursangkar yang memenuhi

j=1,j6=i

dimana i=1,2,3,..n. Coba perhatikan matrik-matrik berikut ini

Pada elemen diagonal a ii matrik A, |7| > |2|+|0|, lalu |5| > |3|+|−1|, dan |−6| > |5|+|0|. Maka matrik A disebut matrik diagonal dominan. Sekarang perhatikan elemen diagonal matrik B, |6| < |4| + | − 3|, | − 2| < |4| + |0|, dan |1| < | − 3| + |0|. Dengan demikian, matrik B bukan matrik diagonal dominan.

1.3.6 Matrik identitas

Matrik identitas adalah matrik bujursangkar yang semua elemen-nya bernilai 0 (nol), kecuali elemen-elemen diagonal yang seluruhnya bernilai 1.

4 BAB 1. MATRIK DAN KOMPUTASI Contoh 7: Matrik identitas orde 3

1.3.7 Matrik upper-triangular

Matrik upper-tringular adalah matrik bujursangkar yang seluruh elemen dibawah elemen di- agonal bernilai 0 (nol). Contoh 8: Matrik upper-triangular

1.3.8 Matrik lower-triangular

Matrik lower-tringular adalah matrik bujursangkar yang seluruh elemen diatas elemen diago- nal bernilai 0 (nol). Contoh 9: Matrik lower-triangular

1.3.9 Matrik tridiagonal

Matrik tridiagonal adalah matrik bujursangkar yang seluruh elemen bukan 0 (nol) berada dis- ekitar elemen diagonal, sementara elemen lainnya bernilai 0 (nol). Contoh 10: Matrik tridiagonal

 A= 2 −4 1

1.3.10 Vektor-baris dan Vektor-kolom

Notasi vektor biasanya dinyatakan dengan huruf kecil dan dicetak tebal. Suatu matrik dina- makan vektor-baris berukuran m, bila hanya memiliki satu baris dan m kolom, yang diny- atakan sebagai berikut

h i h a= i a

11 a 12 ...a 1m = a 1 a 2 ...a m

5 Sedangkan suatu matrik dinamakan vektor-kolom berukuran n, bila hanya memiliki satu kolom

1.4. OPERASI MATEMATIKA

dan n baris, yang dinyatakan sebagai berikut

1.4 Operasi matematika

1.4.1 Penjumlahan matrik

Operasi penjumlahan pada dua buah matrik hanya bisa dilakukan bila kedua matrik tersebut berukuran sama. Misalnya matrik C 2×3

C= 721

dijumlahkan dengan matrik A 2×3 , lalu hasilnya (misalnya) dinamakan matrik D 2×3

D=A+C

Tanpa mempedulikan nilai elemen-elemen masing-masing matrik, operasi penjumlahan antara matrik A 2×3 dan C 2×3 , bisa juga dinyatakan dalam indeks masing-masing dari kedua matrik tersebut, yaitu

11 d 12 d 13 a 11 +c 11 a 12 +c 12 a 13 +c 13

d 21 d 22 d 23 a 21 +c 21 a 22 +c 22 a 23 +c 23

Dijabarkan satu persatu sebagai berikut

d 11 =a 11 +c 11

d 12 =a 12 +c 12

d 13 =a 13 +c 13

d 21 =a 21 +c 21

d 22 =a 22 +c 22

d 23 =a 23 +c 23

6 BAB 1. MATRIK DAN KOMPUTASI Dari sini dapat diturunkan sebuah rumus umum penjumlahan dua buah matrik

(1.5) dimana i=1,2,..,n dan j=1,2,..,m. Sementara n adalah jumlah baris, dan m adalah jumlah kolom.

d ij =a ij +c ij

1.4.2 Komputasi penjumlahan matrik

Berdasarkan contoh operasi penjumlahan di atas, maka secara komputasi dengan bahasa pem- rograman Fortran77, operasi penjumlahan antara matrik A 2×3 dan C 2×3 adalah

do i=1,2 do j=1,3 D(i,j)=A(i,j)+C(i,j) end do end do

Perlu dicatat bahwa ukuran matrik tidak terbatas hanya 2x3. Tentu saja anda bisa mengubah ukurannya sesuai dengan keperluan atau kebutuhan anda. Jika ukuran matrik dinyatakan secara umum sebagai n x m, maka bentuk pernyataan komputasinya menjadi

do i=1,n do j=1,m D(i,j)=A(i,j)+C(i,j) end do end do

Sekarang, mari kita lengkapi dengan contoh sebagai berikut: diketahui matrik A 2×3

A= 647

dan matrik C 2×3

C= 721

Program untuk menjumlahkan kedua matrik tersebut adalah: 1 A(1,1) = 3

2 A(1,2) = 8 3 A(1,3) = 5 4 A(2,1) = 6 5 A(2,2) = 4 6 A(2,3) = 7 7 C(1,1) = 9 8 C(1,2) = 5 9 C(1,3) = 3

1.4. OPERASI MATEMATIKA

7 10 C(2,1) = 7

11 C(2,2) = 2 12 C(2,3) = 1 13 n=2 14 m=3 15 do i=1,n

16 do j=1,m 17 D(i,j)=A(i,j)+C(i,j) 18 end do 19 end do

1.4.3 Perkalian matrik

Operasi perkalian dua buah matrik hanya bisa dilakukan bila jumlah kolom matrik pertama sama dengan jumlah baris matrik kedua. Jadi kedua matrik tersebut tidak harus berukuran sama seperti pada penjumlahan dua matrik. Misalnya matrik A 2×3 dikalikan dengan matrik

B 3×2 , lalu hasilnya (misalnya) dinamakan matrik E 2×2

Tanpa mempedulikan nilai elemen-elemen masing-masing matrik, operasi perkalian antara matrik A 2×3 dan B 3×2 , bisa juga dinyatakan dalam indeks masing-masing dari kedua matrik tersebut, yaitu

11 e 12 a 11 .b 11 +a 12 .b 21 +a 13 .b 31 a 11 .b 12 +a 12 .b 22 +a 13 .b 32

e 21 e 22 a 21 .b 11 +a 22 .b 21 +a 23 .b 31 a 21 .b 12 +a 22 .b 22 +a 23 .b 32

Bila dijabarkan, maka elemen-elemen matrik E 2×2 adalah

e 11 =a 11 .b 11 +a 12 .b 21 +a 13 .b 31

e 12 =a 11 .b 12 +a 12 .b 22 +a 13 .b 32

e 21 =a 21 .b 11 +a 22 .b 21 +a 23 .b 31

e 22 =a 21 .b 12 +a 22 .b 22 +a 23 .b 32

8 BAB 1. MATRIK DAN KOMPUTASI kemudian secara sederhana dapat diwakili oleh rumus berikut

dimana i=1,2, dan j=1,2. Berdasarkan contoh ini, maka secara umum bila ada matrik A n×m yang dikalikan dengan ma- trik B m×p , akan didapatkan matrik E n×p dimana elemen-elemen matrik E memenuhi

dengan i=1,2,. . . ,n dan j=1,2. . . ,p

1.4.4 Komputasi perkalian matrik

Komputasi operasi perkalian antara matrik A 2×3 dan B 3×2 dilakukan melalui 2 tahap; pertama adalah memberikan nilai 0 (nol) pada elemen-elemen matrik E 2×2 dengan cara

do i=1,2 do j=1,2 E(i,j)=0.0 end do end do

kedua adalah menghitung perkalian matrik dengan cara do i=1,2

do j=1,2 do k=1,3 E(i,j)=E(i,j)+A(i,k)*B(k,j) end do end do end do

Tentu saja anda bisa mengubah ukurannya sesuai dengan keperluan atau kebutuhan anda. Jika ukuran matrik A dinyatakan secara umum sebagai n x m dan matrik B berukuran m x p, maka bentuk pernyataan komputasinya menjadi

do i=1,n do j=1,p E(i,j)=0.0 end do end do do i=1,n

do j=1,p

1.4. OPERASI MATEMATIKA

9 do k=1,m

E(i,j)=E(i,j)+A(i,k)*B(k,j) end do end do end do

dimana akan diperoleh hasil berupa matrik E yang berukuran n x p.

1.4.5 Perkalian matrik dan vektor-kolom

Operasi perkalian antara matrik dan vektor-kolom sebenarnya sama saja dengan perkalian an- tara dua matrik. Hanya saja ukuran vektor-kolom boleh dibilang spesial yaitu m x 1, dimana m merupakan jumlah baris sementara jumlah kolomnya hanya satu. Misalnya matrik A, pa-

da contoh 1, dikalikan dengan vektor-kolom x yang berukuran 3 x 1 atau disingkat dengan mengatakan vektor-kolom x berukuran 3, lalu hasilnya (misalnya) dinamakan vektor-kolom y

Sekali lagi, tanpa mempedulikan nilai elemen-elemen masing-masing, operasi perkalian antara matrik A dan vektor-kolom x, bisa juga dinyatakan dalam indeksnya masing-masing, yaitu

1 a 11 .x 1 +a 12 .x 2 +a 13 .x 3

= y 2 a 21 .x 1 +a 22 .x 2 +a 23 .x 3

Bila dijabarkan, maka elemen-elemen vektor-kolom y adalah

y 1 =a 11 .x 1 +a 12 .x 2 +a 13 .x 3 y 2 =a 21 .x 1 +a 22 .x 2 +a 23 .x 3

kemudian secara sederhana dapat diwakili oleh rumus berikut

a ij x j

j=1

10 BAB 1. MATRIK DAN KOMPUTASI dimana i=1,2.

Berdasarkan contoh tersebut, secara umum bila ada matrik A berukuran n x m yang dikalikan dengan vektor-kolom x berukuran m, maka akan didapatkan vektor-kolom y berukuran n x 1 dimana elemen-elemen vektor-kolom y memenuhi

dengan i=1,2,. . . ,n.

1.4.6 Komputasi perkalian matrik dan vektor-kolom

Sama seperti perkalian dua matrik, komputasi untuk operasi perkalian antara matrik A beruku- ran n x m dan vektor-kolom x berukuran m dilakukan melalui 2 tahap; pertama adalah mem- berikan nilai 0 (nol) pada elemen-elemen vektor-kolom y yang berukuran n. Lalu tahap kedua adalah melakukan proses perkalian. Kedua tahapan ini digabung jadi satu dalam program berikut ini

do i=1,n Y(i)=0.0 end do do i=1,n

do j=1,m Y(i)=Y(i)+A(i,j)*X(j) end do end do

1.4.7 Matrik positif-definite

Suatu matrik dikatakan positif-definite bila matrik tersebut simetrik dan memenuhi

(1.8) Contoh 11: Diketahui matrik simetrik berikut

x t Ax > 0

A=   −1 2 −1  

11 untuk menguji apakah matrik A bersifat positif-definit, maka

1.5. PENUTUP

Dari sini dapat disimpulkan bahwa matrik A bersifat positif-definite, karena memenuhi

1 + (x 1 −x 2 ) + (x 2 −x 3 ) +x 3 >0

kecuali jika x 1 =x 2 =x 3 =0.

1.5 Penutup

Demikianlah catatan singkat dan sederhana mengenai jenis-jenis matrik dasar yang seringkali dijumpai dalam pengolahan data fisika secara numerik. Semuanya akan dijadikan acuan atau referensi pada pembahasan topik-topik numerik yang akan datang.

Bab 2

Metode Eliminasi Gauss

✍ Objektif : ⊲ Mengenalkan matrik dan jenis-jenis matrik.

⊲ Mengenalkan operasi penjumlahan dan perkalian matrik. ⊲ Mendeklarasikan elemen-elemen matrik ke dalam memori komputer. ⊲ Membuat script operasi matrik.

2.1 Penyederhanaan

Secara umum, sistem persamaan linear dinyatakan sebagai berikut

(2.1) dimana a dan b merupakan konstanta, x adalah variable, n = 1, 2, 3, ....

a n1 x 1 +a n2 x 2 + ... + a nn x n =b n

Contoh pertama

Misalnya ada sistem persamaan linear yang terdiri dari empat buah persamaan yaitu P 1 , P 2 ,P 3 , dan P 4 seperti berikut ini:

Problem dari sistem persamaan linear adalah bagaimana mencari nilai pengganti bagi vari- abel x 1 ,x 2 ,x 3 , dan x 4 sehingga semua persamaan diatas menjadi benar. Langkah awal penye- lesaian problem tersebut adalah dengan melakukan penyederhanaan sistem persamaan linear. Ada banyak jalan untuk mendapatkan bentuk yang lebih sederhana, namun masalahnya, ki- ta ingin mendapatkan sebuah algoritma program yang nantinya bisa berjalan di komputer, sedemikian rupa sehingga apapun persamaannya, bisa disederhanakan oleh komputer. Kita akan berpatokan pada tiga buah aturan operasi untuk menyederhanakan sistem persamaan

14 BAB 2. METODE ELIMINASI GAUSS linear di atas, yaitu

• Persamaan P i dapat dikalikan dengan sembarang konstanta λ, lalu hasilnya ditempatkan di posisi persamaan P i . Simbol operasi ini adalah (λP i ) → (P i ).

• Persamaan P j dapat dikalikan dengan sembarang konstanta λ kemudian dijumlahkan dengan persamaan P i , lalu hasilnya ditempatkan di posisi persamaan P i . Simbol operasi ini adalah (P i + λP j ) → (P i ).

• Persamaan P i dan P j dapat bertukar posisi. Simbol operasi ini adalah (P i ) ↔ (P j ). Maka dengan berpegang pada aturan-aturan tersebut, problem sistem persamaan linear di atas

akan diselesaikan dengan langkah-langkah berikut ini:

1. Gunakan persamaan P 1 untuk menghilangkan variabel x 1 dari persamaan P 2 ,P 3 dan P 4 dengan cara (P 2 − 2P 1 ) → (P 2 ), (P 3 − 3P 1 ) → (P 3 ) dan (P 4 +P 1 ) → (P 4 ). Hasilnya akan seperti ini

x 1 +x 2 + 3x 4 = 4,

−x 2 −x 3 − 5x 4 = −7,

−4x 2 −x 3 − 7x 4 = −15,

3x 2 + 3x 3 + 2x 4 =8

2. Gunakan persamaan P 2 untuk menghilangkan variabel x 2 dari persamaan P 3 dan P 4 dengan cara (P 3 − 4P 2 ) → (P 3 ) dan (P 4 + 3P 2 ) → (P 4 ). Hasilnya akan seperti ini

Kalau x 3 masih ada di persamaan P 4 , dibutuhkan satu operasi lagi untuk menghilangkan- nya. Namun hasil operasi pada langkah ke-2 ternyata sudah otomatis menghilangkan x 3 .

Bentuk akhir dari keempat persamaan di atas, dikenal sebagai bentuk triangular. Sampai dengan langkah ke-2 ini, kita berhasil mendapatkan sistem persamaan linear

yang lebih sederhana. Apa yang dimaksud dengan sederhana dalam konteks ini? Su- atu sistem persamaan linear dikatakan sederhana bila kita bisa mendapatkan seluruh ni- lai pengganti variabelnya dengan cara yang lebih mudah atau dengan usaha yang tidak memakan waktu lama dibandingkan sebelum disederhanakan. Sekali kita mendapatkan

nilai pengganti bagi variabel x 4 , maka x 3 ,x 2 dan x 1 akan diperoleh dengan mudah dan cepat, sebagaimana yang dijelaskan pada langkah berikutnya.

3. Selanjutnya kita jalankan proses backward-substitution. Melalui proses ini, yang perta- ma kali didapat adalah nilai pengganti bagi variabel x 4 , kemudian x 3 , lalu diikuti x 2 , dan

2.1. PENYEDERHANAAN

15 akhirnya x 1 .

x 2 = −(−7 + 5x 4 +x 3 ) = −(−7 + 5 + 0) = 2,

x 1 = 4 − 3x 4 −x 2 = 4 − 3 − 2 = −1 Jadi solusinya adalah x 1 = −1, x 2 = 2, x 3 = 0 dan x 4 = 1. Coba sekarang anda cek,

apakah semua solusi ini cocok dan tepat bila dimasukan ke sistem persamaan linear yang pertama, yaitu yang belum disederhanakan?

OK, mudah-mudahan ngerti ya... Kalau belum paham, coba diulangi bacanya sekali lagi. Atau, sekarang kita beralih kecontoh yang lain.

16 BAB 2. METODE ELIMINASI GAUSS

Contoh kedua

Misalnya ada sistem persamaan linear, terdiri dari empat buah persamaan yaitu P 1 ,P 2 ,P 3 , dan P 4 seperti berikut ini:

Seperti contoh pertama, solusi sistem persamaan linear di atas akan dicari dengan langkah- langkah berikut ini:

1. Gunakan persamaan P 1 untuk menghilangkan x 1 dari persamaan P 2 ,P 3 dan P 4 dengan cara (P 2 − 2P 1 ) → (P 2 ), (P 3 −P 1 ) → (P 3 ) dan (P 4 −P 1 ) → (P 4 ). Hasilnya akan seperti ini

Perhatikan persamaan P 2 ! Akibat dari langkah yang pertama tadi, x 2 hilang dari per- samaan P 2 . Kondisi ini bisa menggagalkan proses triangularisasi. Untuk itu, posisi P 2 mesti ditukar dengan persamaan yang berada dibawahnya, yaitu P 3 atau P 4 . Supaya proses triangularisasi dilanjutkan kembali, maka yang paling cocok adalah ditukar den- gan P 3 .

2. Tukar posisi persamaan P 2 dengan persamaan P 3 , (P 2 ↔P 3 ). Hasilnya akan seperti ini

3. Gunakan persamaan P 3 untuk menghilangkan x 3 dari persamaan P 4 dengan cara (P 4 − 2P 3 ) → (P 4 ). Hasilnya akan seperti ini

Sampai disini proses triangularisasi telah selesai.

2.2. MATRIK DAN ELIMINASI GAUSS

4. Selanjutnya adalah proses backward-substitution. Melalui proses ini, yang pertama kali

didapat solusinya adalah x 4 , kemudian x 3 , lalu diikuti x 2 , dan akhirnya x 1 .

Jadi solusinya adalah x 1 = −7, x 2 = 3, x 3 = 2 dan x 4 = 2.

Berdasarkan kedua contoh di atas, untuk mendapatkan solusi sistem persamaan linear, diperlukan operasi triangularisasi dan proses backward-substitution. Kata backward-substitution kalau diterjemahkan kedalam bahasa indonesia, menjadi substitusi-mundur. Gabungan pros- es triangularisasi dan substitusi-mundur untuk menyelesaikan sistem persamaan linear dike- nal sebagai metode eliminasi gauss.

2.2 Matrik dan Eliminasi Gauss

Sejumlah matrik bisa digunakan untuk menyatakan suatu sistem persamaan linear. Sejenak, mari kita kembali lagi melihat sistem persamaan linear secara umum seperti berikut ini:

a 11 x 1 +a 12 x 2 +...+a 1n x n =b 1

a 21 x 1 +a 22 x 2 +...+a 2n x n =b 2 ...............=... ...............=...

a n1 x 1 +a n2 x 2 +...+a nn x n =b n

Sementara, kalau dinyatakan dalam bentuk operasi matrik, maka akan seperti ini:

a  11 a 12 ...a 1n x 1 b 1

 a a ...a  

a n1 a n2 ...a nn

Dalam mencari solusi suatu sistem persamaan linear dengan metode eliminasi gauss, ben- tuk operasi matrik di atas dimanipulasi menjadi matrik augment, yaitu suatu matrik yang

18 BAB 2. METODE ELIMINASI GAUSS berukuran n x (n + 1) seperti berikut ini:

a  11 a 12 ...a 1n |b 1 a 11 a 12 ...a 1n |a 1,n+1 

22  2n |b 2   a 21 a 22 ...a 2n |a 2,n+1  

 a 21 a ...a

a n1 a n2 ...a nn |b n

a n1 a n2 ...a nn |a n,n+1

Berdasarkan contoh pertama yang ada dihalaman depan catatan ini, saya akan tunjukkan proses triangularisasi dan substitusi-mundur dalam operasi matrik terhadap sistem persamaan linear yang terdiri dari empat persamaan matematika, yaitu (silakan lihat kembali contoh perta- ma):

Lalu kita dapat membuat matrik augment sebagai berikut:

Kemudian kita lakukan operasi triangularisai terhadap matrik augment, dimulai dari kolom pertama, yaitu

lalu dilanjutkan ke kolom berikutnya

Sebelum dilanjutkan ke substitusi-mundur, saya ingin menegaskan peranan angka-angka in- deks dari masing-masing elemen matrik augment tersebut. Silakan perhatikan posisi masing-

19 masing elemen berikut ini:

2.3. ALGORITMA ELIMINASI GAUSS

Dengan memperhatikan angka-angka indeks pada matrik augment di atas, kita akan menco-

ba membuat rumusan proses substitusi-mundur untuk mendapatkan seluruh nilai pengganti

variabel x. Dimulai dari x 4 ,

ini dapat dinyatakan dalam rumus umum, yaitu

a n,n+1 x n =

a nn lalu dilanjutkan dengan x 3 ,x 2 , dan x 1 .

a 11 1 = −1 ini juga dapat dinyatakan dalam rumus umum yaitu:

i,n+1 − j=i+1 a ij x j

a ii

Proses triangularisasi dan substitusi-mundur dibakukan menjadi algoritma metode elimi- nasi gauss yang dapat diterapkan dalam berbagai bahasa pemrograman komputer, misalnya fortran, C, java, pascal, matlab, dan lain-lain.

2.3 Algoritma eliminasi Gauss

Secara umum, sistem persamaan linear adalah sebagai berikut:

a 11 x 1 +a 12 x 2 +...+a 1n x n =b 1

a 21 x 1 +a 22 x 2 +...+a 2n x n =b 2

a n1 x 1 +a n2 x 2 +...+a nn x n =b n

Algoritma dasar metode eliminasi gauss, adalah sebagai berikut:

1. Ubahlah sistem persamaan linear tersebut menjadi matrik augment, yaitu suatu matrik

20 BAB 2. METODE ELIMINASI GAUSS yang berukuran n x (n + 1) seperti berikut ini:

a  11 a 12 ...a 1n |b 1 a 11 a 12 ...a 1n |a 1,n+1 

  a 21 22 ...a 2n |b 2   a 21 a 22 ...a 2n |a 2,n+1  

a n1 a n2 ...a nn |b n

a n1 a n2 ...a nn |a n,n+1

Jelas terlihat bahwa elemen-elemen yang menempati kolom terakhir matrik augment adalah nilai dari b i ; yaitu a i,n+1 =b i dimana i = 1, 2, ..., n.

2. Periksalah elemen-elemen pivot. Apakah ada yang bernilai nol? Elemen-elemen pivot adalah elemen-elemen yang menempati diagonal suatu matrik, yaitu a 11 ,a 22 , ..., a nn atau disingkat a ii . Jika a ii 6= 0, bisa dilanjutkan ke langkah no.3. Namun, jika ada elemen diagonal yang bernilai nol, a ii = 0, maka baris dimana elemen itu berada harus ditukar posisinya dengan baris yang ada dibawahnya, (P i ) ↔ (P j ) dimana j = i + 1, i + 2, ..., n, sampai elemen diagonal matrik menjadi tidak nol, a ii 6= 0. (Kalau kurang jelas, silakan lihat lagi contoh kedua yang ada dihalaman 3. Sebaiknya, walaupun elemen diagonalnya tidak nol, namun mendekati nol (misalnya 0,03), maka proses pertukaran ini dilakukan juga).

3. Proses triangularisasi. Lakukanlah operasi berikut:

dimana j = i + 1, i + 2, ..., n. Maka matrik augment akan menjadi:

11 a 12 a 13 ...a 1n |a 1,n+1

 0 a 22 a 23 ...a 2n

|a 2,n+1 

 0 0 a 33 ...a 3n |a 3,n+1  

0 0 0 0 a nn |a n,n+1

4. Hitunglah nilai x n dengan cara:

a n,n+1

a nn

5. Lakukanlah proses substitusi-mundur untuk memperoleh x n−1 ,x n−2 , ..., x 2 ,x 1 dengan cara:

i,n+1 − j=i+1 a ij x j

a ii

dimana i = n − 1, n − 2, ..., 2, 1. Demikianlan algoritma dasar metode eliminasi gauss. Selanjutnya algoritma dasar tersebut

perlu dirinci lagi sebelum dapat diterjemahkan kedalam bahasa pemrograman komputer.

2.3. ALGORITMA ELIMINASI GAUSS

2.3.1 Algoritma

Algoritma metode eliminasi gauss untuk menyelesaikan n x n sistem persamaan linear.

a 11 x 1 +a 12 x 2 +...+a 1n x n =b 1

a 21 x 1 +a 22 x 2 +...+a 2n x n =b 2

a n1 x 1 +a n2 x 2 +...+a nn x n =b n

INPUT: sejumlah persamaan linear dimana konstanta-konstanta-nya menjadi elemen-elemen matrik augment A = (a ij ), dengan 1 ≤ i ≤ n dan 1 ≤ j ≤ n + 1.

OUTPUT: solusi x 1 ,x 2 ,x 3 , ..., x n atau pesan kesalahan yang mengatakan bahwa sistem per- samaan linear tidak memiliki solusi yang unik .

• Langkah 1: Inputkan konstanta-konstanta dari sistem persamaan linear kedalam elemen- elemen matrik augment, yaitu suatu matrik yang berukuran n x (n + 1) seperti berikut ini:

11 a 12 ...a 1n |b 1 a 11 a 12 ...a 1n |a 1,n+1 

|b  2   a 21 a 22 ...a 2n |a 2,n+1  

 a 21 a 22 ...a 2n

a n1 a n2 ...a nn |b n

a n1 a n2 ...a nn |a n,n+1

• 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

a pi 6= 0. Jika ada elemen diagonal yang bernilai nol (a ii = 0), maka program harus mencari dan memeriksa elemen-elemen yang tidak bernilai nol dalam kolom yang sama dengan kolom tempat elemen diagonal tersebut berada. Jadi saat proses ini berlangsung, integer i (indeks dari kolom) dibuat konstan, sementara integer p (in- deks 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

a pi = 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 diperoleh elemen yang tidak nol (a pi 6= 0), maka bisa dipastikan p 6= i. Jika p 6= i maka lakukan proses pertukaran (P p ) ↔ (P i ).

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

a ji m ji =

a ii

22 BAB 2. METODE ELIMINASI GAUSS • Langkah 7: Lakukan proses triangularisasi,

(P j −m ji P i ) → (P j )

• Langkah 8: Setelah proses triangularisasi dilalui, periksalah a nn . Jika a nn = 0, kirimkan pesan: sistem persamaan linear tidak memiliki solusi yang unik . Lalu program berakhir: STOP.

• Langkah 9: Jika a nn 6= 0, lakukan proses substitusi mundur, dimulai dengan menentukan x n ,

a n,n+1 x n =

a nn

• Langkah 10: Untuk i = n − 1, ..., 1 tentukan x i ,

i,n+1 − j=i+1 a ij x j

a ii

• Langkah 11: Diperoleh solusi yaitu x 1 ,x 2 , ..., x n . Algoritma telah dijalankan dengan suk- ses. STOP.

Saya telah membuat program sederhana dalam fortran untuk mewujudkan algoritma elim- inasi gauss. Saya berasumsi bahwa anda sudah menguasai dasar-dasar pemrograman dalam fortran. Program ini sudah dicoba di- compile dengan fortran77 under Linux Debian dan visual-fortran under windows-XP. Langkah-langkah yang tercantum pada program ini disesuaikan dengan langkah-langkah yang tertulis di atas. Dalam program ini, ukuran maksimum matrik augment adalah 10 x 11, untuk mencari 10 variabel yang tidak diketahui. Jika anda bermaksud memperbesar atau memperke- cil ukuran matrik augment, silakan sesuaikan angka ukuran matrik yang anda inginkan pada statemen pertama dari program ini, yaitu statemen DIMENSION. Inilah programnya,

DIMENSION A(10,11), X(10) REAL MJI WRITE (*,*) ’=PROGRAM ELIMINASI GAUSS=’ WRITE (*,*) C LANGKAH 1: MEMASUKAN NILAI ELEMEN-ELEMEN MATRIK AUGMENT WRITE (*,’(1X,A)’) ’JUMLAH PERSAMAAN ? ’ READ (*,*) N WRITE (*,*) WRITE (*,*) ’MASUKAN ELEMEN-ELEMEN MATRIK AUGMENT’ M=N+1 DO 50 I = 1,N

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

2.3. ALGORITMA ELIMINASI GAUSS

60 CONTINUE

50 CONTINUE WRITE (*,*) C MENAMPILKAN MATRIK AUGMENT WRITE (*,’(1X,A)’) ’MATRIK AUGMENT:’

DO 110 I = 1,N WRITE (*,’(1X,5(F14.8))’) (A(I,J),J=1,M)

110 CONTINUE WRITE (*,*) C LANGKAH 2: MEMERIKSA ELEMEN-ELEMEN PIVOT DAN PROSES TUKAR POSISI NN = N-1 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 UNIK WRITE(*,5) GOTO 400 END IF C LANGKAH 4: PROSES TUKAR POSISI IF(P.NE.I) THEN

DO 20 JJ=1,M

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: MELAKUKAN PROSES TRIANGULARISASI DO 40 K=JJ,M

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

40 CONTINUE A(J,I) = 0

30 CONTINUE

24 BAB 2. METODE ELIMINASI GAUSS

10 CONTINUE C MENAMPILKAN HASIL TRIANGULARISASI WRITE (*,’(1X,A)’) ’HASIL TRIANGULARISASI:’

DO 120 I = 1,N WRITE (*,’(1X,5(F14.8))’) (A(I,J),J=1,M)

120 CONTINUE C LANGKAH 8: MEMERIKSA ELEMEN A(N,N) IF(ABS(A(N,N)).LT.1.0E-20) THEN C MENAMPILKAN PESAN TIDAK UNIK WRITE(*,5) GOTO 400 END IF C LANGKAH 9: MENGHITUNG X(N) X(N) = A(N,N+1)/A(N,N) C LANGKAH 10: PROSES SUBSTITUSI MUNDUR L = N-1 DO 15 K=1,L

I = L-K+1 JJ = I+1 SUM = 0.0 DO 16 KK=JJ,N

SUM = SUM+A(I,KK)*X(KK)

16 CONTINUE X(I) = (A(I,N+1)-SUM)/A(I,I)

15 CONTINUE C LANGKAH 11: MENAMPILKAN HASIL PERHITUNGAN WRITE (*,*) WRITE (*,7) DO 18 I = 1,N WRITE (*,’(1X,A,I2,A,F14.8)’) ’X(’,I,’) = ’,X(I)

18 CONTINUE 400

STOP

5 FORMAT(1X,’SISTEM LINEAR TIDAK MEMILIKI SOLUSI YANG UNIK’)

7 FORMAT(1X,’SOLUSI UNIK’) END

2.4 Penutup

Silakan anda coba aplikasikan program di atas dengan berbagai sistem persamaan linear yang pernah dijadikan contoh pada catatan terdahulu. Saya cukupkan sementara sampai disini. Insya Allah akan saya sambung lagi dilain waktu. Kalau ada yang mau didiskusikan, silakan

25 hubungi saya melalui email yang tercantum di halaman paling depan.

2.4. PENUTUP

Bab 3

Metode LU Decomposition

✍ Objektif : ⊲ Mengenalkan matrik dan jenis-jenis matrik.

⊲ Mengenalkan operasi penjumlahan dan perkalian matrik. ⊲ Mendeklarasikan elemen-elemen matrik ke dalam memori komputer. ⊲ Membuat script operasi matrik.

3.1 Penyederhanaan

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 penyelesaiannya, 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 “handal” dalam menyelesaikan sistem persamaan linear dan merupakan bagian dari metode least square.

Seperti biasa, kita berasumsi bahwa sistem persamaan linear dapat dinyatakan dalam op- erasi matrik

(3.1) Pada metode LU-decomposition, matrik A difaktorkan menjadi matrik L dan matrik U, dimana

Ax = b

dimensi atau ukuran matrik L dan U harus sama dengan dimensi matrik A. Atau dengan kata lain, hasil perkalian matrik L dan matrik U adalah matrik A,

A = LU

28 BAB 3. METODE LU DECOMPOSITION sehingga persamaan (9.2) menjadi

LU x = b

Langkah penyelesaian sistem persamaan linear dengan metode LU-decomposition, diawali den- gan menghadirkan vektor y dimana,

(3.3) Langkah tersebut tidak bermaksud untuk menghitung vektor y, melainkan untuk menghitung

Ux=y

vektor x. Artinya, sebelum persamaan (3.3) dieksekusi, nilai-nilai yang menempati elemen- elemen vektor y harus sudah diketahui. Lalu bagaimana cara memperoleh vektor y? Begini caranya,

(3.4) Kesimpulannya, metode LU-decomposition dilakukan dengan tiga langkah sebagai berikut:

Ly = b

• 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

Sistem tersebut dapat dinyatakan dalam operasi matrik Ax = y,

Pada metode eliminasi gauss, matrik A dikonversi menjadi matrik triangular melalui urutan operasi-operasi berikut: (P 2 − 2P 1 ) → (P 2 ), (P 3 − 3P 1 ) → (P 3 ), (P 4 − (−1)P 1 ) → (P 4 ), (P 3 − 4P 2 ) → (P 3 ), (P 4 − (−3)P 2 ) → (P 4 ). Disisi lain, vektor b ikut berubah nilainya menyesuaikan

29 proses triangularisasi,

3.1. PENYEDERHANAAN

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

0 0 0 −13 Jadi matrik L dan U masing-masing adalah

Coba bandingkan matrik U di atas dengan matrik hasil triangularisasi dari metode eliminasi gauss pada persamaan (3.6), sama persis bukan? Jadi, cara memperoleh matrik U adalah den- gan proses triangularisasi! Lantas, bagaimana cara memperoleh matrik L? Begini 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 ni- lai 0. (3) sedangkan, elemen-elemen matrik L yang berada di bawah elemen-elemen diago- nal diisi dengan faktor pengali yang digunakan pada proses triangularisasi eliminasi gauss.

Misalnya pada operasi (P 2 − 2P 1 ) → (P 2 ), maka faktor pengalinya adalah 2; pada operasi (P 3 − 3P 1 ) → (P 3 ), maka faktor pengalinya adalah 3, 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. Disisi 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 (3.5) menjadi,

1  000 1 1 0 3 x

  2 100   0 −1 −1 −5   x   1  

 3 410   0 0 3 13   x 3   −3  −1 −3 0 1

30 BAB 3. METODE LU DECOMPOSITION Langkah berikutnya adalah menentukan vektor y, dimana Ly = b,

Dengan proses substitusi-maju, elemen-elemen vektor y dapat ditentukan,

y 1 = 4, 2y 1 +y 2 = 1, 3y 1 + 4y 2 +y 3 = −3, −y 1 − 3y 2 +y 4 =4

maka diperoleh y 1 = 4, y 2 = −7, y 3 = 13, y 4 = −13.

Langkah terakhir adalah proses substitusi-mundur untuk menghitung vektor x, dimana U x = y ,

Melalui proses ini, yang pertama kali didapat solusinya adalah x 4 , kemudian x 3 , lalu diikuti x 2 , dan akhirnya x 1 .

x 4 =1

3 (13 − 13x 4 )=0

x 2 = −(−7 + 5x 4 +x 3 )=2 x 1 = 4 − 3x 4 −x 2 = −1

akhirnya diperoleh solusi x 1 = −1, x 2 = 2, x 3 = 0, dan y 4 = 1. Demikianlah contoh penyelesa- ian sistem persamaan linear dengan metode LU-decomposition.

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

x 2 + 3x 4 =

2x 1 +

3x 1 −

x 3 + 2x 4 = 14

−x 1 + 2x 2 + 3x 3 −

x 4 = -7

31 Dalam operasi matrik menjadi

3.1. PENYEDERHANAAN

Perhatikan baik-baik! Matrik A sama persis dengan contoh sebelumnya. Perbedaannya hanya pada vektor b. Selanjutnya, dengan metode LU-decomposition, persamaan (3.8) menjadi

Silakan anda lanjutkan proses perhitungannya dengan mencari vektor y sesuai contoh yang telah diberikan sebelumnya. Pada akhirnya akan diperoleh solusi sebagai berikut: x 1 = 3,

x 2 = −1, x 3 = 0, dan y 4 = 2.

Sekarang saatnya saya tunjukkan algoritma metode LU decomposition. Algoritma ini dibu- at untuk menyelesaikan sistem persamaan linear, dengan cara menfaktorkan matrik A = (a ij ) berukuran n x n menjadi matrik L = (l ij ) dan matrik U = (u ij ) dengan ukuran yang sama. Algoritma LU-decomposition yang anda lihat sekarang merupakan modifikasi dari algorit- ma 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 algo- ritma 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- 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: dimensi n; nilai elemen a ij ,1 ≤ i, j ≤ n; nilai elemen b i . OUTPUT: solusi x 1 ,x 2 ,x 3 , ..., x n atau pesan kesalahan yang mengatakan bahwa faktorisasi

tidak mungkin dilakukan .

• Langkah 1: Inputkan konstanta-konstanta dari sistem persamaan linear kedalam elemen-

32 BAB 3. METODE LU DECOMPOSITION elemen matrik A dan vektor b, seperti berikut ini:

a  11 a 12 ...a 1n b 1

 a 21 a 22 ...a 2n 

a n1 a n2 ...a nn

• 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

a pi 6= 0. Langkah dilakukan bila ditemukan elemen diagonal yang bernilai nol (a ii = 0). Ketika ada elemen diagonal yang bernilai nol, maka program harus mencari dan memeriksa elemen-elemen yang tidak bernilai nol dalam kolom yang sama dengan kolom tempat elemen diagonal tersebut berada. 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 a pi = 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 diperoleh elemen yang tidak sama dengan nol (a pi 6= 0), maka bisa dipastikan p 6= i. Jika p 6= i maka lakukan proses pertukaran (P p ) ↔ (P i ).

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

a ji m ji =

a ii

• Langkah 7: Lakukan proses triangularisasi,

(P j −m ji P i ) → (P j )

• Langkah 8: Nilai m ji disimpan ke a ji ,

a ji =m ji

• Langkah 9: Nilai b 1 dicopy ke y 1 , lalu lakukan substitusi-maju. y 1 =b 1

Untuk i = 2, ..., n tentukan x i ,

i−1

i =b i −

a ij y j

j=1

33 • Langkah 10: Lakukan proses substitusi-mundur, dimulai dengan menentukan x n ,

3.1. PENYEDERHANAAN

a n,n+1 x n =

a nn

Untuk i = n − 1, ..., 1 tentukan x i ,

i,n+1 − j=i+1 a ij x j

a ii

• Langkah 11: Diperoleh solusi yaitu x 1 ,x 2 , ..., x n . Algoritma telah dijalankan dengan suk- ses. STOP.

Algoritma di atas telah diimplementasi kedalam program yang ditulis dengan bahasa For- tran. 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

34 BAB 3. METODE LU DECOMPOSITION NN = N-1

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 WRITE (*,’(1X,A)’) ’MATRIK LU:’

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)

3.1. PENYEDERHANAAN

35 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 WRITE (*,’(1X,A,I2,A,F14.8)’) ’X(’,I,’) = ’,X(I)

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. Diantara ketiga- nya, eliminasi gauss adalah algoritma yang paling simpel dan efisien. Dia hanya butuh proses triangularisasi dan substitusi-mundur untuk mendapatkan solusi. Sedangkan dua algoritma yang lainnya membutuhkan proses-proses tambahan untuk mendapatkan solusi yang sama.

36 BAB 3. METODE LU DECOMPOSITION Saya cukupkan sementara sampai disini. Insya Allah akan saya sambung lagi dilain waktu.

Kalau ada yang mau didiskusikan, silakan hubungi saya melalui email.

Bab 4

Invers Matrik dan Eliminasi Gauss

✍ Objektif : ⊲ Mengenalkan matrik dan jenis-jenis matrik.

⊲ Mengenalkan operasi penjumlahan dan perkalian matrik. ⊲ Mendeklarasikan elemen-elemen matrik ke dalam memori komputer. ⊲ Membuat script operasi matrik.

4.1 Penyederhanaan

Secara umum, sistem persamaan linear adalah sebagai berikut:

a 11 x 1 +a 12 x 2 +...+a 1n x n =b 1

a 21 x 1 +a 22 x 2 +...+a 2n x n =b 2 ...............=... ...............=...

a n1 x 1 +a n2 x 2 +...+a nn x n =b n

Sistem persamaan linear tersebut dapat dinyatakan dalam bentuk operasi matrik,

(4.1) sehingga bentuknya menjadi seperti ini:

Ax = b

a  11 a 12 ...a 1n x 1 b 1

 a 21 a 22 ...a 2n  

a n1 a n2 ...a nn

38 BAB 4. INVERS MATRIK DAN ELIMINASI GAUSS dimana

a  11 a 12 ...a 1n x 1 b 1

 b 2  A= 

 a a ...a 

a n1 a n2 ...a nn

Dalam kaitannya dengan invers matrik, matrik A disebut matrik non-singular jika matrik A − 1 − memiliki matrik invers dirinya yaitu A 1 . Atau dengan kata lain, matrik A adalah invers

dari matrik A. Jika matrik A tidak memiliki invers, maka matrik A disebut singular. Bila − matrik A dikalikan dengan matrik A 1 maka akan menghasilkan matrik identitas I, yaitu suatu

matrik yang elemen-elemen diagonalnya bernilai 1.

 − 1  01...0   AA =I= 

Misalnya diketahui,

Bila keduanya dikalikan, maka akan menghasilkan matrik identitas,

− Lalu bagaimana cara mendapatkan matrik invers, A 1 ? Persamaan (4.2) bisa dijadikan pedo- man..

dalam hal ini matrik A − 1 adalah

11 i 12 i 13

 i 21 i 22 i  23 

i 31 i 32 i 33

39 − Elemen-elemen matrik invers, A 1 dapat diperoleh dengan menerapkan metode eliminasi

4.1. PENYEDERHANAAN

gauss. Diawali dengan membentuk matrik augment:

Lalu dilanjutkan dengan proses triangularisasi: (P 2 −2P 1 ) →(P 2 ) dan (P 3 +P 1 ) →(P 3 ), kemudian

diikuti oleh (P 3 +P 2 ) →(P 3 ):

0 0 3 | −1 1 1 Langkah berikutnya, matrik augment yang telah mengalami triangularisasi tersebut dipecah

menjadi tiga buah matrik augment seperti berikut ini: 

0 0 3|1 Langkah pamungkasnya adalah melakukan proses substitusi mundur pada ketiga matrik aug-

ment di atas, sehingga diperoleh: i

Hasil tersebut digabung menjadi sebuah matrik, yaitu matrik A − 1 ,

Keberadaan matrik A − 1 bisa digunakan untuk menyelesaikan sistem persamaan linear ( men- cari nilai x ), dengan cara sebagai berikut

Ax = b − 1 − A 1 Ax = A b

Ix = A − 1 b

− x=A 1 b (4.3) Contoh berikut ini akan menjelaskan prosesnya secara lebih rinci. Misalnya diketahui sistem

40 BAB 4. INVERS MATRIK DAN ELIMINASI GAUSS persamaan linear

x 1 + 2x 2 −x 3 =2 2x 1 +x 2 =3 −x 1 +x 2 + 2x 3 =4

Bila dikonversikan kedalam operasi matrik menjadi

Berdasarkan persamaan (4.3), maka elemen-elemen vektor x dapat dicari dengan cara

− x=A 1 b

x=  4 1 2     13   9 − 9 9   3  =  9 

Akhirnya diperoleh solusi x 1 = 7/9, x 2 = 13/9, dan x 3 = 5/3. Penyelesaian sistem persamaan − linear menjadi lebih mudah bila matrik A 1 sudah diketahui. Sayangnya, untuk mendap-

atkan matrik A − 1 , diperlukan langkah-langkah, seperti yang sudah dibahas pada contoh per- tama di atas, yang berakibat in-efisiensi proses penyelesaian (secara komputasi) bila diband-

ingkan dengan metode eliminasi gauss untuk memecahkan sistem persamaan linear. Namun bagaimanapun, secara konseptual kita dianjurkan mengetahui cara bagaimana mendapatkan

− matrik A 1 . Saya telah memodifikasi program eliminasi gauss yang terdahulu, untuk keperluan perhitun-

gan matrik invers. Program ini ditulis dengan bahasa fortran, sudah berhasil dikompilasi dalam Linux Debian (g77) dan Windows XP (Visual Fortran). Inilah programnya,

DIMENSION A(10,20), D(10,10), X(10) REAL MJI INTEGER TKR, BK, TK, Q WRITE (*,*) ’=PROGRAM INVERS MATRIK DENGAN ELIMINASI GAUSS=’ WRITE (*,*)

C LANGKAH 1: MEMASUKAN NILAI ELEMEN-ELEMEN MATRIK A WRITE (*,’(1X,A)’) ’JUMLAH PERSAMAAN ? ’ READ (*,*) N WRITE (*,*) WRITE (*,*) ’MASUKAN ELEMEN-ELEMEN MATRIK A’ M=N+1 DO 50 I = 1,N

4.1. PENYEDERHANAAN

41 DO 60 J = 1,N

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

60 CONTINUE

50 CONTINUE C LANGKAH 2: MENDEFINISIKAN MATRIK IDENTITAS WRITE (*,*) ’MENDEFINISIKAN MATRIK IDENTITAS’