• Tidak ada hasil yang ditemukan

Komputasi untuk Sains dan Teknik

N/A
N/A
Protected

Academic year: 2021

Membagikan "Komputasi untuk Sains dan Teknik"

Copied!
167
0
0

Teks penuh

(1)

Komputasi untuk Sains dan Teknik

Supriyanto Suparno

( Website: http://supriyanto.fisika.ui.edu )

( Email: [email protected] atau [email protected] )

Edisi II

Revisi terakhir tgl: 12 Februari 2008

Departemen Fisika-FMIPA, Univeristas Indonesia Dipublikasikan pertama kali pada September 2007

(2)
(3)

Untuk Nina Marliyani Muflih Syamil dan Hasan Azmi

(4)
(5)

Ketekunan adalah jalan yang terpercaya untuk mengantarkan kita menuju kesuksesan (Supriyanto, 2007)

(6)
(7)

Kata Pengantar

Secara garis besar, ilmu fisika dapat dipelajari lewat 3 jalan, yaitu pertama, dengan meng-gunakan konsep atau teori fisika yang akhirnya melahirkan fisika teori. Kedua, dengan cara eksperimen yang menghasilkan aliran fisika eksperimental, dan ketiga, fisika bisa dipelajari lewat simulasi fisika yang sangat mengandalkan komputer serta algoritma numerik.

Tujuan penyusunan buku ini adalah untuk meletakkan pondasi dasar dari bangunan pema-haman akan metode-metode komputasi yang banyak digunakan pada simulasi-simulasi fenom-ena fisika.

Rujukan utama buku ini bersumber pada buku teks standar yang sangat populer di dunia komputasi, yaitu buku yang ditulis oleh Richard L. Burden dan J. Douglas Faires dengan judul

Numerical Analysis edisi ke-7, diterbitkan oleh Penerbit Brooks/Cole, Thomson Learning

Aca-demic Resource Center. Disamping itu, buku ini dilengkapi oleh sejumlah contoh aplikasi komputasi pada upaya penyelesaian problem-problem fisika.

Dalam edisi ke-2 ini, algoritma numerik disalin ke dalam 2 bahasa pemrograman, yaitu For-tran77 dan Matlab. Disamping itu penjelasan lebih terperinci tentang bagaimana menentukan indeks i, j dan k dalam proses looping disajikan pada Bab I, untuk memberi pondasi yang san-gat penting bagi berdirinya bangunan pemahaman akan teknik-teknik numerik selanjutnya.

Akhirnya saya ingin mengucapkan rasa terima kasih yang tak terhingga kepada Dede

Djuhana yang telah berkenan memberikan format LATEX-nya sehingga tampilan tulisan pada

buku ini benar-benar layaknya sebuah buku yang siap dicetak. Rasa terima kasih juga in-gin saya teruskan kepada Sarah Wardhani yang telah memicu langkah awal penulisan buku ini hingga masuk ke Edisi-2. Tak lupa, saya pun sepatutnya berterima kasih kepada selu-ruh rekan diskusi yaitu para mahasiswa yang telah mengambil mata kuliah Komputasi Fisika PTA 2006/2007 di Departemen Fisika, FMIPA, Universitas Indonesia. Tiga orang mahasiswi dari Universitas Pakuan yaitu Eni Nurliani, Saidah Al-adawiyah dan Deni Fitri A juga perlu saya tulis disini sebagai ungkapan terima kasih atas pertanyaan-pertanyaan mereka yang turut memperkaya isi buku ini.

Walaupun buku ini masih jauh dari sempurna, namun semoga ia dapat menyumbangkan energi bagi terciptanya gelombang kebangkitan ilmu pengetahuan pada bangsa Indonesia yang saat ini sedang terpuruk. Saya wariskan ilmu ini untuk anak bangsa. Saya izinkan anda untuk meng-copy dan menggunakan buku ini selama itu ditujukan untuk belajar dan bukan untuk tu-juan komersial. Bagi yang ingin berdiskusi, memberikan masukan, kritikan dan saran, silakan dikirimkan ke email: [email protected]

Depok, 16 September 2007 Supriyanto Suparno v

(8)
(9)

Daftar Isi

Lembar Persembahan i

Kata Pengantar v

Daftar Isi vii

Daftar Gambar xi

Daftar Tabel xiii

1 Matrik dan Komputasi 1

1.1 Pengenalan matrik . . . 1

1.2 Inisialisasi matrik dalam memori komputer . . . 2

1.3 Macam-macam matrik . . . 3 1.3.1 Matrik transpose . . . 3 1.3.2 Matrik bujursangkar . . . 3 1.3.3 Matrik simetrik . . . 3 1.3.4 Matrik diagonal . . . 3 1.3.5 Matrik identitas . . . 4 1.3.6 Matrik upper-triangular . . . 4 1.3.7 Matrik lower-triangular . . . 4 1.3.8 Matrik tridiagonal . . . 4

1.3.9 Matrik diagonal dominan . . . 5

1.3.10 Matrik positive-definite . . . . 5

1.3.11 Vektor-baris dan vektor-kolom . . . 6

1.4 Operasi matematika . . . 6

1.4.1 Penjumlahan matrik . . . 6

1.4.2 Komputasi penjumlahan matrik . . . 7

1.4.3 Perkalian matrik . . . 9

1.4.4 Komputasi perkalian matrik . . . 12

1.4.5 Perkalian matrik dan vektor-kolom . . . 13

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

1.5 Penutup . . . 15

1.6 Latihan . . . 15

2 Metode Eliminasi Gauss 17 2.1 Sistem persamaan linear . . . 17

2.2 Triangularisasi dan Substitusi Mundur . . . 18 vii

(10)

2.3 Matrik dan Eliminasi Gauss . . . 21

2.4 Algoritma eliminasi Gauss . . . 23

2.4.1 Algoritma . . . 25

2.5 Contoh aplikasi . . . 29

2.5.1 Menghitung arus listrik . . . 29

2.6 Menghitung invers matrik . . . 31

2.7 Penutup . . . 37

3 Aplikasi Eliminasi Gauss pada Masalah Inversi 39 3.1 Inversi Model Garis . . . 39

3.1.1 Script matlab inversi model garis . . . 42

3.2 Inversi Model Parabola . . . 44

3.2.1 Script matlab inversi model parabola . . . 48

3.3 Inversi Model Bidang . . . 50

3.4 Contoh aplikasi . . . 53

3.4.1 Menghitung gravitasi di planet X . . . 53

4 MetodeLU Decomposition 61 4.1 Faktorisasi matrik . . . 61 4.2 Algoritma . . . 65 5 Metode Iterasi 71 5.1 Kelebihan Vektor-kolom . . . 71 5.2 Pengertian Norm . . . 72

5.2.1 Script perhitungan norm dalam Matlab . . . . 72

5.2.2 Perhitungan norm-selisih . . . 73

5.3 Iterasi Jacobi . . . 73

5.3.1 Script Matlab untuk menghitung iterasi . . . . 76

5.3.2 Optimasi script Matlab untuk menghitung iterasi . . . . 80

5.3.3 Algoritma . . . 82

5.3.4 Program dalam Fortran . . . 82

5.4 Iterasi Gauss-Seidel . . . 84

5.4.1 Script iterasi Gauss-Seidel . . . . 85

5.4.2 Algoritma . . . 87

5.4.3 Script iterasi Gauss-Seidel dalam Fortran . . . . 87

5.5 Iterasi dengan Relaksasi . . . 89

5.5.1 Algoritma Iterasi Relaksasi . . . 90

6 Interpolasi 93 6.1 Interpolasi Lagrange . . . 93

(11)

ix

7 Diferensial Numerik 103

7.1 Metode Euler . . . 103

7.2 Metode Runge Kutta . . . 106

7.3 Metode Finite Difference . . . 113

7.3.1 Script Finite-Difference . . . 115

7.3.2 Aplikasi . . . 120

8 Pers. Diferensial Parsial Numerik 123 8.1 Pendahuluan . . . 123

8.2 PDP eliptik dalam Finite-Difference . . . 124

9 Integral Numerik 131 9.1 Metode Trapezoida . . . 131 9.2 Metode Simpson . . . 131 9.3 Metode Composite-Simpson . . . 133 10 Metode Newton 137 10.1 Penyederhanaan . . . 137

11 Metode Monte Carlo 139 11.1 Penyederhanaan . . . 139 12 Inversi 143 12.1 Inversi Linear . . . 143 12.2 Inversi Non-Linear . . . 147 Daftar Pustaka 149 Indeks 151

(12)
(13)

Daftar Gambar

3.1 Grafik data pengukuran gerak batu . . . 53

3.2 Grafik hasil inversi parabola . . . 57

6.1 Fungsi f (x) dengan sejumlah titik data . . . 95

6.2 Pendekatan dengan polinomial cubic spline . . . 95

6.3 Profil suatu object . . . 100

6.4 Sampling titik data . . . 101

6.5 Hasil interpolasi cubic spline . . . 101

6.6 Hasil interpolasi lagrange . . . 102

7.1 Metode Euler . . . 104

7.2 Trend error metode euler . . . 106

7.3 Rangkaian RC . . . 109

7.4 Kurva muatan q terhadap waktu t . . . 112

7.5 Kurva suatu fungsi f (x) yang dibagi sama besar berjarak h. Evaluasi kurva yang dilakukan Finite-Difference dimulai dari batas bawah X0 = a hingga batas atas x6 = b . . . 114

8.1 Distribusi temperatur pada lempeng logam . . . 126

9.1 Metode Trapezoida . . . 132

9.2 Metode Simpson . . . 132

9.3 Metode Composite Simpson . . . 134

10.1 Metode Newton . . . 138

11.1 Lingkaran dan bujursangkar . . . 140

11.2 Dart yang menancap pada bidang lingkaran dan bujursangkar . . . 140

11.3 Dart yang menancap pada bidang 1/4 lingkaran dan bujursangkar . . . 141

(14)
(15)

Daftar Tabel

3.1 Data temperatur bawah permukaan tanah terhadap kedalaman . . . 39

3.2 Data temperatur bawah permukaan tanah terhadap kedalaman . . . 44

3.3 Data ketinggian terhadap waktu dari planet X . . . 53

5.1 Hasil akhir elemen-elemen vektor x hingga iterasi ke-10 . . . . 79

5.2 Hasil perhitungan norm-selisih (dengan ℓ2) hingga iterasi ke-10 . . . 81

5.3 Hasil Iterasi Gauss-Seidel . . . 85

5.4 Hasil perhitungan iterasi Gauss-Seidel . . . 90

5.5 Hasil perhitungan iterasi Relaksasi dengan ω = 1, 25 . . . 90

(16)
(17)

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

An×m. Huruf n menyatakan jumlah baris, dan huruf m jumlah kolom. Suatu matrik tersusun

dari elemen-elemen yang dinyatakan dengan huruf kecil diikuti angka-angka indeks, misalnya

aij, dimana indeksi menunjukan posisi baris ke-i dan indeks j menentukan posisi kolom ke-j.

A = (aij) =       a11 a12 . . . a1m a21 a22 . . . a2m .. . ... ... an1 an2 . . . anm       (1.1) Contoh 1: Matrik A2×3 A = " 3 8 5 6 4 7 #

dimana masing-masing elemennya adalah a11 = 3, a12 = 8, a13 = 5, a21 = 6, a22 = 4, dan

a23= 7. Contoh 2: Matrik B3×2 B =    1 3 5 9 2 4    1

(18)

dimana masing-masing elemennya adalah b11 = 1, b12 = 3, b21 = 5, b22 = 9, b31 = 2, dan

b32= 4.

1.2 Inisialisasi matrik dalam memori komputer

Dalam bahasa pemrograman Fortran77, cara mengisi memori komputer dengan elemen-elemen

matrik A2×3, sesuai dengan Contoh 1 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

Sedangkan untuk matrik B3×2, sesuai Contoh 2 adalah

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

Sementara dalam Matlab, cara mengisi memori komputer dengan elemen-elemen matrik

A2×3, sesuai dengan Contoh 1 adalah

1 clear all 2 clc 3 4 A(1,1) = 3; 5 A(1,2) = 8; 6 A(1,3) = 5; 7 A(2,1) = 6; 8 A(2,2) = 4; 9 A(2,3) = 7; 10 A

Sedangkan untuk matrik B3×2, sesuai Contoh 2 adalah

1 clear all 2 clc 3 4 B(1,1) = 1; 5 B(1,2) = 3; 6 B(2,1) = 5; 7 B(2,2) = 9; 8 B(3,1) = 2; 9 B(3,2) = 4; 10 B

(19)

1.3. MACAM-MACAM MATRIK 3

1.3 Macam-macam matrik

1.3.1 Matrik transpose

Operasi transpose terhadap suatu matrik akan menukar elemen-elemen dalam satu kolom menjadi elemen-elemen dalam satu baris; demikian pula sebaliknya. Notasi matrik tranpose adalah AT atau At.

Contoh 3: Operasi transpose terhadap matrik A

A = " 3 8 5 6 4 7 # At=    3 6 8 4 5 7    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 =    1 3 8 5 9 7 2 4 6    1.3.3 Matrik simetrik

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

Contoh 5: Matrik simetrik

A =       2 −3 7 1 −3 5 6 −2 7 6 9 8 1 −2 8 10       At=       2 −3 7 1 −3 5 6 −2 7 6 9 8 1 −2 8 10       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

A =    11 0 0 0 29 0 0 0 61   

(20)

1.3.5 Matrik identitas

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

Contoh 7: Matrik identitas orde 3

I =    1 0 0 0 1 0 0 0 1    1.3.6 Matrik upper-triangular

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

Contoh 8: Matrik upper-triangular

A =       3 6 2 1 0 4 1 5 0 0 8 7 0 0 0 9       1.3.7 Matrik lower-triangular

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

Contoh 9: Matrik lower-triangular

A =       12 0 0 0 32 −2 0 0 8 7 11 0 −5 10 6 9       1.3.8 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 =       3 6 0 0 2 −4 1 0 0 5 8 −7 0 0 3 9      

(21)

1.3. MACAM-MACAM MATRIK 5

1.3.9 Matrik diagonal dominan

Matrik diagonal dominan adalah matrik bujursangkar yang memenuhi |aii| >

n

X

j=1,j6=i

|aij| (1.2)

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

A =    7 2 0 3 5 −1 0 5 −6    B =    6 4 −3 4 −2 0 −3 0 1   

Pada elemen diagonal aiimatrik 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.10 Matrikpositive-definite

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

xtAx > 0 (1.3)

Contoh 11: Diketahui matrik simetrik berikut

A =    2 −1 0 −1 2 −1 0 −1 2   

untuk menguji apakah matrik A bersifat positive-definite, maka

xtAx = hx1 x2 x3 i    2 −1 0 −1 2 −1 0 −1 2       x1 x2 x3    = hx1 x2 x3 i    2x1− x2 −x1+ 2x2− x3 −x2+ 2x3    = 2x21− 2x1x2+ 2x22− 2x2x3+ 2x23 = x21+ (x21− 2x1x2+ x22) + (x22− 2x2x3+ x23) + x23 = x21+ (x1− x2)2+ (x2− x3)2+ x23

Dari sini dapat disimpulkan bahwa matrik A bersifat positive-definite, karena memenuhi x21+ (x1− x2)2+ (x2− x3)2+ x23 > 0

(22)

kecuali jika x1=x2=x3=0.

1.3.11 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

a =ha11 a12 . . . a1m

i

=ha1 a2 . . . am

i

(1.4) Sedangkan suatu matrik dinamakan vektor-kolom berukuran n, bila hanya memiliki satu kolom dan n baris, yang dinyatakan sebagai berikut

a =       a11 a21 .. . an1       =       a1 a2 .. . an       (1.5) 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 C2×3

C =

"

9 5 3 7 2 1 #

dijumlahkan dengan matrik A2×3, lalu hasilnya (misalnya) dinamakan matrik D2×3

D = A + C D = " 3 8 5 6 4 7 # + " 9 5 3 7 2 1 # = " 3 + 9 8 + 5 5 + 3 6 + 7 4 + 2 7 + 1 # = " 12 13 8 13 6 8 #

Tanpa mempedulikan nilai elemen-elemen masing-masing matrik, operasi penjumlahan antara

matrik A2×3dan C2×3, bisa juga dinyatakan dalam indeks masing-masing dari kedua matrik

tersebut, yaitu " d11 d12 d13 d21 d22 d23 # = " a11+ c11 a12+ c12 a13+ c13 a21+ c21 a22+ c22 a23+ c23 #

(23)

1.4. OPERASI MATEMATIKA 7 Dijabarkan satu persatu sebagai berikut

d11= a11+ c11 d12= a12+ c12 d13= a13+ c13 (1.6) d21= a21+ c21 d22= a22+ c22 d23= a23+ c23

Dari sini dapat diturunkan sebuah rumus umum penjumlahan dua buah matrik

dij = aij+ cij (1.7)

dimana i=1,2 dan j=1,2,3.

1.4.2 Komputasi penjumlahan matrik

Berdasarkan contoh operasi penjumlahan di atas, indeks j pada persamaan (1.7) lebih cepat berubah dibanding indeks i sebagaimana ditulis pada persamaan (1.6),

d11= a11+ c11

d12= a12+ c12

d13= a13+ c13

Jelas terlihat, ketika indeks i masih bernilai 1, indeks j sudah berubah dari nilai 1 sampai 3. Hal ini membawa konsekuensi pada script pemrograman, dimana looping untuk indeks j harus diletakkan di dalam looping indeks i. Pokoknya yang looping-nya paling cepat harus

diletakkan paling dalam; sebaliknya, looping paling luar adalah looping yang indeksnya

paling jarang berubah.

Dalam matlab, algoritma penjumlahan dua matrik ditulis sebagai berikut:

1 for i=1:2

2 for j=1:3

3 D(i,j)=A(i,j)+C(i,j);

4 end

5 end

Sedangkan dalam Fortran77, operasi penjumlahan antara matrik ditulis sebagai berikut: A2×3

dan C2×3adalah 1 do i=1,2 2 do j=1,3 3 D(i,j)=A(i,j)+C(i,j) 4 end do 5 end do

(24)

Perhatikan kedua script di atas! Penulisan indeks i harus didahulukan daripada indeks j. Perlu dicatat bahwa ukuran matrik tidak terbatas hanya 2x3. Tentu saja anda bisa men-gubah ukurannya sesuai dengan keperluan atau kebutuhan anda. Jika ukuran matrik diny-atakan secara umum sebagai n x m, dimana n adalah jumlah baris dan m adalah jumlah kolom, maka bentuk pernyataan komputasinya dalam matlab menjadi

1 for i=1:n

2 for j=1:m

3 D(i,j)=A(i,j)+C(i,j);

4 end

5 end

sedangkan dalam Fortran77

1 do i=1,n

2 do j=1,m

3 D(i,j)=A(i,j)+C(i,j)

4 end do

5 end do

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

A = " 3 8 5 6 4 7 # dan matrik C2×3 C = " 9 5 3 7 2 1 #

Program untuk menjumlahkan kedua matrik tersebut dalam matlab adalah:

1 clear all 2 clc 3 4 A(1,1) = 3; 5 A(1,2) = 8; 6 A(1,3) = 5; 7 A(2,1) = 6; 8 A(2,2) = 4; 9 A(2,3) = 7; 10 C(1,1) = 9; 11 C(1,2) = 5; 12 C(1,3) = 3; 13 C(2,1) = 7; 14 C(2,2) = 2; 15 C(2,3) = 1; 16 n=2 17 m=3 18 for i=1:n 19 for j=1:m 20 D(i,j)=A(i,j)+C(i,j); 21 end 22 end

(25)

1.4. OPERASI MATEMATIKA 9 sedangkan dalam Fortran77

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 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 A2×3dikalikan dengan matrik

B3×2, lalu hasilnya (misalnya) dinamakan matrik E2×2

E2×2= A2×3.B3×2 E = " 3 8 5 6 4 7 #    1 3 5 9 2 4    = " 3.1 + 8.5 + 5.2 3.3 + 8.9 + 5.4 6.1 + 4.5 + 7.2 6.3 + 4.9 + 7.4 # = " 53 101 40 82 #

Tanpa mempedulikan nilai elemen-elemen masing-masing matrik, operasi perkalian antara

matrik A2×3dan B3×2, bisa juga dinyatakan dalam indeks masing-masing dari kedua matrik

tersebut, yaitu " e11 e12 e21 e22 # = " a11.b11+ a12.b21+ a13.b31 a11.b12+ a12.b22+ a13.b32 a21.b11+ a22.b21+ a23.b31 a21.b12+ a22.b22+ a23.b32 #

(26)

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

e11= a11.b11+ a12.b21+ a13.b31 (1.8)

e12= a11.b12+ a12.b22+ a13.b32 (1.9)

e21= a21.b11+ a22.b21+ a23.b31 (1.10)

e22= a21.b12+ a22.b22+ a23.b32 (1.11)

Sejenak, mari kita amati perubahan pasangan angka-angka indeks yang mengiringi elemen e, a dan b pada persamaan (1.8) sampai persamaan (1.11). Perhatikan perubahan angka indeks pertama pada elemen e seperti berikut ini

e1.. = ..

e1.. = ..

e2.. = ..

e2.. = ..

Pola perubahan yang sama akan kita dapati pada angka indeks pertama dari elemen a e1.. = a1...b...+ a1...b...+ a1...b...

e1.. = a1...b...+ a1...b...+ a1...b...

e2.. = a2...b...+ a2...b...+ a2...b...

e2.. = a2...b...+ a2...b...+ a2...b...

Dengan demikian kita bisa mencantumkan huruf i sebagai pengganti angka-angka indeks yang polanya sama

ei.. = ai...b...+ ai...b...+ ai...b...

ei.. = ai...b...+ ai...b...+ ai...b...

ei.. = ai...b...+ ai...b...+ ai...b...

ei.. = ai...b...+ ai...b...+ ai...b...

dimana i bergerak mulai dari angka 1 hingga angka 2, atau kita nyatakan i=1,2. Selanjutnya, masih dari persamaan (1.8) sampai persamaan (1.11), marilah kita perhatikan perubahan angka indeks masih pada elemen e dan elemen b,

ei1= ai...b..1+ ai...b..1+ ai...b..1

ei2= ai...b..2+ ai...b..2+ ai...b..2

ei1= ai...b..1+ ai...b..1+ ai...b..1

(27)

1.4. OPERASI MATEMATIKA 11 Dengan demikian kita bisa mencantumkan huruf j sebagai pengganti angka-angka indeks yang polanya sama

eij = ai...b..j+ ai...b..j+ ai...b..j

eij = ai...b..j+ ai...b..j+ ai...b..j

eij = ai...b..j+ ai...b..j+ ai...b..j

eij = ai...b..j+ ai...b..j+ ai...b..j

dimana j bergerak mulai dari angka 1 hingga angka 2, atau kita nyatakan j=1,2. Selanjutnya, masih dari persamaan (1.8) sampai persamaan (1.11), mari kita perhatikan perubahan angka indeks masih pada elemen a dan elemen b, dimana kita akan dapati pola sebagai berikut

eij = ai1.b1j + ai2.b2j+ ai3.b3j

eij = ai1.b1j + ai2.b2j+ ai3.b3j

eij = ai1.b1j + ai2.b2j+ ai3.b3j

eij = ai1.b1j + ai2.b2j+ ai3.b3j

Dan kita bisa mencantumkan huruf k sebagai pengganti angka-angka indeks yang polanya sama, dimana k bergerak mulai dari angka 1 hingga angka 3, atau kita nyatakan k=1,2,3.

eij = aik.bkj+ aik.bkj+ aik.bkj

eij = aik.bkj+ aik.bkj+ aik.bkj

eij = aik.bkj+ aik.bkj+ aik.bkj

eij = aik.bkj+ aik.bkj+ aik.bkj

Kemudian secara sederhana dapat ditulis sebagai berikut

eij = aik.bkj+ aik.bkj+ aik.bkj (1.12)

Selanjutnya dapat ditulis pula formula berikut eij =

3

X

k=1

aikbkj (1.13)

dimana i=1,2; j=1,2; dan k=1,2,3.

Berdasarkan contoh ini, maka secara umum bila ada matrik An×myang dikalikan dengan

ma-trik Bm×p, akan didapatkan matrik En×pdimana elemen-elemen matrik E memenuhi

eij = m

X

k=1

aikbkj (1.14)

(28)

1.4.4 Komputasi perkalian matrik

Komputasi operasi perkalian antara matrik A2×3dan B3×2dilakukan melalui 2 tahap; pertama

adalah memberikan nilai 0 (nol) pada elemen-elemen matrik E2×2dengan cara (dalam matlab)

1 for i=1:2 2 for j=1:2 3 E(i,j)=0.0; 4 end 5 end dalam Fortran77 1 do i=1,2 2 do j=1,2 3 E(i,j)=0.0 4 end do 5 end do

keduaadalah menghitung perkalian matrik dengan cara (dalam matlab)

1 for i=1:2 2 for j=1:2 3 for k=1:3 4 E(i,j)=E(i,j)+A(i,k)*B(k,j); 5 end 6 end 7 end dalam Fortran77 1 do i=1,2 2 do j=1,2 3 do k=1,3 4 E(i,j)=E(i,j)+A(i,k)*B(k,j) 5 end do 6 end do 7 end do

Sebentar.., sebelum dilanjut tolong perhatikan penempatan indeks i, j dan k pada script di atas. Mengapa indeks i didahulukan daripada indeks j dan k? Ini bukan sesuatu yang kebetulan. Dan ini juga bukan sekedar mengikuti urutan huruf abjad i,j,k. Sekali lagi ingin saya tegaskan bahwa penempatan yang demikian semata-mata mengikuti aturan umum yaitu looping yang

indeksnya berubah paling cepat harus diletakkan paling dalam; sebaliknya,looping paling

luar adalahlooping yang indeksnya paling jarang berubah. Kalau anda perhatikan dengan teliti, pasti anda akan menemukan fakta bahwa indeks k paling cepat berubah. Kemudian disusul oleh indeks j. Lalu yang paling jarang berubah adalah indeks i. Itulah sebabnya, penempatan urutan indeks pada script di atas harus dimulai dari i terlebih dahulu sebagai

(29)

1.4. OPERASI MATEMATIKA 13 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 dalam Matlab menjadi

1 for i=1:n 2 for j=1:p 3 E(i,j)=0.0; 4 end 5 end 6 for i=1:n 7 for j=1:p 8 for k=1:m 9 E(i,j)=E(i,j)+A(i,k)*B(k,j); 10 end 11 end 12 end dalam Fortran77 1 do i=1,n 2 do j=1,p 3 E(i,j)=0.0 4 end do 5 end do 6 do i=1,n 7 do j=1,p 8 do k=1,m 9 E(i,j)=E(i,j)+A(i,k)*B(k,j) 10 end do 11 end do 12 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

(30)

y = " 3 8 5 6 4 7 #    2 3 4    = " 3.2 + 8.3 + 5.4 6.2 + 4.3 + 7.4 # = " 50 52 #

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

" y1 y2 # = " a11.x1+ a12.x2+ a13.x3 a21.x1+ a22.x2+ a23.x3 #

Bila dijabarkan, maka elemen-elemen vektor-kolom y adalah y1 = a11.x1+ a12.x2+ a13.x3

y2 = a21.x1+ a22.x2+ a23.x3

kemudian secara sederhana dapat diwakili oleh rumus berikut yi= 3 X j=1 aijxj 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

yi= m X j=1 aijxj (1.15) 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 berukuberuku-ran 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

1 for i=1:n

(31)

1.5. PENUTUP 15 3 end 4 for i=1:n 5 for j=1:m 6 b(i,1)=b(i,1)+A(i,j)*x(j,1); 7 end 8 end

dan dalam Fortran

1 do i=1,n 2 b(i,1)=0.0 3 end do 4 do i=1,n 5 do j=1,m 6 b(i,1)=b(i,1)+A(i,j)*x(j,1) 7 end do 8 end do 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.

1.6 Latihan

Diketahui matrik A, matrik B, dan vektor x sebagai berikut

A =       1 3 −6 −2 5 9 7 5.6 2 4 8 −1 2.3 1.4 0.8 −2.3       B =       8 1 4 21 3 10 5 0.1 7 −2 9 −5 2.7 −12 −8.9 5.7       x =       0.4178 −2.9587 56.3069 8.1      

1. Buatlah script untuk menyelesaikan penjumlahan matrik A dan matrik B. 2. Buatlah script untuk menyelesaikan perkalian matrik A dan matrik B. 3. Buatlah script untuk menyelesaikan perkalian matrik A dan vektor x. 4. Buatlah script untuk menyelesaikan perkalian matrik A dan vektor x.

(32)
(33)

Bab 2

Metode Eliminasi Gauss

✍ Objektif :

⊲ Mengenalkan sistem persamaan linear.

⊲ Mengenalkan teknik triangularisasi dan substitusi mundur. ⊲ Aplikasi metode Eliminasi Gauss menggunakan matrik. ⊲ Membuat algoritma metode Eliminasi Gauss.

⊲ Menghitung invers matrik menggunakan metode Eliminasi Gauss.

2.1 Sistem persamaan linear

Secara umum, sistem persamaan linear dinyatakan sebagai berikut

Pn: an1x1+ an2x2+ ... + annxn= bn (2.1)

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

Contoh pertama

Misalnya ada sistem persamaan linear yang terdiri dari empat buah persamaan yaitu P1,

P2, P3, dan P4seperti berikut ini:

P1: x1 + x2 + 3x4 = 4

P2: 2x1 + x2 − x3 + x4 = 1

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

P4: −x1 + 2x2 + 3x3 − x4 = 4

Problem dari sistem persamaan linear adalah bagaimana mencari nilai pengganti bagi

vari-abel x1, x2, x3, dan x4sehingga semua persamaan diatas menjadi benar. Langkah awal

penye-lesaian problem tersebut adalah dengan melakukan penyederhanaan sistem persamaan linear. 17

(34)

2.2 Triangularisasi dan Substitusi Mundur

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 linear di atas, yaitu

• Persamaan Pidapat dikalikan dengan sembarang konstanta λ, lalu hasilnya ditempatkan

di posisi persamaan Pi. Simbol operasi ini adalah (λPi) → (Pi).

• Persamaan Pj dapat dikalikan dengan sembarang konstanta λ kemudian dijumlahkan

dengan persamaan Pi, lalu hasilnya ditempatkan di posisi persamaan Pi. Simbol operasi

ini adalah (Pi+ λPj) → (Pi).

• Persamaan Pidan Pj dapat bertukar posisi. Simbol operasi ini adalah (Pi) ↔ (Pj).

Maka dengan berpegang pada aturan-aturan tersebut, problem sistem persamaan linear di atas akan diselesaikan dengan langkah-langkah berikut ini:

1. Gunakan persamaan P1untuk menghilangkan variabel x1 dari persamaan P2, P3 dan P4

dengan cara (P2− 2P1) → (P2), (P3− 3P1) → (P3) dan (P4+ P1) → (P4). Hasilnya akan

seperti ini

P1 : x1+ x2+ 3x4 = 4,

P2 : −x2− x3− 5x4 = −7,

P3 : −4x2− x3− 7x4 = −15,

P4 : 3x2+ 3x3+ 2x4 = 8

2. Gunakan persamaan P2 untuk menghilangkan variabel x2 dari persamaan P3 dan P4

dengan cara (P3− 4P2) → (P3) dan (P4+ 3P2) → (P4). Hasilnya akan seperti ini

P1 : x1+ x2+ 3x4 = 4,

P2: −x2− x3− 5x4 = −7,

P3 : 3x3+ 13x4 = 13,

P4 : −13x4 = −13

Kalau x3masih ada di persamaan P4, dibutuhkan satu operasi lagi untuk

menghilangkan-nya. Namun hasil operasi pada langkah ke-2 ternyata sudah otomatis menghilangkan x3.

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

(35)

2.2. TRIANGULARISASI DAN SUBSTITUSI MUNDUR 19 memakan waktu lama dibandingkan sebelum disederhanakan. Sekali kita mendapatkan

nilai pengganti bagi variabel x4, maka x3, x2 dan x1akan 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 x4, kemudian x3, lalu diikuti x2, dan

akhirnya x1. P4 : x4 = −13 −13 = 1, P3: x3 = 1 3(13 − 13x4) = 1 3(13 − 13) = 0, P2 : x2 = −(−7 + 5x4+ x3) = −(−7 + 5 + 0) = 2, P1 : x1= 4 − 3x4− x2 = 4 − 3 − 2 = −1

Jadi solusinya adalah x1 = −1, x2 = 2, x3 = 0 dan x4 = 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.

(36)

Contoh kedua

Misalnya ada sistem persamaan linear, terdiri dari empat buah persamaan yaitu P1, P2, P3,

dan P4seperti berikut ini:

P1 : x1 − x2 + 2x3 − x4 = -8

P2 : 2x1 − 2x2 + 3x3 − 3x4 = -20

P3 : x1 + x2 + x3 = -2

P4 : x1 − x2 + 4x3 + 3x4 = 4

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

1. Gunakan persamaan P1 untuk menghilangkan x1 dari persamaan P2, P3 dan P4 dengan

cara (P2− 2P1) → (P2), (P3− P1) → (P3) dan (P4− P1) → (P4). Hasilnya akan seperti ini

P1 : x1− x2+ 2x3− x4 = −8,

P2 : −x3− x4 = −4,

P3: 2x2− x3+ x4 = 6,

P4 : 2x3+ 4x4 = 12

Perhatikan persamaan P2! Akibat dari langkah yang pertama tadi, x2 hilang dari

per-samaan P2. Kondisi ini bisa menggagalkan proses triangularisasi. Untuk itu, posisi P2

mesti ditukar dengan persamaan yang berada dibawahnya, yaitu P3 atau P4. Supaya

proses triangularisasi dilanjutkan kembali, maka yang paling cocok adalah ditukar den-gan P3.

2. Tukar posisi persamaan P2 dengan persamaan P3, (P2 ↔ P3). Hasilnya akan seperti ini

P1 : x1− x2+ 2x3− x4 = −8,

P2: 2x2− x3+ x4 = 6,

P3: −x3− x4 = −4,

P4 : 2x3+ 4x4 = 12

3. Gunakan persamaan P3untuk menghilangkan x3 dari persamaan P4 dengan cara (P4 −

2P3) → (P4). Hasilnya akan seperti ini

P1: x1− x2+ 2x3− x4 = −8,

P2 : 2x2− x3+ x4 = 6,

P3: −x3− x4 = −4,

P4 : 2x4 = 4

(37)

2.3. MATRIK DAN ELIMINASI GAUSS 21 4. Selanjutnya adalah proses backward-substitution. Melalui proses ini, yang pertama kali

didapat solusinya adalah x4, kemudian x3, lalu diikuti x2, dan akhirnya x1.

P4: x4 = 4 2 = 2, P3: x3= −4 + x4 −1 = 2, P2 : x2 = 6 + x3− x4 2 = 3, P1 : x1 = −8 + x2− 2x3+ x4 = −7

Jadi solusinya adalah x1 = −7, x2= 3, x3 = 2 dan x4= 2.

Berdasarkan kedua contoh di atas, untuk mendapatkan solusi sistem persamaan linear, diper-lukan 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 menyelpros-esaikan sistem persamaan linear dike-nal sebagai metode eliminasi gauss.

2.3 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:

a11x1+ a12x2+ . . . + a1nxn = b1

a21x1+ a22x2+ . . . + a2nxn = b2

. . . = . . . . . . = . . . an1x1+ an2x2+ . . . + annxn = bn

Sementara, kalau dinyatakan dalam bentuk operasi matrik, maka akan seperti ini:       a11 a12 . . . a1n a21 a22 . . . a2n .. . ... ... an1 an2 . . . ann             x1 x2 .. . xn       =       b1 b2 .. . bn       (2.2)

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

(38)

beruku-ran n x (n + 1) seperti berikut ini:       a11 a12 . . . a1n | b1 a21 a22 . . . a2n | b2 .. . ... ... | ... an1 an2 . . . ann | bn       =       a11 a12 . . . a1n | a1,n+1 a21 a22 . . . a2n | a2,n+1 .. . ... ... | ... an1 an2 . . . ann | an,n+1       (2.3)

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

      1 1 0 3 2 1 −1 1 3 −1 −1 2 −1 2 3 −1             x1 x2 x3 x4       =       4 1 −3 4      

Lalu kita dapat membuat matrik augment sebagai berikut:       1 1 0 3 | 4 2 1 −1 1 | 1 3 −1 −1 2 | −3 −1 2 3 −1 | 4      

Kemudian kita lakukan operasi triangularisai terhadap matrik augment, dimulai dari kolom pertama, yaitu       1 1 0 3 | 4 0 −1 −1 −5 | −7 0 −4 −1 −7 | −15 0 3 3 2 | 8      

lalu dilanjutkan ke kolom berikutnya       1 1 0 3 | 4 0 −1 −1 −5 | −7 0 0 3 13 | 13 0 0 0 −13 | −13      

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

(39)

masing-2.4. ALGORITMA ELIMINASI GAUSS 23 masing elemen berikut ini:

      1 1 0 3 | 4 0 −1 −1 −5 | −7 0 0 3 13 | 13 0 0 0 −13 | −13       →       a11 a12 a13 a14 | a15 a21 a22 a23 a24 | a25 a31 a32 a33 a34 | a35 a41 a42 a43 a44 | a45      

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 x4,

x4 =

a45

a44

= −13

−13 = 1

ini dapat dinyatakan dalam rumus umum, yaitu

xn=

an,n+1

ann

lalu dilanjutkan dengan x3, x2, dan x1.

x3 = a35− a34x4 a33 = 13 − [(13)(1)] 3 = 0 x2 = a25− (a23x3+ a24x4) a22 = (−7) − [(−1)(0) + (−5)(1)] (−1) = 2 x1 = a15− (a12x2+ a13x3+ a14x4) a11 = 4 − [(1)(2) + (0)(0) + (3)(1)] 1 = −1

ini juga dapat dinyatakan dalam rumus umum yaitu: xi=

ai,n+1−Pnj=i+1aijxj

aii

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

2.4 Algoritma eliminasi Gauss

Secara umum, sistem persamaan linear adalah sebagai berikut: a11x1+ a12x2+ . . . + a1nxn = b1

a21x1+ a22x2+ . . . + a2nxn = b2

..

. ... = ...

an1x1+ an2x2+ . . . + annxn = bn

Algoritma dasar metode eliminasi gauss, adalah sebagai berikut:

(40)

yang berukuran n x (n + 1) seperti berikut ini:       a11 a12 . . . a1n | b1 a21 a22 . . . a2n | b2 .. . ... ... | ... an1 an2 . . . ann | bn       =       a11 a12 . . . a1n | a1,n+1 a21 a22 . . . a2n | a2,n+1 .. . ... ... | ... an1 an2 . . . ann | an,n+1       (2.4)

Jelas terlihat bahwa elemen-elemen yang menempati kolom terakhir matrik augment adalah nilai dari bi; yaitu ai,n+1= bidimana 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 a11, a22, ..., ann

atau disingkat aii. Jika aii6= 0, bisa dilanjutkan ke langkah no.3. Namun, jika ada elemen

diagonal yang bernilai nol, aii = 0, maka baris dimana elemen itu berada harus ditukar

posisinya dengan baris yang ada dibawahnya, (Pi) ↔ (Pj) dimana j = i + 1, i + 2, ..., n,

sampai elemen diagonal matrik menjadi tidak nol, aii6= 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: Pj−

aji

aii

Pi → Pj (2.5)

dimana j = i + 1, i + 2, ..., n. Maka matrik augment akan menjadi:          a11 a12 a13 . . . a1n | a1,n+1 0 a22 a23 . . . a2n | a2,n+1 0 0 a33 . . . a3n | a3,n+1 .. . ... ... . .. ... | ... 0 0 0 0 ann | an,n+1          (2.6)

4. Hitunglah nilai xndengan cara:

xn=

an,n+1

ann (2.7)

5. Lakukanlah proses substitusi-mundur untuk memperoleh xn−1, xn−2, ..., x2, x1 dengan

cara:

xi =

ai,n+1−Pnj=i+1aijxj

aii (2.8)

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.

(41)

2.4. ALGORITMA ELIMINASI GAUSS 25

2.4.1 Algoritma

Algoritma metode eliminasi gauss untuk menyelesaikan n x n sistem persamaan linear. P1: a11x1+ a12x2+ . . . + a1nxn = b1

P2: a21x1+ a22x2+ . . . + a2nxn = b2

..

. ... ... = ...

Pn: an1x1+ an2x2+ . . . + annxn = bn

INPUT: sejumlah persamaan linear dimana konstanta-konstanta-nya menjadi elemen-elemen

matrik augment A = (aij), dengan 1 ≤ i ≤ n dan 1 ≤ j ≤ n + 1.

OUTPUT: solusi x1, x2, x3, ..., xnatau pesan kesalahan yang mengatakan bahwasistem

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:       a11 a12 . . . a1n | b1 a21 a22 . . . a2n | b2 .. . ... ... | ... an1 an2 . . . ann | bn       =       a11 a12 . . . a1n | a1,n+1 a21 a22 . . . a2n | a2,n+1 .. . ... ... | ... an1 an2 . . . ann | an,n+1       (2.9)

• 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 6= 0. Jika ada elemen diagonal yang bernilai nol (aii = 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

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 diperoleh

elemen yang tidak nol (api 6= 0), maka bisa dipastikan p 6= i. Jika p 6= 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=

aji

(42)

• Langkah 7: Lakukan proses triangularisasi, (Pj − mjiPi) → (Pj)

• Langkah 8: Setelah proses triangularisasi dilalui, periksalah ann. Jika ann = 0, kirimkan

pesan:sistem persamaan linear tidak memiliki solusi yang unik. Lalu program berakhir:

STOP.

• Langkah 9: Jika ann 6= 0, lakukan proses substitusi mundur, dimulai dengan menentukan

xn,

xn=

an,n+1

ann

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

xi =

ai,n+1−Pnj=i+1aijxj

aii

• Langkah 11: Diperoleh solusi yaitu x1, x2, ..., xn. 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-fortranunder 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 memperkecil ukuran matrik augment, silakan sesuaikan angka ukuran matrik yang anda in-ginkan pada statemen pertama dari program ini, yaitu statemen DIMENSION. Inilah program-nya,

1 DIMENSION A(10,11), X(10)

2 REAL MJI

3 WRITE (*,*) ’=PROGRAM ELIMINASI GAUSS=’

4 WRITE (*,*)

5 C LANGKAH 1: MEMASUKAN NILAI ELEMEN-ELEMEN MATRIK AUGMENT

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

7 READ (*,*) N

8 WRITE (*,*)

9 WRITE (*,*) ’MASUKAN ELEMEN-ELEMEN MATRIK AUGMENT’

10 M = N + 1

11 DO 50 I = 1,N

12 DO 60 J = 1,M

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

14 READ (*,*) A(I,J)

15 60 CONTINUE

16 50 CONTINUE

17 WRITE (*,*)

(43)

2.4. ALGORITMA ELIMINASI GAUSS 27

19 WRITE (*,’(1X,A)’) ’MATRIK AUGMENT:’

20 DO 110 I = 1,N

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

22 110 CONTINUE

23 WRITE (*,*)

24 C LANGKAH 2: MEMERIKSA ELEMEN-ELEMEN PIVOT DAN PROSES TUKAR POSISI

25 NN = N-1

26 DO 10 I=1,NN

27 C LANGKAH 3: MENDEFINISIKAN P

28 P = I

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

30 P = P+1

31 GOTO 100

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

33 C MENAMPILKAN PESAN TIDAK UNIK

34 WRITE(*,5)

35 GOTO 400

36 END IF

37 C LANGKAH 4: PROSES TUKAR POSISI

38 IF(P.NE.I) THEN 39 DO 20 JJ=1,M 40 C = A(I,JJ) 41 A(I,JJ) = A(P,JJ) 42 A(P,JJ) = C 43 20 CONTINUE 44 END IF

45 C LANGKAH 5: PERSIAPAN PROSES TRIANGULARISASI

46 JJ = I+1

47 DO 30 J=JJ,N

48 C LANGKAH 6: TENTUKAN MJI

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

50 C LANGKAH 7: MELAKUKAN PROSES TRIANGULARISASI

51 DO 40 K=JJ,M 52 A(J,K) = A(J,K)-MJI*A(I,K) 53 40 CONTINUE 54 A(J,I) = 0 55 30 CONTINUE 56 10 CONTINUE

57 C MENAMPILKAN HASIL TRIANGULARISASI

58 WRITE (*,’(1X,A)’) ’HASIL TRIANGULARISASI:’

59 DO 120 I = 1,N

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

61 120 CONTINUE

62 C LANGKAH 8: MEMERIKSA ELEMEN A(N,N)

63 IF(ABS(A(N,N)).LT.1.0E-20) THEN

64 C MENAMPILKAN PESAN TIDAK UNIK

65 WRITE(*,5)

66 GOTO 400

67 END IF

68 C LANGKAH 9: MENGHITUNG X(N)

69 X(N) = A(N,N+1)/A(N,N)

70 C LANGKAH 10: PROSES SUBSTITUSI MUNDUR

71 L = N-1 72 DO 15 K=1,L 73 I = L-K+1 74 JJ = I+1 75 SUM = 0.0 76 DO 16 KK=JJ,N 77 SUM = SUM+A(I,KK)*X(KK)

(44)

78 16 CONTINUE

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

80 15 CONTINUE

81 C LANGKAH 11: MENAMPILKAN HASIL PERHITUNGAN

82 WRITE (*,*)

83 WRITE (*,7)

84 DO 18 I = 1,N

85 WRITE (*,’(1X,A,I2,A,F14.8)’) ’X(’,I,’) = ’,X(I)

86 18 CONTINUE

87 400 STOP

88

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

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

91 END

Script eliminasi gauss dalam matlab juga telah dibuat. Namun dalam anda perlu memodifikasi

elemen-elemen matrik A agar sesuai dengan data yang hendak anda olah.

1 clear all 2 clc 3 A(1,1)=1; 4 A(1,2)=1; 5 A(1,3)=-1; 6 A(1,4)=0; 7 A(2,1)=6; 8 A(2,2)=-4; 9 A(2,3)=0; 10 A(2,4)=24; 11 A(3,1)=6; 12 A(3,2)=0; 13 A(3,3)=2; 14 A(3,4)=10; 15 A 16 n=3 %jumlah persamaan 17 pause 18 19 %========== Proses Triangularisasi ========= 20 for j=1:(n-1) 21

22 %----mulai proses

pivot---23 if (A(j,j)==0) 24 for p=1:n+1 25 u=A(j,p); 26 v=A(j+1,p); 27 A(j+1,p)=u; 28 A(j,p)=v; 29 end 30 end

31 %----akhir proses

pivot---32 jj=j+1; 33 for i=jj:n 34 m=A(i,j)/A(j,j); 35 for k=1:(n+1) 36 A(i,k)=A(i,k)-(m*A(j,k)); 37 end 38 end 39 end 40 A

(45)

2.5. CONTOH APLIKASI 29

41 pause

42 %========= Akhir Proses Triangularisasi ===

43

44 %---Proses Substitusi

mundur---45 x(n,1)=A(n,n+1)/A(n,n); 46 47 for i=n-1:-1:1 48 S=0; 49 for j=n:-1:i+1 50 S=S+A(i,j)*x(j,1); 51 end 52 x(i,1)=(A(i,n+1)-S)/A(i,i); 53 end 54 x 2.5 Contoh aplikasi

2.5.1 Menghitung arus listrik

Gunakan metode Eliminasi Gauss untuk menentukan arus i1, i2 dan i3 yang mengalir pada

rangkaian berikut ini

jawab:

Berdasarkan Hukum Kirchhoff:

I1+ I2 = I3

10 − 6I1− 2I3 = 0

−14 + 6I1− 10 − 4I2 = 0

Lalu kita susun ulang ketiga persamaan di atas menjadi seperti ini: I1+ I2− I3 = 0

6I1+ 2I3 = 10

(46)

Kemudian dinyatakan dalam bentuk matriks:    1 1 −1 6 −4 0 6 0 2       I1 I2 I3   =    0 24 10   

Selanjutkan kita susun matriks augmentasi sebagai berikut:    1 1 −1 0 6 −4 0 24 6 0 2 10   

Langkah berikutnya adalah menghitung matriks triangularisasi dengan langkah-langkah se-bagai berikut: m = a21 a11 = 6 1 = 6 a21= a21− m.a11= 6 − (6).(1) = 0 a22= a22− m.a12= −4 − (6).(1) = −10 a23= a23− m.a13= 0 − (6).(−1) = 6 a24= a24− m.a14= 24 − (6).(0) = 24 m = a31 a11 = 6 1 = 6 a31= a31− m.a11= 6 − (6).(1) = 0 a32= a32− m.a12= 0 − (6).(1) = −6 a33= a33− m.a13= 2 − (6).(−1) = 8 a34= a34− m.a14= 10 − (6).(0) = 10

Sampai disini matriks augment mengalami perubahan menjadi    1 1 −1 0 0 −10 6 24 0 −6 8 10   

(47)

2.6. MENGHITUNG INVERS MATRIK 31 Kelanjutan langkah menuju triangularisasi adalah

m = a32 a22 = −6 −10 a31= a31− m.a21= 0 − ( −6 −10).(0) = 0 a32= a32− m.a22= −6 − ( −6 −10).(−10) = 0 a33= a33− m.a23= 8 − ( −6 −10).(6) = 4, 4 a34= a34− m.a24= 10 − ( −6 −10).(24) = −4, 4

maka matriks triangularisasi berhasil didapat yaitu    1 1 −1 0 0 −10 6 24 0 0 4, 4 −4, 4   

Sekarang tinggal melakukan proses substitusi mundur I3 = a34 a33 = −4, 4 4, 4 = −1 I2 = a24− a23.I3 a22 = 24 − (6).(−1) −10 = −3 I1= a14− (a13.I3+ a12.I2) a11 = (0 − [(−1).(−1) + (1).(−3)] 1 = 2

Dengan demikian, besar masing-masing arus pada rangkaian di atas adalah I1 = 2A, I2 = −3A

dan I3 = −1A. Tanda minus (-) memiliki arti bahwa arah arus yang sesungguhnya berlawanan

arah dengan asumsi awal yang kita gunakan.

2.6 Menghitung invers matrik

Sekali lagi saya ulangi apa yang pernah kita bahas di awal bab ini yaitu bahwa sistem per-samaan linear dapat dinyatakan sebagai berikut:

a11x1+ a12x2+ . . . + a1nxn = b1

a21x1+ a22x2+ . . . + a2nxn = b2

. . . = . . . . . . = . . . an1x1+ an2x2+ . . . + annxn = bn

Sistem persamaan linear tersebut dapat dinyatakan dalam bentuk operasi matrik,

(48)

sehingga bentuknya menjadi seperti ini:       a11 a12 . . . a1n a21 a22 . . . a2n .. . ... ... an1 an2 . . . ann             x1 x2 .. . xn       =       b1 b2 .. . bn       dimana A =       a11 a12 . . . a1n a21 a22 . . . a2n .. . ... ... an1 an2 . . . ann       , x =       x1 x2 .. . xn       , b=       b1 b2 .. . bn      

Dalam kaitannya dengan invers matrik, matrik A disebut matrik non-singular jika matrik

Amemiliki matrik invers dirinya yaitu A−1. Atau dengan kata lain, matrik A−1adalah invers

dari matrik A. Jika matrik A tidak memiliki invers, maka matrik A disebut singular. Bila

matrik A dikalikan dengan matrik A−1maka akan menghasilkan matrik identitas I, yaitu suatu

matrik yang elemen-elemen diagonalnya bernilai 1.

AA−1 = I =       1 0 . . . 0 0 1 . . . 0 .. . ... . .. ... 0 0 . . . 1       (2.11) Misalnya diketahui, A =    1 2 −1 2 1 0 −1 1 2   , A −1=    −29 59 −19 4 9 −19 29 −13 13 13   

Bila keduanya dikalikan, maka akan menghasilkan matrik identitas,

AA−1=    1 2 −1 2 1 0 −1 1 2       −29 59 −19 4 9 −19 29 −13 13 13   =    1 0 0 0 1 0 0 0 1   

Lalu bagaimana cara mendapatkan matrik invers, A−1? Persamaan (2.11) bisa dijadikan

pedoman.. AA−1 = I    1 2 −1 2 1 0 −1 1 2       i11 i12 i13 i21 i22 i23 i31 i32 i33   =    1 0 0 0 1 0 0 0 1   

(49)

2.6. MENGHITUNG INVERS MATRIK 33

dalam hal ini matrik A−1adalah

A−1 =    i11 i12 i13 i21 i22 i23 i31 i32 i33   

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

gauss. Diawali dengan membentuk matrik augment:    1 2 −1 | 1 0 0 2 1 0 | 0 1 0 −1 1 2 | 0 0 1   

Lalu dilanjutkan dengan proses triangularisasi: (P2−2P1)→(P2) dan (P3+P1)→(P3), kemudian

diikuti oleh (P3+ P2)→(P3):    1 2 −1 | 1 0 0 0 −3 2 | −2 1 0 0 3 1 | 1 0 1    →    1 2 −1 | 1 0 0 0 −3 2 | −2 1 0 0 0 3 | −1 1 1   

Langkah berikutnya, matrik augment yang telah mengalami triangularisasi tersebut dipecah menjadi tiga buah matrik augment seperti berikut ini:

   1 2 −1 | 1 0 −3 2 | −2 0 0 3 | −1       1 2 −1 | 0 0 −3 2 | 1 0 0 3 | 1       1 2 −1 | 0 0 −3 2 | 0 0 0 3 | 1   

Langkah pamungkasnya adalah melakukan proses substitusi mundur pada ketiga matrik aug-ment di atas, sehingga diperoleh:

i11= −29 i21= 49 i31= −13 i12= 59 i22= −19 i32= 13 i13= −19 i23= 29 i33= 13

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

A−1=    −29 59 −19 4 9 −19 29 −13 13 13   

(50)

(mencari nilai x), dengan cara sebagai berikut

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

Ix = A−1b

x = A−1b (2.12)

Contoh berikut ini akan menjelaskan prosesnya secara lebih rinci. Misalnya diketahui sistem persamaan linear

x1+ 2x2− x3 = 2

2x1+ x2 = 3

−x1+ x2+ 2x3 = 4

Bila dikonversikan kedalam operasi matrik menjadi    1 2 −1 2 1 0 −1 1 2       x1 x2 x3   =    2 3 4   

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

x = A−1b x =    −29 59 −19 4 9 −19 29 −13 13 13       2 3 4   =    7 9 13 9 5 3   

Akhirnya diperoleh solusi x1 = 7/9, x2 = 13/9, dan x3 = 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 perhi-tungan matrik invers. Program ini ditulis dengan bahasa fortran, sudah berhasil dikompilasi dalam Linux Debian (g77) dan Windows XP (Visual Fortran). Inilah programnya,

1 DIMENSION A(10,20), D(10,10), X(10)

2 REAL MJI

3 INTEGER TKR, BK, TK, Q

4 WRITE (*,*) ’=PROGRAM INVERS MATRIK DENGAN ELIMINASI GAUSS=’

(51)

2.6. MENGHITUNG INVERS MATRIK 35

6 C LANGKAH 1: MEMASUKAN NILAI ELEMEN-ELEMEN MATRIK A

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

8 READ (*,*) N

9 WRITE (*,*)

10 WRITE (*,*) ’MASUKAN ELEMEN-ELEMEN MATRIK A’

11 M = N + 1

12 DO 50 I = 1,N

13 DO 60 J = 1,N

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

15 READ (*,*) A(I,J)

16 60 CONTINUE

17 50 CONTINUE

18 C LANGKAH 2: MENDEFINISIKAN MATRIK IDENTITAS

19 WRITE (*,*) ’MENDEFINISIKAN MATRIK IDENTITAS’

20 DO 70 I = 1,N

21 DO 80 J = M,N+N

22 A(I,J) = 0

23 IF (I+N .EQ. J) THEN

24 A(I,J) = 1

25 END IF

26 80 CONTINUE

27 70 CONTINUE

28 WRITE (*,*)

29 C MENAMPILKAN MATRIK AUGMENT

30 WRITE (*,’(1X,A)’) ’MATRIK AUGMENT:’

31 DO 110 I = 1,N

32 WRITE (*,’(1X,5(F14.8))’) (A(I,J),J=1,N+N)

33 110 CONTINUE

34 WRITE (*,*)

35 C MENGHITUNG JUMLAH TUKAR (TKR) POSISI. MULA2 TKR = 0

36 TKR = 0

37 C MENGHITUNG JUMLAH OPERASI BAGI/KALI (BK).

38 BK = 0

39 C MENGHITUNG JUMLAH OPERASI TAMBAH/KURANG (TK).

40 TK = 0

41 C LANGKAH 3: MEMERIKSA ELEMEN2 PIVOT DAN PROSES TUKAR POSISI

42 NN = N-1

43 DO 10 I=1,NN

44 C LANGKAH 4: MENDEFINISIKAN P

45 P = I

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

47 P = P+1

48 GOTO 100

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

50 C MENAMPILKAN PESAN SINGULAR

51 WRITE(*,5)

52 GOTO 400

53 END IF

54 C LANGKAH 5: PROSES TUKAR POSISI

55 IF(P.NE.I) THEN 56 DO 20 JJ=1,N+N 57 C = A(I,JJ) 58 A(I,JJ) = A(P,JJ) 59 A(P,JJ) = C 60 TKR = TKR + 1 61 20 CONTINUE 62 END IF

63 C LANGKAH 6: PERSIAPAN PROSES TRIANGULARISASI

(52)

65 DO 30 J=JJ,N

66 C LANGKAH 7: TENTUKAN MJI

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

68 BK = BK + 1

69 C LANGKAH 8: MELAKUKAN PROSES TRIANGULARISASI

70 DO 40 K=JJ,N+N 71 A(J,K) = A(J,K)-MJI*A(I,K) 72 BK = BK + 1 73 TK = TK + 1 74 40 CONTINUE 75 A(J,I) = 0 76 30 CONTINUE 77 10 CONTINUE

78 C MENAMPILKAN HASIL TRIANGULARISASI

79 WRITE (*,’(1X,A)’) ’HASIL TRIANGULARISASI:’

80 DO 120 I = 1,N

81 WRITE (*,’(1X,5(F14.8))’) (A(I,J),J=1,N+N)

82 120 CONTINUE

83 C LANGKAH 9: MEMERIKSA ELEMEN A(N,N)

84 IF(ABS(A(N,N)).LT.1.0E-20) THEN

85 C MENAMPILKAN PESAN SINGULAR

86 WRITE(*,5)

87 GOTO 400

88 END IF

89 DO 500 J = 1,N

90 Q=N+J

91 C LANGKAH 10: MENGHITUNG A(N,N)

92 D(J,N) = A(N,Q)/A(N,N)

93 BK = BK + 1

94 C LANGKAH 11: PROSES SUBSTITUSI MUNDUR

95 L = N-1 96 DO 15 K=1,L 97 I = L-K+1 98 JJ = I+1 99 SUM = 0.0 100 DO 16 KK=JJ,N 101 SUM = SUM+A(I,KK)*D(J,KK) 102 BK = BK + 1 103 TK = TK + 1 104 16 CONTINUE 105 D(J,I) = (A(I,Q)-SUM)/A(I,I) 106 BK = BK + 1 107 TK = TK + 1 108 15 CONTINUE 109 500 CONTINUE

110 C LANGKAH 12: MENAMPILKAN HASIL PERHITUNGAN

111 WRITE (*,*)

112 WRITE (*,’(1X,A)’) ’MATRIK INVERS:’

113 DO 220 I = 1,N 114 WRITE (*,’(1X,5(F14.8))’) (D(J,I),J=1,N) 115 220 CONTINUE 116 WRITE(*,8) TKR 117 WRITE(*,9) BK 118 WRITE(*,11) TK 119 400 STOP

120 5 FORMAT(1X,’MATRIK A BERSIFAT SINGULAR’)

121 8 FORMAT(1X,’JUMLAH TUKAR POSISI = ’,3X,I5)

122 9 FORMAT(1X,’JUMLAH OPERASI BAGI/KALI = ’,3X,I6)

(53)

2.7. PENUTUP 37

124 END

2.7 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 hubungi saya melalui email yang tercantum di halaman paling depan.

(54)
(55)

Bab 3

Aplikasi Eliminasi Gauss pada Masalah

Inversi

✍ Objektif :

⊲ Mengenalkan model garis. ⊲ Mengenalkan model parabola. ⊲ Mengenalkan model bidang.

Pada bab ini, saya mencoba menuliskan aplikasi Metode Eliminasi Gauss sebagai dasar-dasar teknik inversi yaitu meliputi model garis, model parabola dan model bidang. Uraian ap-likasi tersebut diawali dari ketersediaan data observasi, lalu sejumlah parameter model mesti dicari dengan teknik inversi. Mari kita mulai dari model garis.

3.1 Inversi Model Garis

Pengukuran temperatur terhadap kedalaman di bawah permukaan bumi menunjukkan bahwa semakin dalam, temperatur semakin tinggi. Misalnya telah dilakukan sebanyak empat kali (N

= 4) pengukuran temperatur (Ti) pada kedalaman yang berbeda beda (zi). Tabel pengukuran

secara sederhana disajikan seperti ini: Lalu kita berasumsi bahwa variasi temperatur terhadap Tabel 3.1: Data temperatur bawah permukaan tanah terhadap kedalaman

Pengukuran ke-i Kedalaman (m) Temperatur (OC)

1 z1 = 5 T1= 35

2 z2 = 16 T2= 57

3 z3 = 25 T3= 75

4 z4 = 100 T4= 225

kedalaman ditentukan oleh rumus berikut ini:

m1+ m2zi= Ti (3.1)

(56)

dimana m1 dan m2adalah konstanta-konstanta yang akan dicari. Rumus di atas disebut

mod-el. Sedangkan m1 dan m2 disebut model parameter. Jadi pada model di atas terdapat dua

buah model parameter, (M = 2). Adapun yang berlaku sebagai data adalah nilai-nilai

tem-peratur T1, T2,..., dan T4. Berdasarkan model tersebut, kita bisa menyatakan temperatur dan

kedalaman masing-masing sebagai berikut:

m1+ m2z1= T1

m1+ m2z2= T2

m1+ m2z3= T3

m1+ m2z4= T4

Semua persamaan tersebut dapat dinyatakan dalam operasi matrik berikut ini:       1 z1 1 z2 1 z3 1 z4       " m1 m2 # =       T1 T2 T3 T4       (3.2)

Lalu ditulis secara singkat

Gm = d (3.3)

dimana d adalah data yang dinyatakan dalam vektor kolom, m adalah model parameter, juga dinyatakan dalam vektor kolom, dan G disebut matrik kernel. Lantas bagaimana cara

menda-patkan nilai m1dan m2pada vektor kolom m? Manipulasi berikut ini bisa menjawabnya

GtGm = Gtd (3.4)

dimana t disini maksudnya adalah tanda transpos matrik. Selanjutnya, untuk mendapatkan elemen-elemen m, diperlukan langkah-langkah perhitungan berikut ini:

1. Tentukan transpos dari matrik kernel, yaitu Gt

G =       1 z1 1 z2 1 z3 1 z4       ⇒ Gt= " 1 1 1 1 z1 z2 z3 z4 # 2. Tentukan GtG GtG = " 1 1 1 1 z1 z2 z3 z4 #       1 z1 1 z2 1 z3 1 z4       = " N P zi P zi P zi2 #

(57)

3.1. INVERSI MODEL GARIS 41 dimana N = 4 dan i = 1, 2, 3, 4.

3. Kemudian tentukan pula Gtd

Gtd= " 1 1 1 1 z1 z2 z3 z4 #       T1 T2 T3 T4       = " P Ti P ziTi #

4. Sekarang persamaan (3.4) dapat dinyatakan sebagai " N P zi P zi P z2i # " m1 m2 # = " P Ti P ziTi # (3.5)

5. Aplikasikan metode Eliminasi Gauss dengan Substitusi Mundur. Untuk itu, tentukan matrik augment-nya

"

N P zi | P Ti

P zi P zi2 | P ziTi

#

6. Untuk mempermudah perhitungan, kita masukan dulu angka-angka yang tertera pada tabel pengukuran dihalaman depan.

"

4 146 | 392

146 10906 | 25462 #

7. Lakukan proses triangularisasi dengan operasi (P2 − (36, 5)P1) → P2. Saya sertakan

pula indeks masing-masing elemen pada matrik augment sebagaimana yang telah saya lakukan pada catatan kuliah yang berjudul Metode Eliminasi Gauss. Hasilnya adalah

" 4 146 | 392 0 5577 | 11154 # = " a11 a12 | a13 a21 a22 | a23 #

8. Terakhir, tentukan konstanta m1 dan m2 yang merupakan elemen-elemen vektor kolom

m, dengan proses substitusi mundur. Pertama tentukan m2

m2 = a23 a22 = 11154 5577 = 2 lalu tentukan m1 m1 = a13− a12m2 a11 = 392 − (146)(2) 4 = 25

(58)

3.1.1 Script matlab inversi model garis

Script inversi model garis ini dibangun dari beberapa script yang sudah kita pelajari sebelum-nya, yaitu script transpose matriks, perkalian matrik dan script eliminasi gauss. Silakan pela-jari maksud tiap-tiap baris pada script ini.

1 clc 2 clear all 3 4 disp(’Data observasi’) 5 z1=5; 6 z2=16; 7 z3=25; 8 z4=100; 9 10 T(1,1)=35; 11 T(2,1)=57; 12 T(3,1)=75; 13 T(4,1)=225; 14

15 disp(’Elemen-elemen matriks kernel G’)

16 G(1,1)=1; 17 G(1,2)=z1; 18 G(2,1)=1; 19 G(2,2)=z2; 20 G(3,1)=1; 21 G(3,2)=z3; 22 G(4,1)=1; 23 G(4,2)=z4; 24 G 25 d=T; 26 d 27 28 N=4; %jumlah data 29 M=2; %model parameter 30 31 disp(’Mencari G transpos’) 32 for i=1:N 33 for j=1:M 34 GT(j,i)=G(i,j); 35 end 36 end 37 GT 38 39 disp(’Perkalian GT dan G’) 40 for i=1:M 41 for j=1:M 42 GTG(i,j)=0; 43 end 44 end 45 for i=1:M 46 for j=1:M 47 for k=1:N 48 GTG(i,j)=GTG(i,j)+GT(i,k)*G(k,j); 49 end 50 end 51 end

(59)

3.1. INVERSI MODEL GARIS 43 52 GTG 53 54 disp(’Perkalian GT dan d’) 55 for i=1:M 56 for j=1:1 57 GTd(i,j)=0; 58 end 59 end 60 for i=1:M 61 for j=1:1 62 for k=1:N 63 GTd(i,j)=GTd(i,j)+GT(i,k)*d(k,j); 64 end 65 end 66 end 67 GTd 68 69 A=GTG;

70 %====== Menggabungkan Vektor GTd kedalam matrik A ========

71 n=M; 72 for i=1:n 73 A(i,n+1)=GTd(i,1); 74 end 75 A 76

77 %&&&&&& Proses Eliminasi Gauss &&&&&&&&&&&&&&&&&&&&&&&&&

78 %---Proses

Triangularisasi---79 for j=1:(n-1)

80

81 %----mulai proses

pivot---82 if (A(j,j)==0) 83 for p=1:n+1 84 u=A(j,p); 85 v=A(j+1,p); 86 A(j+1,p)=u; 87 A(j,p)=v; 88 end 89 end

90 %----akhir proses

pivot---91 jj=j+1; 92 for i=jj:n 93 m=A(i,j)/A(j,j); 94 for k=1:(n+1) 95 A(i,k)=A(i,k)-(m*A(j,k)); 96 end 97 end 98 end 99 %---100

101 %---Proses Substitusi

mundur---102 x(n,1)=A(n,n+1)/A(n,n); 103 104 for i=n-1:-1:1 105 S=0; 106 for j=n:-1:i+1 107 S=S+A(i,j)*x(j,1); 108 end 109 x(i,1)=(A(i,n+1)-S)/A(i,i); 110 end

(60)

111 %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

112 disp(’Model parameter yang dicari’)

113 m=x

Sebetulnya, matlab telah menyediakan fungsi-fungsi intrinsik yang bisa digunakan sehing-ga dapat memperkecil jumlah baris pada script di atas. Dari line 28 sampai line 113 dapat dipangkas menjadi

1 m=inv(G’*G)*G’*d %Proses inversi linear

Lalu mengapa kita harus bersusah payah membangun script yang begitu panjang bila mat-lab bisa melakukannya dengan mudah? Karena kita sedang mempelajari teknik-teknik kom-putasi untuk menyelesaikan problem sains dan teknik. Kita tidak sedang belajar matlab. Ja-di teknik-teknik yang Ja-dipelajari Ja-disini harus bisa Ja-diterapkan Ja-di selain matlab. Script singkat

m = inv(G′∗ G) ∗ G∗ d hanya berlaku di matlab, sementara script yang panjangnya 113 line

dapat diterjemahkan dengan sangat mudah ke dalam bahasa pemrograman selain matlab. Demikianlah contoh aplikasi metode Eliminasi Gauss dengan substitusi mundur. Anda bisa mengaplikasikan pada kasus lain, dengan syarat kasus yang anda tangani memiliki ben-tuk model yang sama dengan yang telah dikerjakan pada catatan ini, yaitu model persamaan

garisatau disingkat model garis: y = m1 + m2x. Selanjutnya mari kita pelajari inversi model parabola.

3.2 Inversi Model Parabola

Pengukuran temperatur terhadap kedalaman di bawah permukaan bumi menunjukkan bah-wa semakin dalam, temperatur semakin tinggi. Misalnya telah dilakukan sebanyak delapan

kali (N = 8) pengukuran temperatur (Ti) pada kedalaman yang berbeda beda (zi). Tabel

pen-gukuran secara sederhana disajikan seperti ini:

Tabel 3.2: Data temperatur bawah permukaan tanah terhadap kedalaman

Pengukuran ke-i Kedalaman (m) Temperatur (OC)

1 z1 = 5 T1= 21, 75 2 z2 = 8 T2= 22, 68 3 z3 = 14 T3= 25, 62 4 z4 = 21 T4= 30, 87 5 z5 = 30 T5 = 40, 5 6 z6 = 36 T6= 48, 72 7 z7 = 45 T7= 63, 75 8 z8 = 60 T8= 96

Lalu kita berasumsi bahwa variasi temperatur terhadap kedalaman ditentukan oleh rumus berikut ini:

m1+ m2zi+ m3zi2 = Ti (3.6)

dimana m1, m2 dan m3 adalah konstanta-konstanta yang akan dicari. Rumus di atas disebut

Gambar

Tabel 3.2: Data temperatur bawah permukaan tanah terhadap kedalaman Pengukuran ke-i Kedalaman (m) Temperatur ( O C)
Gambar 3.1: Grafik data pengukuran gerak batu
Gambar 3.2 memperlihatkan grafik kurva hasil inversi. Garis berwarna biru merupakan garis kurva fitting hasil inversi parabola
Gambar 3.2: Grafik hasil inversi parabola
+7

Referensi

Dokumen terkait

Pada saat yang bersamaan Gödel juga membuktikan teoremanya yang terkenal, yaitu Teorema Ketaklengkapan ( Incompleteness Theorem ) dan menunjukkan bahwa ZFC adalah contoh dari

Berdasarkan hasil penelitian pengembangan dan pembahasan media pembelajaran matematika bahasan keliling dan luas lingkaran untuk siswa SMP kelas VIII ini,

Suatu sistem persamaan linear dikatakan sederhana bila kita bisa mendapatkan seluruh nilai pengganti variabelnya dengan cara yang lebih mudah atau dengan usaha yang tidak memakan

Hasil perhitungan metode Monte Carlo dan teknik reduksi variansi yaitu teknik control variates dalam mengaproksimasi harga opsi call Asia, diperoleh bahwa semakin banyak simulasi

Dalam perhitungan luas daerah bangun datar yang tidak beraturan menggunakan algoritma Monte Carlo, semakin banyak jumlah titik random yang digunakan, maka luas hasil perhitungan

Suatu sistem persamaan linear dikatakan sederhana bila kita bisa mendapatkan seluruh nilai pengganti variabelnya dengan cara yang lebih mudah atau dengan usaha yang tidak memakan

Untuk suatu fungsi linear seperti contoh B1, hasil hitung integral boleh saja dihitung dengan luas trapezium, tetapi tidak untuk fungsi selain fungsi linear.. Menghitung integral

Pada materi menghitung luas permukaan dan volume bangun ruang sisi lengkung tabung, kerucut, dan bola bahasannya cukup banyak/luas, maka diputuskan untuk menggunakan Model Cooperative