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
Untuk Nina Marliyani Muflih Syamil dan Hasan Azmi
Ketekunan adalah jalan yang terpercaya untuk mengantarkan kita menuju kesuksesan (Supriyanto, 2007)
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
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
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
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
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
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
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
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
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
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
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
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 #
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
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
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 #
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
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)
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
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
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
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.
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
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
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.
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
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
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
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:
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.
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
• 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 (*,*)
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)
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
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
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
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,
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
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
(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=’
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
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)
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.
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)
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 #
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
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
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
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