167
Komputasi untuk Sains dan Teknik Supriyanto Suparno ( Website: http://supriyanto.fisika.ui.edu ) ( Email: supri@fisika.ui.ac.id atau [email protected] ) Edisi II Revisi terakhir tgl: 12 Februari 2008 Departemen Fisika-FMIPA, Univeristas Indonesia Dipublikasikan pertama kali pada September 2007

Iterasi Gauss

Embed Size (px)

Citation preview

Page 1: Iterasi Gauss

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

Page 2: Iterasi Gauss
Page 3: Iterasi Gauss

Untuk

Nina Marliyani

Muflih Syamil

dan

Hasan Azmi

Page 4: Iterasi Gauss
Page 5: Iterasi Gauss

Ketekunan adalah jalan yang terpercaya untuk mengantarkan kita menuju kesuksesan

(Supriyanto, 2007)

Page 6: Iterasi Gauss
Page 7: Iterasi Gauss

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

Page 8: Iterasi Gauss
Page 9: Iterasi Gauss

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

Page 10: Iterasi Gauss

viii

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 Metode LU 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

6.2 Interpolasi Cubic Spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

Page 11: Iterasi Gauss

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

Page 12: Iterasi Gauss
Page 13: Iterasi Gauss

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

xi

Page 14: Iterasi Gauss
Page 15: Iterasi Gauss

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

xiii

Page 16: Iterasi Gauss
Page 17: Iterasi Gauss

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 indeks i 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

Page 18: Iterasi Gauss

2 BAB 1. MATRIK DAN KOMPUTASI

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

Page 19: Iterasi Gauss

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

Page 20: Iterasi Gauss

4 BAB 1. MATRIK DAN KOMPUTASI

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

Page 21: Iterasi Gauss

1.3. MACAM-MACAM MATRIK 5

1.3.9 Matrik diagonal dominan

Matrik diagonal dominan adalah matrik bujursangkar yang memenuhi

|aii| >n

j=1,j 6=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 aii matrik A, |7| > |2|+|0|, lalu |5| > |3|+|−1|, dan |−6| > |5|+|0|. Maka

matrik A disebut matrik diagonal dominan. Sekarang perhatikan elemen diagonal matrik B,

|6| < |4|+ |−3|, |−2| < |4|+ |0|, dan |1| < |−3|+ |0|. Dengan demikian, matrik B bukan matrik

diagonal dominan.

1.3.10 Matrik positive-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 =[

x1 x2 x3

]

2 −1 0

−1 2 −1

0 −1 2

x1

x2

x3

=[

x1 x2 x3

]

2x1 − x2

−x1 + 2x2 − x3

−x2 + 2x3

= 2x21 − 2x1x2 + 2x2

2 − 2x2x3 + 2x23

= x21 + (x2

1 − 2x1x2 + x22) + (x2

2 − 2x2x3 + x23) + x2

3

= x21 + (x1 − x2)

2 + (x2 − x3)2 + x2

3

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

x21 + (x1 − x2)

2 + (x2 − x3)2 + x2

3 > 0

Page 22: Iterasi Gauss

6 BAB 1. MATRIK DAN KOMPUTASI

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 =[

a11 a12 . . . a1m

]

=[

a1 a2 . . . am

]

(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×3 dan 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

]

Page 23: Iterasi Gauss

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×3 adalah

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

Page 24: Iterasi Gauss

8 BAB 1. MATRIK DAN KOMPUTASI

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

Page 25: Iterasi Gauss

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×3 dikalikan 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×3 dan 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

]

Page 26: Iterasi Gauss

10 BAB 1. MATRIK DAN KOMPUTASI

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

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

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

Page 27: Iterasi Gauss

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∑

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×m yang dikalikan dengan ma-

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

eij =m

k=1

aikbkj (1.14)

dengan i=1,2,. . . ,n; j=1,2. . . ,p; dan k=1,2. . . ,m.

Page 28: Iterasi Gauss

12 BAB 1. MATRIK DAN KOMPUTASI

1.4.4 Komputasi perkalian matrik

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

adalah memberikan nilai 0 (nol) pada elemen-elemen matrik E2×2 dengan 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

kedua adalah 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 adalah looping 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

looping terluar, kemudian indeks j, dan yang terakhir indeks k sebagai looping terdalam.

Page 29: Iterasi Gauss

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 = Ax

Page 30: Iterasi Gauss

14 BAB 1. MATRIK DAN KOMPUTASI

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∑

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

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 berukuran m dilakukan melalui 2 tahap; pertama adalah mem-

berikan nilai 0 (nol) pada elemen-elemen vektor-kolom y yang berukuran n. Lalu tahap kedua

adalah melakukan proses perkalian. Kedua tahapan ini digabung jadi satu dalam program

berikut ini

1 for i=1:n

2 b(i,1)=0.0;

Page 31: Iterasi Gauss

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.

============================================================

Page 32: Iterasi Gauss

16 BAB 1. MATRIK DAN KOMPUTASI

Page 33: Iterasi Gauss

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 P4 seperti berikut ini:

P1 : x1 + x2 + 3x4 = 4P2 : 2x1 + x2 − x3 + x4 = 1P3 : 3x1 − x2 − x3 + 2x4 = -3P4 : −x1 + 2x2 + 3x3 − x4 = 4

Problem dari sistem persamaan linear adalah bagaimana mencari nilai pengganti bagi vari-

abel x1, x2, x3, dan x4 sehingga semua persamaan diatas menjadi benar. Langkah awal penye-

lesaian problem tersebut adalah dengan melakukan penyederhanaan sistem persamaan linear.

17

Page 34: Iterasi Gauss

18 BAB 2. METODE ELIMINASI GAUSS

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 Pi dapat 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 Pi dan 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 P1 untuk 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 x3 masih 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

Page 35: Iterasi Gauss

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 x1 akan diperoleh dengan mudah dan

cepat, sebagaimana yang dijelaskan pada langkah berikutnya.

3. Selanjutnya kita jalankan proses backward-substitution. Melalui proses ini, yang perta-

ma kali didapat adalah nilai pengganti bagi variabel 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.

Page 36: Iterasi Gauss

20 BAB 2. METODE ELIMINASI GAUSS

Contoh kedua

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

dan P4 seperti berikut ini:

P1 : x1 − x2 + 2x3 − x4 = -8P2 : 2x1 − 2x2 + 3x3 − 3x4 = -20P3 : x1 + x2 + x3 = -2P4 : 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 P3 untuk 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

Sampai disini proses triangularisasi telah selesai.

Page 37: Iterasi Gauss

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 menyelesaikan 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-

Page 38: Iterasi Gauss

22 BAB 2. METODE ELIMINASI GAUSS

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-masing elemen matrik augment tersebut. Silakan perhatikan posisi masing-

Page 39: Iterasi Gauss

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 −

∑nj=i+1 aijxj

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:

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

Page 40: Iterasi Gauss

24 BAB 2. METODE ELIMINASI GAUSS

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 = bi dimana i = 1, 2, ..., n.

2. Periksalah elemen-elemen pivot. Apakah ada yang bernilai nol? Elemen-elemen pivot

adalah elemen-elemen yang menempati diagonal suatu matrik, yaitu a11, a22, ..., ann

atau disingkat aii. Jika aii 6= 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, aii 6= 0. (Kalau kurang jelas, silakan lihat

lagi contoh kedua yang ada dihalaman 3. Sebaiknya, walaupun elemen diagonalnya tidak nol,

namun mendekati nol (misalnya 0,03), maka proses pertukaran ini dilakukan juga).

3. Proses triangularisasi. Lakukanlah operasi berikut:

Pj −aji

aiiPi → 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 xn dengan 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 −

∑nj=i+1 aijxj

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.

Page 41: Iterasi Gauss

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, ..., xn atau pesan kesalahan yang mengatakan bahwa sistem per-

samaan linear tidak memiliki solusi yang unik.

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

elemen matrik augment, yaitu suatu matrik yang berukuran n x (n + 1) seperti berikut

ini:

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

aii

Page 42: Iterasi Gauss

26 BAB 2. METODE ELIMINASI GAUSS

• 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 −

∑nj=i+1 aijxj

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-fortran under windows-XP.

Langkah-langkah yang tercantum pada program ini disesuaikan dengan langkah-langkah

yang tertulis di atas. Dalam program ini, ukuran maksimum matrik augment adalah 10 x

11, untuk mencari 10 variabel yang tidak diketahui. Jika anda bermaksud memperbesar atau

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 (*,*)

18 C MENAMPILKAN MATRIK AUGMENT

Page 43: Iterasi Gauss

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)

Page 44: Iterasi Gauss

28 BAB 2. METODE ELIMINASI GAUSS

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

Page 45: Iterasi Gauss

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

6I1 − 4I2 = 24

Page 46: Iterasi Gauss

30 BAB 2. METODE ELIMINASI GAUSS

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

Page 47: Iterasi Gauss

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,

Ax = b (2.10)

Page 48: Iterasi Gauss

32 BAB 2. METODE ELIMINASI GAUSS

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

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

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

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

matrik yang elemen-elemen diagonalnya bernilai 1.

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 −1

949 −1

929

−13

13

13

Bila keduanya dikalikan, maka akan menghasilkan matrik identitas,

AA−1 =

1 2 −1

2 1 0

−1 1 2

−29

59 −1

949 −1

929

−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

Page 49: Iterasi Gauss

2.6. MENGHITUNG INVERS MATRIK 33

dalam hal ini matrik A−1 adalah

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 −1

949 −1

929

−13

13

13

Keberadaan matrik A−1 bisa digunakan untuk menyelesaikan sistem persamaan linear

Page 50: Iterasi Gauss

34 BAB 2. METODE ELIMINASI GAUSS

(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 −1

949 −1

929

−13

13

13

2

3

4

=

7913953

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=’

5 WRITE (*,*)

Page 51: Iterasi 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

64 JJ = I+1

Page 52: Iterasi Gauss

36 BAB 2. METODE ELIMINASI GAUSS

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)

123 11 FORMAT(1X,’JUMLAH OPERASI JUMLAH/KURANG = ’,3X,I6)

Page 53: Iterasi Gauss

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.

Page 54: Iterasi Gauss
Page 55: Iterasi Gauss

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 = 352 z2 = 16 T2 = 573 z3 = 25 T3 = 754 z4 = 100 T4 = 225

kedalaman ditentukan oleh rumus berikut ini:

m1 + m2zi = Ti (3.1)

39

Page 56: Iterasi Gauss

40 BAB 3. APLIKASI ELIMINASI GAUSS PADA MASALAH INVERSI

dimana m1 dan m2 adalah 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 m1 dan m2 pada 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∑

zi∑

zi∑

z2i

]

Page 57: Iterasi Gauss

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

=

[

Ti∑

ziTi

]

4. Sekarang persamaan (3.4) dapat dinyatakan sebagai

[

N∑

zi∑

zi∑

z2i

] [

m1

m2

]

=

[

Ti∑

ziTi

]

(3.5)

5. Aplikasikan metode Eliminasi Gauss dengan Substitusi Mundur. Untuk itu, tentukan

matrik augment-nya

[

N∑

zi | ∑

Ti∑

zi∑

z2i | ∑

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

Page 58: Iterasi Gauss

42 BAB 3. APLIKASI ELIMINASI GAUSS PADA MASALAH INVERSI

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

Page 59: Iterasi Gauss

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

Page 60: Iterasi Gauss

44 BAB 3. APLIKASI ELIMINASI GAUSS PADA MASALAH INVERSI

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 dipelajari disini harus bisa diterapkan 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

garis atau 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, 752 z2 = 8 T2 = 22, 683 z3 = 14 T3 = 25, 624 z4 = 21 T4 = 30, 875 z5 = 30 T5 = 40, 56 z6 = 36 T6 = 48, 727 z7 = 45 T7 = 63, 758 z8 = 60 T8 = 96

Lalu kita berasumsi bahwa variasi temperatur terhadap kedalaman ditentukan oleh rumus

berikut ini:

m1 + m2zi + m3z2i = Ti (3.6)

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

model. Sedangkan m1, m2 dan m3 disebut model parameter. Jadi pada model di atas terdapat

Page 61: Iterasi Gauss

3.2. INVERSI MODEL PARABOLA 45

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

temperatur T1, T2,..., dan T8. Berdasarkan model tersebut, kita bisa menyatakan temperatur

dan kedalaman masing-masing sebagai berikut:

m1 + m2z1 + m3z21 = T1

m1 + m2z2 + m3z22 = T2

m1 + m2z3 + m3z23 = T3

m1 + m2z4 + m3z24 = T4

m1 + m2z5 + m3z25 = T5

m1 + m2z6 + m3z26 = T6

m1 + m2z7 + m3z27 = T7

m1 + m2z8 + m3z28 = T8

Semua persamaan tersebut dapat dinyatakan dalam operasi matrik berikut ini:

1 z1 z21

1 z2 z22

1 z3 z23

1 z4 z24

1 z5 z25

1 z6 z26

1 z7 z27

1 z8 z28

m1

m2

m3

=

T1

T2

T3

T4

T5

T6

T7

T8

(3.7)

Lalu ditulis secara singkat

Gm = d (3.8)

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 m1, m2 dan m3 pada vektor kolom m? Manipulasi berikut ini bisa menjawabnya

GtGm = Gtd (3.9)

dimana t disini maksudnya adalah tanda transpos matrik. Selanjutnya, untuk mendapatkan

elemen-elemen m, diperlukan langkah-langkah perhitungan berikut ini:

Page 62: Iterasi Gauss

46 BAB 3. APLIKASI ELIMINASI GAUSS PADA MASALAH INVERSI

1. Tentukan transpos dari matrik kernel, yaitu Gt

G =

1 z1 z21

1 z2 z22

1 z3 z23

1 z4 z24

1 z5 z25

1 z6 z26

1 z7 z27

1 z8 z28

⇒ Gt =

1 1 1 1 1 1 1 1

z1 z2 z3 z4 z5 z6 z7 z8

z21 z2

2 z23 z2

4 z25 z2

6 z27 z2

8

2. Tentukan GtG

GtG =

1 1 1 1 1 1 1 1

z1 z2 z3 z4 z5 z6 z7 z8

z21 z2

2 z23 z2

4 z25 z2

6 z27 z2

8

1 z1 z21

1 z2 z22

1 z3 z23

1 z4 z24

1 z5 z25

1 z6 z26

1 z7 z27

1 z8 z28

=

N∑

zi∑

z2i

zi∑

z2i

z3i

z2i

z3i

z4i

dimana N = 8 dan i = 1, 2, 3, ..., 8.

3. Kemudian tentukan pula Gtd

Gtd =

1 1 1 1 1 1 1 1

z1 z2 z3 z4 z5 z6 z7 z8

z21 z2

2 z23 z2

4 z25 z2

6 z27 z2

8

T1

T2

T3

T4

T5

T6

T7

T8

=

Ti∑

ziTi∑

z2i Ti

4. Sekarang persamaan (3.14) dapat dinyatakan sebagai (ini khan least square juga...!?)

N∑

zi∑

z2i

zi∑

z2i

z3i

z2i

z3i

z4i

m1

m2

m3

=

Ti∑

ziTi∑

z2i Ti

(3.10)

5. Aplikasikan metode Eliminasi Gauss dengan Substitusi Mundur. Untuk itu, tentukan

Page 63: Iterasi Gauss

3.2. INVERSI MODEL PARABOLA 47

matrik augment-nya

N∑

zi∑

z2i | ∑

Ti∑

zi∑

z2i

z3i | ∑

ziTi∑

z2i

z3i

z4i | ∑

z2i Ti

6. Untuk mempermudah perhitungan, kita masukan dulu angka-angka yang tertera pada

tabel pengukuran dihalaman depan.

8 219 8547 | 349, 89

219 8547 393423 | 12894, 81

8547 393423 19787859 | 594915, 33

7. Lakukan proses triangularisasi dengan operasi (P2 − (219/8)P1) → P2. Hasilnya adalah

8 219 8547 | 349, 89

0 2551, 88 159448, 88 | 3316, 57

8547 393423 19787859 | 594915, 33

8. Masih dalam proses triangularisai, operasi berikutnya (P3 − (8547/8)P1) → P3. Hasilnya

adalah

8 219 8547 | 349, 89

0 2551, 88 159448, 88 | 3316, 57

0 159448.88 10656457, 88 | 221101, 6

9. Masih dalam proses triangularisai, operasi berikutnya (P3 − (159448, 88/2551, 88)P2) →P3. Hasilnya adalah

8 219 8547 | 349, 89

0 2551, 88 159448, 88 | 3316, 57

0 0 693609, 48 | 13872, 19

(3.11)

Seperti catatan yang lalu, saya ingin menyertakan pula notasi masing-masing elemen

pada matrik augment sebelum melakukan proses substitusi mundur.

8 219 8547 | 349, 89

0 2551, 88 159448, 88 | 3316, 57

0 0 693609, 48 | 13872, 19

a11 a12 a13 | a14

a21 a22 a23 | a24

a31 a32 a33 | a34

10. Terakhir, tentukan konstanta m1, m2 dan m3 yang merupakan elemen-elemen vektor

kolom m, dengan proses substitusi mundur. Pertama tentukan m3

m3 =a34

a33=

13872, 19

693609, 48= 0, 02

Page 64: Iterasi Gauss

48 BAB 3. APLIKASI ELIMINASI GAUSS PADA MASALAH INVERSI

lalu m2

m2 =a24 − a23m3

a22=

3316, 57 − (159448, 88)(0, 02)

2551, 88= 0, 05

dan m1

m1 =a14 − (a12m2 + a13m3)

a11=

349, 89 − [(219)(0, 05) + (8547)(0, 02)

8= 21

3.2.1 Script matlab inversi model parabola

Perbedaan utama script ini dengan script inversi model garis terletak pada inisialisasi elemen-

elemen matrik kernel. Elemen-elemen matrik kernel sangat ditentukan oleh model matematika

yang digunakan. Seperti pada script ini, matrik kernelnya diturunkan dari persamaan parabo-

la.

1 clc

2 clear all

3

4 z1=5;

5 z2=8;

6 z3=14;

7 z4=21;

8 z5=30;

9 z6=36;

10 z7=45;

11 z8=60;

12

13 T(1,1)=21.75;

14 T(2,1)=22.68;

15 T(3,1)=25.62;

16 T(4,1)=30.87;

17 T(5,1)=40.5;

18 T(6,1)=48.72;

19 T(7,1)=63.75;

20 T(8,1)=96;

21

22 G(1,1)=1;

23 G(1,2)=z1;

24 G(1,3)=z1^2;

25 G(2,1)=1;

26 G(2,2)=z2;

27 G(2,3)=z2^2;

28 G(3,1)=1;

29 G(3,2)=z3;

30 G(3,3)=z3^2;

31 G(4,1)=1;

32 G(4,2)=z4;

33 G(4,3)=z4^2;

34 G(5,1)=1;

35 G(5,2)=z5;

36 G(5,3)=z5^2;

37 G(6,1)=1;

38 G(6,2)=z6;

39 G(6,3)=z6^2;

40 G(7,1)=1;

41 G(7,2)=z7;

Page 65: Iterasi Gauss

3.2. INVERSI MODEL PARABOLA 49

42 G(7,3)=z7^2;

43 G(8,1)=1;

44 G(8,2)=z8;

45 G(8,3)=z8^2;

46

47 G

48 d=T;

49 d

50

51 N=8; %jumlah data

52 M=3; %model parameter

53 pause

54

55

56 %%%%%===========Proses inversi==============

57 disp(’Mencari G transpos’)

58 for i=1:N

59 for j=1:M

60 GT(j,i)=G(i,j);

61 end

62 end

63 GT

64

65 disp(’Perkalian GT dan G’)

66 for i=1:M

67 for j=1:M

68 GTG(i,j)=0;

69 end

70 end

71 for i=1:M

72 for j=1:M

73 for k=1:N

74 GTG(i,j)=GTG(i,j)+GT(i,k)*G(k,j);

75 end

76 end

77 end

78 GTG

79

80 disp(’Perkalian GT dan d’)

81 for i=1:M

82 for j=1:1

83 GTd(i,j)=0;

84 end

85 end

86 for i=1:M

87 for j=1:1

88 for k=1:N

89 GTd(i,j)=GTd(i,j)+GT(i,k)*d(k,j);

90 end

91 end

92 end

93 GTd

94

95 A=GTG;

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

97 n=M;

98 for i=1:n

99 A(i,n+1)=GTd(i,1);

100 end

Page 66: Iterasi Gauss

50 BAB 3. APLIKASI ELIMINASI GAUSS PADA MASALAH INVERSI

101 A

102 pause

103

104 disp(’Hasil Eliminasi Gauss’)

105 %&&&&&& Proses Eliminasi Gauss &&&&&&&&&&&&&&&&&&&&&&&&&

106 %---------Proses Triangularisasi-----------

107 for j=1:(n-1)

108

109 %----mulai proses pivot---

110 if (A(j,j)==0)

111 for p=1:n+1

112 u=A(j,p);

113 v=A(j+1,p);

114 A(j+1,p)=u;

115 A(j,p)=v;

116 end

117 end

118 %----akhir proses pivot---

119 jj=j+1;

120 for i=jj:n

121 m=A(i,j)/A(j,j);

122 for k=1:(n+1)

123 A(i,k)=A(i,k)-(m*A(j,k));

124 end

125 end

126 end

127 %-------------------------------------------

128

129 %------Proses Substitusi mundur-------------

130 x(n,1)=A(n,n+1)/A(n,n);

131

132 for i=n-1:-1:1

133 S=0;

134 for j=n:-1:i+1

135 S=S+A(i,j)*x(j,1);

136 end

137 x(i,1)=(A(i,n+1)-S)/A(i,i);

138 end

139 %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

140 %%%%%%%%%%%=====AKHIR DARI INVERSI MODEL GARIS==========

141 m=x

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 memiliki tiga buah

model parameter yang tidak diketahui dalam bentuk persamaan parabola: y = m1 + m2x +

m3x2. Pada catatan berikutnya, saya akan membahas model yang mengandung tiga model

parameter dalam 2 dimensi.

3.3 Inversi Model Bidang

Dalam catatan ini saya belum sempat mencari contoh pengukuran yang sesuai untuk model

2-dimensi. Maka, saya ingin langsung saja mengajukan sebuah model untuk 2-dimensi berikut

Page 67: Iterasi Gauss

3.3. INVERSI MODEL BIDANG 51

ini:

m1 + m2xi + m3yi = di (3.12)

dimana m1, m2 dan m3 merupakan model parameter yang akan dicari. Adapun yang berlaku

sebagai data adalah d1, d2, d3, ..., di. Berdasarkan model tersebut, kita bisa menyatakan temper-

atur dan kedalaman masing-masing sebagai berikut:

m1 + m2x1 + m3y1 = d1

m1 + m2x2 + m3y2 = d2

m1 + m2x3 + m3y3 = d3

......

......

...

m1 + m2xN + m3yN = dN

Semua persamaan tersebut dapat dinyatakan dalam operasi matrik berikut ini:

1 x1 y1

1 x2 y2

1 x3 y3

......

...

1 xN yN

m1

m2

m3

=

d1

d2

d3

...

dN

Lalu ditulis secara singkat

Gm = d (3.13)

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 m1, m2 dan m3 pada vektor kolom m? Manipulasi berikut ini bisa menjawabnya

GtGm = Gtd (3.14)

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 x1 y1

1 x2 y2

1 x3 y3

......

...

1 xN yN

⇒ Gt =

1 1 1 · · · 1

x1 x2 x3 · · · xN

y1 y2 y3 · · · yN

Page 68: Iterasi Gauss

52 BAB 3. APLIKASI ELIMINASI GAUSS PADA MASALAH INVERSI

2. Tentukan GtG

GtG =

1 1 1 · · · 1

x1 x2 x3 · · · xN

y1 y2 y3 · · · yN

1 x1 y1

1 x2 y2

1 x3 y3

......

...

1 xN yN

=

N∑

xi∑

yi∑

xi∑

x2i

xiyi∑

yi∑

xiyi∑

y2i

dimana N = jumlah data. dan i = 1, 2, 3, ..., N .

3. Kemudian tentukan pula Gtd

Gtd =

1 1 1 · · · 1

x1 x2 x3 · · · xN

y1 y2 y3 · · · yN

d1

d2

d3

...

dN

=

di∑

xidi∑

yidi

4. Sekarang, persamaan (3.14) dapat dinyatakan sebagai

N∑

xi∑

yi∑

xi∑

x2i

xiyi∑

yi∑

xiyi∑

y2i

m1

m2

m3

=

di∑

xidi∑

yidi

(3.15)

5. Aplikasikan metode Eliminasi Gauss dengan Substitusi Mundur. Untuk itu, tentukan

matrik augment-nya

N∑

xi∑

yi | ∑

di∑

xi∑

x2i

xiyi | ∑

xidi∑

yi∑

xiyi∑

y2i | ∑

yidi

6. Langkah-langkah selanjutnya akan sama persis dengan catatan sebelumnya (model lin-

ear dan model parabola)

Anda bisa mengaplikasikan data pengukuran yang anda miliki, dengan syarat kasus yang

anda tangani memiliki bentuk model yang sama dengan yang telah dikerjakan pada catatan

ini, yaitu memiliki tiga buah model parameter yang tidak diketahui dalam bentuk persamaan

bidang (atau 2-dimensi): d = m1 + m2x + m3y.

Saya cukupkan sementara sampai disini. Insya Allah akan saya sambung lagi dilain waktu.

Kalau ada yang mau didiskusikan, silakan hubungi saya melalui email: [email protected].

Page 69: Iterasi Gauss

3.4. CONTOH APLIKASI 53

3.4 Contoh aplikasi

3.4.1 Menghitung gravitasi di planet X

Seorang astronot tiba di suatu planet yang tidak dikenal. Setibanya disana, ia segera mengelu-

arkan kamera otomatis, lalu melakukan ekperimen kinematika yaitu dengan melempar batu

vertikal ke atas. Hasil foto-foto yang terekam dalam kamera otomatis adalah sebagai berikut

Tabel 3.3: Data ketinggian terhadap waktu dari planet X

Waktu (dt) Ketinggian (m) Waktu (dt) Ketinggian (m)

0,00 5,00 2,75 7,620,25 5,75 3,00 7,250,50 6,40 3,25 6,770,75 6,94 3,50 6,201,00 7,38 3,75 5,521,25 7,72 4,00 4,731,50 7,96 4,25 3,851,75 8,10 4,50 2,862,00 8,13 4,75 1,772,25 8,07 5,00 0,582,50 7,90

Plot data pengukuran waktu vs ketinggian diperlihatkan sebagai berikut

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

1

2

3

4

5

6

7

8

9

Waktu (detik)

Tin

ggi (

met

er)

Gambar 3.1: Grafik data pengukuran gerak batu

Anda diminta untuk membantu pengolahan data di atas. Jika anda menggunakan asumsi

Page 70: Iterasi Gauss

54 BAB 3. APLIKASI ELIMINASI GAUSS PADA MASALAH INVERSI

model matematik dari Gerak-Lurus-Berubah-Beraturan (GLBB) seperti ini

ho + vot −1

2gt2 = h

maka gunakanlah prinsip-prinsip inversi untuk menentukan kecapatan awal, vo dan konstanta

gravitasi, g pada planet tersebut.

jawab:

Berdasarkan tabel di atas, diketahui terdapat 21 data. Ketinggian pada saat t = 0 adalah ho = 5

m. Untuk mencari vo dan g menggunakan metode inversi, mula-mula kita definisikan terlebih

dahulu m1 dan m2:

m1 = vo m2 = −1

2g

sehingga persamaan model GLBB menjadi

5 + m1ti + m2t2i = hi

dimana i menunjukkan data ke-i. Langkah selanjutnya adalah menentukan nilai tiap-tiap ele-

men matrik kernel, yaitu dengan memasukan semua data kedalam persamaan model GLBB

5 + m1t1 + m2t21 = h1

5 + m1t2 + m2t22 = h2

5 + m1t3 + m2t23 = h3

...... =

...

5 + m1t20 + m2t220 = h20

Semua persamaan tersebut dapat dinyatakan dalam operasi matrik berikut ini:

5 t1 t215 t2 t225 t3 t235 t4 t24...

......

5 t19 t2195 t20 t220

[

m1

m2

]

=

h1

h2

h3

...

h19

h20

Sebelum dilanjut, coba perhatikan dengan teliti operasi matrik di atas. Adakah yang janggal??

Yep.. matrik kernel G berukuran 20x3 sementara vektor m berukuran 2x1, tentu saja operasi

perkalian matrik akan gagal. Untuk menghindarinya, kita tambahkan m0 pada vektor m, se-

Page 71: Iterasi Gauss

3.4. CONTOH APLIKASI 55

hingga operasi tersebut menjadi

5 t1 t215 t2 t225 t3 t235 t4 t24...

......

5 t19 t2195 t20 t220

m0

m1

m2

=

h1

h2

h3

...

h19

h20

Namun, perlu dicatat bahwa m0 harus punya syarat, yaitu harus bernilai 1 atau m0 =1. Ini

boleh dibilang sebagai sebuah aksioma, atau sesuatu yang tak perlu dibuktikan lagi tapi tak

bisa dibantah. Tinggal nanti bisa kita periksa hasil inversinya. Bila m0 bernilai 1, maka proses

inversi dianggap sukses. Kemudian operasi matrik tersebut bisa ditulis secara singkat

Gm = d

Untuk menyelesaikan persamaan matrik ini, diperlukan modifikasi berikut

GT Gm = GTd (3.16)

dimana T disini maksudnya adalah tanda transpos matrik. Selanjutnya, untuk mendapatkan

m0, m1 dan m2, diperlukan langkah-langkah perhitungan berikut ini:

1. Tentukan transpos dari matrik kernel, yaitu Gt

G =

5 t1 t215 t2 t225 t3 t235 t4 t24...

......

5 t19 t2195 t20 t220

⇒ GT =

5 5 5 5 . . . 5 5

t1 t2 t3 t4 . . . t19 t20

t21 t22 t23 t24 . . . t219 t220

2. Tentukan GT G

GT G =

5 5 5 5 . . . 5 5

t1 t2 t3 t4 . . . t19 t20

t21 t22 t23 t24 . . . t219 t220

5 t1 t215 t2 t225 t3 t235 t4 t24...

......

5 t19 t2195 t20 t220

=

25N 5∑

ti 5∑

t2i5

ti∑

t2i∑

t3i5

t2i∑

t3i∑

t4i

Page 72: Iterasi Gauss

56 BAB 3. APLIKASI ELIMINASI GAUSS PADA MASALAH INVERSI

dimana N = 20 dan i = 1, 2, ..., 20.

3. Kemudian tentukan pula GTd

GTd =

5 5 5 5 . . . 5 5

t1 t2 t3 t4 . . . t19 t20

t21 t22 t23 t24 . . . t219 t220

h1

h2

h3

h4

...

h19

h20

=

5∑

hi∑

tihi∑

t2i hi

4. Sekarang persamaan (3.16) dapat dinyatakan sebagai

25N 5∑

ti 5∑

t2i5

ti∑

t2i∑

t3i5

t2i∑

t3i∑

t4i

m0

m1

m2

=

5∑

hi∑

tihi∑

t2i hi

(3.17)

500 262, 5 896, 9

262, 5 179, 4 689, 1

896, 9 689, 1 2822, 9

m0

m1

m2

=

607, 5

273, 7

796, 3

Hasil operasi matriks ini dapat diselesaikan dengan metode Eliminasi Gauss, yaitu

m0

m1

m2

=

0, 9999

3, 2009

−0, 8169

Lihatlah! m0 = 0,9999 atau mendekati 1. Dan ini sesuai dengan aksioma yang telah dinyatakan

di awal bahwa memang m0 harus bernilai 1. Jika m0 tidak bernilai 1 berarti teknik inversinya

salah total.

Hasil inversi juga menunjukkan bahwa kecepatan awal yaitu saat batu dilempar ke atas

adalah sebesar m1 = vo = 3,2009 m/dt. Adapun percepatan gravitasi diperoleh dari m2 dimana

m2 = −12g = -0,8169. Sehingga nilai g adalah sebesar 1,6338 m/dt2.

Gambar 3.2 memperlihatkan grafik kurva hasil inversi. Garis berwarna biru merupakan

garis kurva fitting hasil inversi parabola. Sedangkan bulatan berwarna merah adalah data pen-

gukuran ketinggian (m) terhadap waktu (dt). Jelas terlihat bahwa garis kurva berwarna biru

benar-benar cocok melewati semua titik data pengukuran. Ini menunjukkan tingkat akurasi

yang sangat tinggi. Sehingga nilai kecepatan awal dan gravitasi hasil inversi cukup valid un-

tuk menjelaskan gerak batu di planet X.

Page 73: Iterasi Gauss

3.4. CONTOH APLIKASI 57

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

1

2

3

4

5

6

7

8

9

Waktu (dt)

Ket

ingg

ian

(m)

Gambar 3.2: Grafik hasil inversi parabola

Berikut adalah script inversi dalam Matlab untuk memecahkan masalah ini

1 clear all

2 clc;

3

4 N=20; %jumlah data

5 M=3; %model parameter

6 for i=1:N

7 t(i)=i*0.25;

8 end

9 h(1)=5.75;

10 h(2)=6.40;

11 h(3)=6.94;

12 h(4)=7.38;

13 h(5)=7.72;

14 h(6)=7.96;

15 h(7)=8.10;

16 h(8)=8.13;

17 h(9)=8.07;

18 h(10)=7.90;

19 h(11)=7.62;

20 h(12)=7.25;

21 h(13)=6.77;

22 h(14)=6.20;

23 h(15)=5.52;

24 h(16)=4.73;

25 h(17)=3.85;

26 h(18)=2.86;

27 h(19)=1.77;

28 h(20)=0.58;

29

30 for i=1:N

31 G(i,1)=5;

32 G(i,2)=t(i);

33 G(i,3)=t(i)^2;

Page 74: Iterasi Gauss

58 BAB 3. APLIKASI ELIMINASI GAUSS PADA MASALAH INVERSI

34 end

35 G

36 for i=1:N

37 d(i,1)=h(i);

38 end

39 d

40

41 %%%%%===========Proses inversi==============

42 disp(’Mencari G transpos’)

43 for i=1:N

44 for j=1:M

45 GT(j,i)=G(i,j);

46 end

47 end

48 GT

49

50 disp(’Perkalian GT dan G’)

51 for i=1:M

52 for j=1:M

53 GTG(i,j)=0;

54 end

55 end

56 for i=1:M

57 for j=1:M

58 for k=1:N

59 GTG(i,j)=GTG(i,j)+GT(i,k)*G(k,j);

60 end

61 end

62 end

63 GTG

64

65 disp(’Perkalian GT dan d’)

66 for i=1:M

67 for j=1:1

68 GTd(i,j)=0;

69 end

70 end

71 for i=1:M

72 for j=1:1

73 for k=1:N

74 GTd(i,j)=GTd(i,j)+GT(i,k)*d(k,j);

75 end

76 end

77 end

78 GTd

79

80 A=GTG;

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

82 n=M;

83 for i=1:n

84 A(i,n+1)=GTd(i,1);

85 end

86 A

87 pause

88

89 disp(’Hasil Eliminasi Gauss’)

90 %&&&&&& Proses Eliminasi Gauss &&&&&&&&&&&&&&&&&&&&&&&&&

91 %---------Proses Triangularisasi-----------

92 for j=1:(n-1)

Page 75: Iterasi Gauss

3.4. CONTOH APLIKASI 59

93

94 %----mulai proses pivot---

95 if (A(j,j)==0)

96 for p=1:n+1

97 u=A(j,p);

98 v=A(j+1,p);

99 A(j+1,p)=u;

100 A(j,p)=v;

101 end

102 end

103 %----akhir proses pivot---

104 jj=j+1;

105 for i=jj:n

106 m=A(i,j)/A(j,j);

107 for k=1:(n+1)

108 A(i,k)=A(i,k)-(m*A(j,k));

109 end

110 end

111 end

112 %-------------------------------------------

113 %------Proses Substitusi mundur-------------

114 x(n,1)=A(n,n+1)/A(n,n);

115

116 for i=n-1:-1:1

117 S=0;

118 for j=n:-1:i+1

119 S=S+A(i,j)*x(j,1);

120 end

121 x(i,1)=(A(i,n+1)-S)/A(i,i);

122 end

123 %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

124 %%%%%%%%%%%===== AKHIR DARI PROSES INVERSI ==========

125 m=x

126

127 %-------MENGGAMBAR GRAFIK----------------------

128 plot(t,h,’ro’);

129 xlabel(’Waktu (dt)’);ylabel(’Ketinggian (m)’);

130 hold on;

131 for i=1:20

132 hi(i)=5+m(2)*t(i)+m(3)*t(i)^2;

133 end

134 plot(t,hi);

135 hold off;

Page 76: Iterasi Gauss
Page 77: Iterasi Gauss

Bab 4

Metode LU Decomposition

Objektif :

⊲ Mengenalkan teknik faktorisasi matrik.

⊲ Mengenalkan aplikasi LU Decomposition pada sistem persamaan linear.

⊲ Merumuskan algoritma LU Decomposition.

4.1 Faktorisasi matrik

Pada semua catatan yang terdahulu, telah diulas secara panjang lebar bahwa sistem persamaan

linear dapat dicari solusinya secara langsung dengan metode eliminasi gauss. Namun perlu

juga diketahui bahwa eliminasi gauss bukan satu-satunya metode dalam mencari solusi sistem

persamaan linear, misalnya ada metode matrik inversi seperti yang dijelaskan pada catatan

yang paling terakhir. Terlepas dari masalah in-efisiensi penyelesaiannya, yang jelas metode

invers matrik bisa digunakan untuk menyelesaikan sistem persamaan linear.

Nah, pada catatan kali ini, saya ingin mengetengahkan sebuah metode yang lain untuk

menyelesaikan sistem persamaan linear, yaitu metode faktorisasi matrik yang umum dikenal

sebagai LU-decomposition. Metode ini sekaligus menjadi pengantar menuju metode Singular

Value Decomposition, (SVD), suatu metode yang saat ini paling “handal” dalam menyelesaikan

sistem persamaan linear dan merupakan bagian dari metode least square.

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

erasi matrik

Ax = b (4.1)

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

dimensi atau ukuran matrik L dan U harus sama dengan dimensi matrik A. Atau dengan kata

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

A = LU (4.2)

61

Page 78: Iterasi Gauss

62 BAB 4. METODE LU DECOMPOSITION

sehingga persamaan (6.4) menjadi

LUx = b

Langkah penyelesaian sistem persamaan linear dengan metode LU-decomposition, diawali den-

gan menghadirkan vektor y dimana,

Ux = y (4.3)

Langkah tersebut tidak bermaksud untuk menghitung vektor y, melainkan untuk menghitung

vektor x. Artinya, sebelum persamaan (4.3) dieksekusi, nilai-nilai yang menempati elemen-

elemen vektor y harus sudah diketahui. Lalu bagaimana cara memperoleh vektor y? Begini

caranya,

Ly = b (4.4)

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

• Melakukan faktorisasi matrik A menjadi matrik L dan matrik U → A = LU .

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

atau substitusi-maju.

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

atau substitusi-mundur.

Metode LU-decomposition bisa dibilang merupakan modifikasi dari eliminasi gauss, karena

beberapa langkah yang mesti dibuang pada eliminasi gauss, justru harus dipakai oleh LU-

decomposition. Untuk lebih jelasnya, perhatikan contoh berikut ini. Diketahui sistem persamaan

linear sebagai berikut

P1 : x1 + x2 + 3x4 = 4P2 : 2x1 + x2 − x3 + x4 = 1P3 : 3x1 − x2 − x3 + 2x4 = -3P4 : −x1 + 2x2 + 3x3 − x4 = 4

Sistem tersebut dapat dinyatakan dalam operasi matrik Ax = y,

1 1 0 3

2 1 −1 1

3 −1 −1 2

−1 2 3 −1

x1

x2

x3

x4

=

4

1

−3

4

(4.5)

Pada metode eliminasi gauss, matrik A dikonversi menjadi matrik triangular melalui urutan

operasi-operasi berikut: (P2 − 2P1) → (P2), (P3 − 3P1) → (P3), (P4 − (−1)P1) → (P4), (P3 −4P2) → (P3), (P4 − (−3)P2) → (P4). Disisi lain, vektor b ikut berubah nilainya menyesuaikan

Page 79: Iterasi Gauss

4.1. FAKTORISASI MATRIK 63

proses triangularisasi,

1 1 0 3

0 −1 −1 −5

0 0 3 13

0 0 0 −13

x1

x2

x3

x4

=

4

−7

13

−13

(4.6)

Lain halnya dengan metode LU-decomposition dimana vektor b tidak mengalami perubahan.

Yang berubah hanya matrik A saja, yaitu menjadi matrik L dan matrik U, A = LU

A =

1 1 0 3

2 1 −1 1

3 −1 −1 2

−1 2 3 −1

=

1 0 0 0

2 1 0 0

3 4 1 0

−1 −3 0 1

1 1 0 3

0 −1 −1 −5

0 0 3 13

0 0 0 −13

Jadi matrik L dan U masing-masing adalah

L =

1 0 0 0

2 1 0 0

3 4 1 0

−1 −3 0 1

U =

1 1 0 3

0 −1 −1 −5

0 0 3 13

0 0 0 −13

Coba bandingkan matrik U di atas dengan matrik hasil triangularisasi dari metode eliminasi

gauss pada persamaan (4.6), sama persis bukan? Jadi, cara memperoleh matrik U adalah den-

gan proses triangularisasi! Lantas, bagaimana cara memperoleh matrik L? Begini caranya: (1)

elemen-elemen diagonal matrik L diberi nilai 1 (Asal tahu saja, cara ini dikenal dengan metode

Doolittle). (2) elemen-elemen matrik L yang berada di atas elemen-elemen diagonal diberi ni-

lai 0. (3) sedangkan, elemen-elemen matrik L yang berada di bawah elemen-elemen diago-

nal diisi dengan faktor pengali yang digunakan pada proses triangularisasi eliminasi gauss.

Misalnya pada operasi (P2 − 2P1) → (P2), maka faktor pengalinya adalah 2; pada operasi

(P3 − 3P1) → (P3), maka faktor pengalinya adalah 3, dan seterusnya.

Inilah letak perbedaannya, seluruh faktor pengali tersebut sangat dibutuhkan pada metode

LU-decomposition untuk membentuk matrik L. Padahal dalam metode eliminasi gauss, seluruh

faktor pengali tersebut tidak dimanfaatkan alias dibuang begitu saja. Disisi lain, vektor b tidak

mengalami proses apapun sehingga nilainya tetap. Jadi, proses konversi matrik pada metode

LU-decomposition hanya melibatkan matrik A saja!

Setelah langkah faktorisasi matrik A dilalui, maka operasi matrik pada persamaan (4.5)

menjadi,

1 0 0 0

2 1 0 0

3 4 1 0

−1 −3 0 1

1 1 0 3

0 −1 −1 −5

0 0 3 13

0 0 0 −13

x1

x2

x3

x4

=

4

1

−3

4

(4.7)

Page 80: Iterasi Gauss

64 BAB 4. METODE LU DECOMPOSITION

Langkah berikutnya adalah menentukan vektor y, dimana Ly = b,

1 0 0 0

2 1 0 0

3 4 1 0

−1 −3 0 1

y1

y2

y3

y4

=

4

1

−3

4

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

y1 = 4,

2y1 + y2 = 1,

3y1 + 4y2 + y3 = −3,

−y1 − 3y2 + y4 = 4

maka diperoleh y1 = 4, y2 = −7, y3 = 13, y4 = −13.

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

y,

1 1 0 3

0 −1 −1 −5

0 0 3 13

0 0 0 −13

x1

x2

x3

x4

=

4

−7

13

−13

Melalui proses ini, yang pertama kali didapat solusinya adalah x4, kemudian x3, lalu diikuti

x2, dan akhirnya x1.

x4 = 1

x3 =1

3(13 − 13x4) = 0

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

x1 = 4 − 3x4 − x2 = −1

akhirnya diperoleh solusi x1 = −1, x2 = 2, x3 = 0, dan y4 = 1. Demikianlah contoh penyelesa-

ian sistem persamaan linear dengan metode LU-decomposition.

Sekali matrik A difaktorkan, maka vektor b bisa diganti nilainya sesuai dengan sistem per-

samaan linear yang lain, misalnya seluruh nilai di ruas kanan diganti menjadi

P1 : x1 + x2 + 3x4 = 8P2 : 2x1 + x2 − x3 + x4 = 7P3 : 3x1 − x2 − x3 + 2x4 = 14P4 : −x1 + 2x2 + 3x3 − x4 = -7

Page 81: Iterasi Gauss

4.2. ALGORITMA 65

Dalam operasi matrik menjadi

1 1 0 3

2 1 −1 1

3 −1 −1 2

−1 2 3 −1

x1

x2

x3

x4

=

8

7

14

−7

(4.8)

Perhatikan baik-baik! Matrik A sama persis dengan contoh sebelumnya. Perbedaannya hanya

pada vektor b. Selanjutnya, dengan metode LU-decomposition, persamaan (4.8) menjadi

1 0 0 0

2 1 0 0

3 4 1 0

−1 −3 0 1

1 1 0 3

0 −1 −1 −5

0 0 3 13

0 0 0 −13

x1

x2

x3

x4

=

8

7

14

−7

(4.9)

Silakan anda lanjutkan proses perhitungannya dengan mencari vektor y sesuai contoh yang

telah diberikan sebelumnya. Pada akhirnya akan diperoleh solusi sebagai berikut: x1 = 3,

x2 = −1, x3 = 0, dan y4 = 2.

4.2 Algoritma

Sekarang saatnya saya tunjukkan algoritma metode LU decomposition. Algoritma ini dibuat

untuk menyelesaikan sistem persamaan linear, dengan cara menfaktorkan matrik A = (aij)

berukuran n x n menjadi matrik L = (lij) dan matrik U = (uij) dengan ukuran yang sama.

Algoritma LU-decomposition yang anda lihat sekarang merupakan modifikasi dari algorit-

ma eliminasi gauss. Silakan anda periksa langkah-langkah mana saja yang telah mengalami

modifikasi! Tapi asal tahu saja bahwa ini bukan satu-satunya algoritma untuk mendapatkan

matrik LU. Sejauh yang saya tahu, ada algoritma lain untuk tujuan yang sama, dimana algo-

ritma tersebut membutuhkan matrik permutasi untuk menggeser elemen pivot yang bernilai

nol agar terhindar dari singular. Nah, sedangkan algoritma yang akan anda baca saat ini, sama

sekali tidak “berurusan” dengan matrik permutasi. Algoritma ini cuma memanfaatkan “trik”

tukar posisi yang sudah pernah dibahas di awal-awal catatan khususnya ketika membahas

konsep eliminasi gauss.

Satu lagi yang harus saya sampaikan juga adalah bahwa dalam algoritma ini, elemen-

elemen matrik L dan matrik U digabung jadi satu dan menggantikan seluruh elemen-elemen

matrik A. Perhatian! cara ini jangan diartikan sebagai perkalian matrik L dan matrik U menjadi

matrik A kembali. Cara ini dimaksudkan untuk menghemat memori komputer. Suatu aspek

yang tidak boleh diabaikan oleh para programer. Marilah kita simak algoritmanya bersama-

sama!

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

OUTPUT: solusi x1, x2, x3, ..., xn atau pesan kesalahan yang mengatakan bahwa faktorisasi

tidak mungkin dilakukan.

Page 82: Iterasi Gauss

66 BAB 4. METODE LU DECOMPOSITION

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

elemen matrik A dan vektor b, seperti berikut ini:

A =

a11 a12 . . . a1n

a21 a22 . . . a2n

......

...

an1 an2 . . . ann

b =

b1

b2

...

bn

(4.10)

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

• Langkah 3: Definisikan p sebagai integer dimana i ≤ p ≤ n. Lalu pastikan bahwa

api 6= 0. Langkah dilakukan bila ditemukan elemen diagonal yang bernilai nol (aii =

0). Ketika ada elemen diagonal yang bernilai nol, maka program harus mencari dan

memeriksa elemen-elemen yang tidak bernilai nol dalam kolom yang sama dengan

kolom tempat elemen diagonal tersebut berada. Jadi saat proses ini berlangsung,

integer i (indeks dari kolom) dibuat konstan, sementara integer p (indeks dari baris)

bergerak dari p = i sampai p = n. Bila ternyata setelah mencapai elemen paling

bawah dalam kolom tersebut, yaitu saat p = n tetap didapat nilai 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 sama dengan 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

aii

• Langkah 7: Lakukan proses triangularisasi,

(Pj − mjiPi) → (Pj)

• Langkah 8: Nilai mji disimpan ke aji,

aji = mji

• Langkah 9: Nilai b1 dicopy ke y1, lalu lakukan substitusi-maju.

y1 = b1

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

yi = bi −i−1∑

j=1

aijyj

Page 83: Iterasi Gauss

4.2. ALGORITMA 67

• Langkah 10: Lakukan proses substitusi-mundur, dimulai dengan menentukan xn,

xn =an,n+1

ann

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

xi =ai,n+1 −

∑nj=i+1 aijxj

aii

• Langkah 11: Diperoleh solusi yaitu x1, x2, ..., xn. Algoritma telah dijalankan dengan suk-

ses. STOP.

Algoritma di atas telah diimplementasi kedalam program yang ditulis dengan bahasa For-

tran. Program tersebut sudah berhasil dikompilasi dengan visual fortran (windows) dan g77

(debian-linux). Inilah programnya:

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

2 REAL MJI

3 WRITE(*,*)

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

5 WRITE (*,*)

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

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

8 READ (*,*) N

9 WRITE (*,*)

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

11 DO 50 I = 1,N

12 DO 60 J = 1,N

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

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

15 60 CONTINUE

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

17 READ (*,*) B(I)

18 WRITE (*,*)

19 50 CONTINUE

20 WRITE (*,*)

21 C MENAMPILKAN MATRIK A

22 WRITE (*,’(1X,A)’) ’MATRIK A:’

23 DO 110 I = 1,N

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

25 110 CONTINUE

26 WRITE (*,*)

27 C LANGKAH 2: MEMERIKSA ELEMEN-ELEMEN PIVOT

28 NN = N-1

29 DO 10 I=1,NN

30 C LANGKAH 3: MENDEFINISIKAN P

Page 84: Iterasi Gauss

68 BAB 4. METODE LU DECOMPOSITION

31 P = I

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

33 P = P+1

34 GOTO 100

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

36 C MENAMPILKAN PESAN TIDAK DAPAT DIFAKTORKAN

37 WRITE(*,8)

38 GOTO 400

39 END IF

40 C LANGKAH 4: PROSES TUKAR POSISI

41 IF(P.NE.I) THEN

42 DO 20 JJ=1,N

43 C = A(I,JJ)

44 A(I,JJ) = A(P,JJ)

45 A(P,JJ) = C

46 20 CONTINUE

47 END IF

48 C LANGKAH 5: PERSIAPAN PROSES TRIANGULARISASI

49 JJ = I+1

50 DO 30 J=JJ,N

51 C LANGKAH 6: TENTUKAN MJI

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

53 C LANGKAH 7: PROSES TRIANGULARISASI

54 DO 40 K=JJ,N

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

56 40 CONTINUE

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

58 A(J,I) = MJI

59 30 CONTINUE

60 10 CONTINUE

61 C MENAMPILKAN MATRIK LU

62 WRITE (*,’(1X,A)’) ’MATRIK LU:’

63 DO 120 I = 1,N

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

65 120 CONTINUE

66 WRITE (*,*)

67 C LANGKAH 9: SUBSTITUSI-MAJU

68 Y(1) = B(1)

69 DO 15 I=2,N

70 SUM = 0.0

71 DO 16 J=1,I-1

72 SUM = SUM+A(I,J)*Y(J)

73 16 CONTINUE

74 Y(I) = B(I)-SUM

75 15 CONTINUE

76 C MENAMPILKAN VEKTOR Y

77 WRITE (*,’(1X,A)’) ’VEKTOR Y:’

Page 85: Iterasi Gauss

4.2. ALGORITMA 69

78 DO 138 I = 1,N

79 WRITE (*,6) Y(I)

80 138 CONTINUE

81 WRITE (*,*)

82 C LANGKAH 10: SUBSTITUSI-MUNDUR

83 X(N) = Y(N)/A(N,N)

84 DO 24 K=1,N-1

85 I = N-K

86 JJ = I+1

87 SUM = 0.0

88 DO 26 KK=JJ,N

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

90 26 CONTINUE

91 X(I) = (Y(I)-SUM)/A(I,I)

92 24 CONTINUE

93 C LANGKAH 11: MENAMPILKAN SOLUSI DAN SELESAI

94 WRITE (*,’(1X,A)’) ’SOLUSI:’

95 DO 18 I = 1,N

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

97 18 CONTINUE

98 WRITE(*,*)

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

100 WRITE(*,*)

101 400 CONTINUE

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

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

104 END

Demikianlah, sekarang kita punya tiga buah algoritma untuk memecahkan problem sistem

persamaan linear, yaitu eliminasi gauss, invers matrik, dan lu-decomposition. Diantara ketiga-

nya, eliminasi gauss adalah algoritma yang paling simpel dan efisien. Dia hanya butuh proses

triangularisasi dan substitusi-mundur untuk mendapatkan solusi. Sedangkan dua algoritma

yang lainnya membutuhkan proses-proses tambahan untuk mendapatkan solusi yang sama.

Saya cukupkan sementara sampai disini. Insya Allah akan saya sambung lagi dilain waktu.

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

Page 86: Iterasi Gauss
Page 87: Iterasi Gauss

Bab 5

Metode Iterasi

Objektif :

⊲ Mengenalkan konsep Norm.

⊲ Mengenalkan iterasi Jacobi.

⊲ Mengenalkan iterasi Gauss-Seidel.

⊲ Mengenalkan iterasi Succesive-Over-Relaxation (SOR).

5.1 Kelebihan Vektor-kolom

Sebelum kita membahas metode iterasi untuk menyelesaikan problem sistem persamaan lin-

ear, saya ingin menyampaikan satu hal yang sangat sederhana, yaitu tentang cara merepre-

sentasikan elemen-elemen suatu vektor-kolom. Sebagaimana tertulis pada catatan-catatan se-

belumnya, biasanya suatu vektor-kolom ditulis sebagai

x =

x1

x2

...

xn

(5.1)

Dengan operasi transpose, vektor-kolom tersebut dapat dinyatakan sebagai

x =[

x1 x2 . . . xn

]t(5.2)

Contoh:

x =

3

−2

8

5

=[

3 −2 8 5]t

71

Page 88: Iterasi Gauss

72 BAB 5. METODE ITERASI

Cara penulisan seperti ini digunakan untuk menyatakan vektor-kolom pada suatu kalimat di

dalam paragraf. Alasannya supaya tidak terlalu menyita banyak ruang penulisan. Sementara,

persamaan (5.1), lebih sering digunakan pada penulisan operasi matrik. Satu hal lagi, pada

paragraf-paragraf berikutnya, saya persingkat penulisan istilah vektor-kolom menjadi vektor

saja.

5.2 Pengertian Norm

Vektor x=(x1; x2; ...; xn)t memiliki norm ℓ2 dan ℓ∞ yang didefinisikan sebagai

ℓ2 = ‖x‖2 = n

i=1

x2i 1/2 (5.3)

dan

ℓ∞ = ‖x‖∞ = max1≤i≤n

|xi| (5.4)

Contoh: x=(3;−2; 8; 5)t memiliki norm ℓ2 yaitu

ℓ2 = ‖x‖2 =√

(3)2 + (−2)2 + (8)2 + (5)2 = 10, 0995

dan norm ℓ∞ yaitu

ℓ∞ = ‖x‖∞ = max(3), (−2), (8), (5) = 8

Saya menyarankan agar kedua norm ini diingat-ingat dengan baik, karena akan banyak dis-

inggung pada catatan-catatan berikutnya.

5.2.1 Script perhitungan norm dalam Matlab

Script berikut ini merujuk pada contoh di atas, dimana vektor x hanya terdiri dari 4 elemen,

yaitu x(1, 1),x(2, 1),x(3, 1) dan x(4, 1)

1 clear all

2 clc

3 x(1,1)=3;

4 x(2,1)=-2;

5 x(3,1)=8;

6 x(4,1)=5;

7 x %menampilkan vektor x

8 %=========menghitung norm2=============

9 s=0;

10 for i=1:4

11 s=s+x(i,1)^2;

12 end

13 norm2=sqrt(s) %menampilkan hasil norm2

14 %======================================

Page 89: Iterasi Gauss

5.3. ITERASI JACOBI 73

Mohon diperhatikan untuk mengganti angka 4 pada statemen for i=1:4 dengan angka yang

lain disesuaikan dengan jumlah elemen vektor yang mau dihitung norm2-nya.

5.2.2 Perhitungan norm-selisih

Misalnya kita punya vektor bernama xlama. Lalu ada vektor lainnya bernama xbaru. Norm

selisih dari xlama dan xbaru dapat dihitung dengan bantuan script berikut ini

1 clear all

2 clc

3 xlama(1,1)=3;

4 xlama(2,1)=-2;

5 xlama(3,1)=8;

6 xlama(4,1)=5;

7 xlama %menampilkan elemen vektor xlama

8

9 xbaru(1,1)=9;

10 xbaru(2,1)=4;

11 xbaru(3,1)=6;

12 xbaru(4,1)=1;

13 xbaru %menampilkan elemen vektor xbaru

14

15 n=4; %jumlah elemen vektor

16

17 %--------menghitung norm2 selisih -------------

18 s=0;

19 for i=1:n

20 s=s+(xbaru(i,1)-xlama(i,1))^2;

21 end

22 norm2=sqrt(s)

23 %----------------------------------------------

Cara perhitungan norm-selisih seperti ini akan diterapkan pada kebanyakan metode iterasi.

Jadi tolong diingat baik-baik!!

5.3 Iterasi Jacobi

Sekarang kita mulai pembahasan tentang metode iterasi untuk menyelesaikan problem sistem

persamaan linear. Metode ini berbeda dengan metode-metode yang telah dijelaskan sebelum-

nya, dimana ia dimulai dari penentuan nilai awal (initial value) untuk setiap elemen vektor x.

Kemudian berdasarkan nilai awal tersebut, dilakukan langkah perhitungan untuk mendap-

atkan elemen-elemen vektor x yang baru.

x(baru) = Tx(lama) + c (5.5)

Page 90: Iterasi Gauss

74 BAB 5. METODE ITERASI

atau

xk = Txk−1 + c (5.6)

dimana k = 1, 2, 3, ..., n.

Mungkin anda kesulitan memahami rumus-rumus di atas, maka untuk lebih jelasnya, mari-

lah kita perhatikan contoh berikut; diketahui sistem persamaan linear Ax = b yaitu

10x1 − x2 + 2x3 = 6

−x1 + 11x2 − x3 + 3x4 = 25

2x1 − x2 + 10x3 − x4 = −11

3x2 − x3 + 8x4 = 15

yang mana solusinya adalah x=(1; 2;−1; 1)t. Silakan simpan dulu solusi ini, anggap saja kita

belum tahu. Lalu perhatikan baik-baik bagaimana metode iterasi Jacobi bisa menemukan so-

lusi tersebut dengan caranya yang khas.

Langkah pertama dan merupakan langkah terpenting dari metode iterasi Jacobi adalah dengan

mengubah cara penulisan sistem persamaan linear di atas menjadi seperti ini

x1 =1

10x2 −

2

10x3 +

6

10

x2 =1

11x1 +

1

11x3 −

3

11x4 +

25

11

x3 = − 2

10x1 +

1

10x2 +

1

10x4 −

11

10

x4 = −3

8x2 +

1

8x3 +

15

8

Kita bisa menyatakan bahwa nilai x1, x2, x3 dan x4 yang berada di ruas kiri tanda = (baca: sama

dengan) sebagai x(baru). Sementara nilai x1, x2, x3 dan x4 yang berada di ruas kanan tanda =

(baca: sama dengan) sebagai x(lama). Sehingga sistem persamaan tersebut ditulis seperti ini

x(baru)1 =

1

10x

(lama)2 − 2

10x

(lama)3 +

6

10

x(baru)2 =

1

11x

(lama)1 +

1

11x

(lama)3 − 3

11x

(lama)4 +

25

11

x(baru)3 = − 2

10x

(lama)1 +

1

10x2 +

1

10x

(lama)4 − 11

10

x(baru)4 = −3

8x

(lama)2 +

1

8x

(lama)3 +

15

8

Page 91: Iterasi Gauss

5.3. ITERASI JACOBI 75

yang secara umum dapat diformulasikan sebagaimana persamaan (5.5). Atau dapat pula dit-

ulis seperti ini

x(k)1 =

1

10x

(k−1)2 − 2

10x

(k−1)3 +

6

10

x(k)2 =

1

11x

(k−1)1 +

1

11x

(k−1)3 − 3

11x

(k−1)4 +

25

11

x(k)3 = − 2

10x

(k−1)1 +

1

10x

(k−1)2 +

1

10x

(k−1)4 − 11

10

x(k)4 = −3

8x

(k−1)2 +

1

8x

(k−1)3 +

15

8

yang secara umum dapat diformulasikan sebagaimana persamaan (5.6). Pada persamaan (5.6),

indeks k menunjukan jumlah berapa kali perhitungan iterasi telah dilakukan. Mari kita fokuskan

sejenak pada indeks k ini; Pada k = 1, maka penulisan sistem persamaan linear menjadi seperti

ini

x(1)1 =

1

10x

(0)2 − 2

10x

(0)3 +

6

10

x(1)2 =

1

11x

(0)1 +

1

11x

(0)3 − 3

11x

(0)4 +

25

11

x(1)3 = − 2

10x

(0)1 +

1

10x

(0)2 +

1

10x

(0)4 − 11

10

x(1)4 = −3

8x

(0)2 +

1

8x

(0)3 +

15

8

Jika kita tentukan nilai-nilai awal x(0) sebagai berikut x(0)1 = 0, x

(0)2 = 0, x

(0)3 = 0 dan x

(0)4 = 0.

Atau dinyatakan seperti ini x(0) = (0; 0; 0; 0)t. Maka kita akan memperoleh nilai-nilai x(1), yaitu

hasil iterasi pertama, sebagai berikut

x(1)1 =

6

10

x(1)2 =

25

11

x(1)3 = −11

10

x(1)4 =

15

8

atau x(1) = (0, 6000; 2, 2727;−1, 1000; 1, 8750)t. Setelah diperoleh nilai-nilai x(1), perhitungan

tersebut diulangi kembali guna mendapatkan hasil iterasi kedua, dimana nilai k = 2. Caranya

adalah dengan memasukan nilai-nilai x(1) = (0, 6000; 2, 2727;−1, 1000; 1, 8750)t ke ruas kanan

Page 92: Iterasi Gauss

76 BAB 5. METODE ITERASI

tanda sama-dengan,

x(2)1 =

1

10x

(1)2 − 2

10x

(1)3 +

6

10

x(2)2 =

1

11x

(1)1 +

1

11x

(1)3 − 3

11x

(1)4 +

25

11

x(2)3 = − 2

10x

(1)1 +

1

10x

(1)2 +

1

10x

(1)4 − 11

10

x(2)4 = −3

8x

(1)2 +

1

8x

(1)3 +

15

8

maka nilai-nilai x(2) yang kita dapat adalah x(2) = (1, 0473; 1, 7159;−0, 8052; 0, 8852)t. Sete-

lah diperoleh nilai-nilai x(2), perhitungan tersebut diulangi kembali guna mendapatkan hasil

iterasi ketiga, dimana nilai k = 3. Caranya adalah dengan memasukan nilai-nilai x(2) =

(1, 0473; 1, 7159;−0, 8052; 0, 8852)t ke ruas kanan kembali,

x(3)1 =

1

10x

(2)2 − 2

10x

(2)3 +

6

10

x(3)2 =

1

11x

(2)1 +

1

11x

(2)3 − 3

11x

(2)4 +

25

11

x(3)3 = − 2

10x

(2)1 +

1

10x

(2)2 +

1

10x

(2)4 − 11

10

x(3)4 = −3

8x

(2)2 +

1

8x

(2)3 +

15

8

maka kita akan memperoleh nilai-nilai x(3) = (0, 9326; 2, 0530;−1, 0493; 1, 1309)t. Lalu proses

perhitungan diulangi lagi dengan k = 4. Begitulah seterusnya. Proses ini diulangi lagi berkali-

kali untuk nilai-nilai k berikutnya. Proses yang berulang ini disebut proses iterasi. Sampai

dengan x(3) di atas, kita sudah melakukan tiga kali proses iterasi. Lantas sampai kapan proses

iterasi ini terus berlanjut? Jawabnya adalah sampai x(baru) mendekati solusi yang sesungguh-

nya, yaitu

x = (1; 2;−1; 1)t

Dengan kata lain, proses iterasi harus dihentikan bila x(baru) sudah mendekati solusi. Lalu

kriteria apa yang digunakan sehingga suatu hasil iterasi bisa dikatakan paling dekat dengan

solusi yang sebenarnya? OK, simpan dulu pertanyaan ini, sebagai gantinya marilah kita pela-

jari script Matlab untuk menghitung iterasi.

5.3.1 Script Matlab untuk menghitung iterasi

Pertama-tama kita buat script seperti ini

1 clear all

2 clc

3 %----nilai awal-----------

4 xlama(1,1)=0;

5 xlama(2,1)=0;

6 xlama(3,1)=0;

Page 93: Iterasi Gauss

5.3. ITERASI JACOBI 77

7 xlama(4,1)=0;

8 xlama

9

10 %------nilai baru-------------

11 xbaru(1,1)=(1/10)*xlama(2,1)-(2/10)*xlama(3,1)+(6/10);

12 xbaru(2,1)=(1/11)*xlama(1,1)+(1/11)*xlama(3,1)-(3/11)*xlama(4,1)+(25/11);

13 xbaru(3,1)=-(2/10)*xlama(1,1)+(1/10)*xlama(2,1)+(1/10)*xlama(4,1)-(11/10);

14 xbaru(4,1)=-(3/8)*xlama(2,1)+(1/8)*xlama(3,1)+(15/8);

15 xbaru

xbaru yang didapat tak lain adalah hasil iterasi pertama, yaitu x(1) = (0, 6000; 2, 2727;−1, 1000;

1, 8750)t. Kemudian, untuk iterasi ke-2, script di atas dimodifikasi menjadi seperti ini

1 clear all

2 clc

3

4 %----nilai awal-----------

5 xlama(1,1)=0;

6 xlama(2,1)=0;

7 xlama(3,1)=0;

8 xlama(4,1)=0;

9 xlama

10 %------nilai baru-------------

11 xbaru(1,1)=(1/10)*xlama(2,1)-(2/10)*xlama(3,1)+(6/10);

12 xbaru(2,1)=(1/11)*xlama(1,1)+(1/11)*xlama(3,1)-(3/11)*xlama(4,1)+(25/11);

13 xbaru(3,1)=-(2/10)*xlama(1,1)+(1/10)*xlama(2,1)+(1/10)*xlama(4,1)-(11/10);

14 xbaru(4,1)=-(3/8)*xlama(2,1)+(1/8)*xlama(3,1)+(15/8);

15 xbaru

16

17 xlama=xbaru; %xbaru dijadikan xlama untuk iterasi berikutnya

18

19 xbaru(1,1)=(1/10)*xlama(2,1)-(2/10)*xlama(3,1)+(6/10);

20 xbaru(2,1)=(1/11)*xlama(1,1)+(1/11)*xlama(3,1)-(3/11)*xlama(4,1)+(25/11);

21 xbaru(3,1)=-(2/10)*xlama(1,1)+(1/10)*xlama(2,1)+(1/10)*xlama(4,1)-(11/10);

22 xbaru(4,1)=-(3/8)*xlama(2,1)+(1/8)*xlama(3,1)+(15/8);

23 xbaru

Sampai disini, xbaru yang didapat adalah hasil iterasi ke-2, yaitu x(2) = (1, 0473; 1, 7159;

− 0, 8052; 0, 8852)t. Kemudian, untuk iterasi ke-3, script di atas dimodifikasi menjadi seperti ini

1 clear all

2 clc

3

4 %----nilai awal-----------

5 xlama(1,1)=0;

6 xlama(2,1)=0;

Page 94: Iterasi Gauss

78 BAB 5. METODE ITERASI

7 xlama(3,1)=0;

8 xlama(4,1)=0;

9 xlama

10 %------nilai baru-------------

11 xbaru(1,1)=(1/10)*xlama(2,1)-(2/10)*xlama(3,1)+(6/10);

12 xbaru(2,1)=(1/11)*xlama(1,1)+(1/11)*xlama(3,1)-(3/11)*xlama(4,1)+(25/11);

13 xbaru(3,1)=-(2/10)*xlama(1,1)+(1/10)*xlama(2,1)+(1/10)*xlama(4,1)-(11/10);

14 xbaru(4,1)=-(3/8)*xlama(2,1)+(1/8)*xlama(3,1)+(15/8);

15 xbaru

16

17 xlama=xbaru; %xbaru dijadikan xlama untuk iterasi berikutnya

18

19 xbaru(1,1)=(1/10)*xlama(2,1)-(2/10)*xlama(3,1)+(6/10);

20 xbaru(2,1)=(1/11)*xlama(1,1)+(1/11)*xlama(3,1)-(3/11)*xlama(4,1)+(25/11);

21 xbaru(3,1)=-(2/10)*xlama(1,1)+(1/10)*xlama(2,1)+(1/10)*xlama(4,1)-(11/10);

22 xbaru(4,1)=-(3/8)*xlama(2,1)+(1/8)*xlama(3,1)+(15/8);

23 xbaru

24

25 xlama=xbaru; %xbaru dijadikan xlama untuk iterasi berikutnya

26

27 xbaru(1,1)=(1/10)*xlama(2,1)-(2/10)*xlama(3,1)+(6/10);

28 xbaru(2,1)=(1/11)*xlama(1,1)+(1/11)*xlama(3,1)-(3/11)*xlama(4,1)+(25/11);

29 xbaru(3,1)=-(2/10)*xlama(1,1)+(1/10)*xlama(2,1)+(1/10)*xlama(4,1)-(11/10);

30 xbaru(4,1)=-(3/8)*xlama(2,1)+(1/8)*xlama(3,1)+(15/8);

31 xbaru

Sampai disini, xbaru yang didapat adalah hasil iterasi ke-3, yaitu x(3) = (0, 9326; 2, 0530;

− 1, 0493; 1, 1309)t. Kemudian, untuk iterasi ke-4, script di atas dimodifikasi dengan cara yang

sama. Tapi konsekuensinya script tersebut akan bertambah panjang. Dan itu sesuatu yang

tidak baik. Guna menghindari hal itu, script di atas perlu dioptimasi dengan pasangan for-end

sebagai berikut

1 clear all

2 clc

3

4 %----nilai awal-----------

5 xlama(1,1)=0;

6 xlama(2,1)=0;

7 xlama(3,1)=0;

8 xlama(4,1)=0;

9 xlama

10

11 for i=1:4

12 %------nilai update-------------

13 xbaru(1,1)=(1/10)*xlama(2,1)-(2/10)*xlama(3,1)+(6/10);

14 xbaru(2,1)=(1/11)*xlama(1,1)+(1/11)*xlama(3,1)-(3/11)*xlama(4,1)+(25/11);

Page 95: Iterasi Gauss

5.3. ITERASI JACOBI 79

15 xbaru(3,1)=-(2/10)*xlama(1,1)+(1/10)*xlama(2,1)+(1/10)*xlama(4,1)-(11/10);

16 xbaru(4,1)=-(3/8)*xlama(2,1)+(1/8)*xlama(3,1)+(15/8);

17 xbaru

18

19 xlama=xbaru; %xbaru dijadikan xlama untuk iterasi berikutnya

20 end

Angka 4 pada statemen for i=1:4 dapat diganti sesuai dengan jumlah iterasi maksimal yang

kita kehendaki.

1 clear all

2 clc

3

4 %----nilai awal-----------

5 xlama(1,1)=0;

6 xlama(2,1)=0;

7 xlama(3,1)=0;

8 xlama(4,1)=0;

9 xlama

10

11 itermaks=4 %jumlah iterasi maksimal

12

13 for i=1:itermaks

14 %------nilai update-------------

15 xbaru(1,1)=(1/10)*xlama(2,1)-(2/10)*xlama(3,1)+(6/10);

16 xbaru(2,1)=(1/11)*xlama(1,1)+(1/11)*xlama(3,1)-(3/11)*xlama(4,1)+(25/11);

17 xbaru(3,1)=-(2/10)*xlama(1,1)+(1/10)*xlama(2,1)+(1/10)*xlama(4,1)-(11/10);

18 xbaru(4,1)=-(3/8)*xlama(2,1)+(1/8)*xlama(3,1)+(15/8);

19 xbaru

20

21 xlama=xbaru; %xbaru dijadikan xlama untuk iterasi berikutnya

22 end

Untuk mendapatkan hasil iterasi yang ke-10, silakan nyatakan itermaks=10 pada script di atas.

Hasil dari keseluruhan iterasi dari iterasi ke-1 hingga iterasi ke-10 disajikan pada tabel berikut

Tabel 5.1: Hasil akhir elemen-elemen vektor x hingga iterasi ke-10

k 0 1 2 3 4 ... 9 10

x(k)1 0,0000 0,6000 1,0473 0,9326 1,0152 ... 0,9997 1,0001

x(k)2 0,0000 2,2727 1,7159 2,0530 1,9537 ... 2,0004 1,9998

x(k)3 0,0000 -1,1000 -0,8052 -1,0493 -0,9681 ... -1,0004 -0,9998

x(k)4 0,0000 1,8852 0,8852 1,1309 0,9739 ... 1,0006 0,9998

Kita bisa saksikan bahwa hasil iterasi ke-1, x(1) = (0, 6000; 2, 2727;−1, 1000; 1, 8852) adalah

hasil yang paling tidak mendekati solusi, x = (1; 2;−1; 1)t. Dibandingkan dengan hasil iterasi

Page 96: Iterasi Gauss

80 BAB 5. METODE ITERASI

ke-2, jelas terlihat bahwa hasil iterasi ke-2 lebih mendekati solusi. Kalau terus diurutkan, maka

hasil iterasi ke-10 merupakan hasil yang paling dekat dengan solusi.

5.3.2 Optimasi script Matlab untuk menghitung iterasi

Sekarang mari kita hitung norm-selisih dari masing-masing hasil iterasi secara berurutan. Dim-

ulai dari mencari norm-selisih antara hasil iterasi ke-1 dan ke-2. Lalu dilanjutkan dengan hasil

iterasi ke-2 dan ke-3, begitu seterusnya hingga antara hasil iterasi yang ke-9 dan ke-10. Dalam

prakteknya, kita cukup menambahkan script norm-selisih pada script yang tadi

1 clear all

2 clc

3

4 %----nilai awal-----------

5 xlama(1,1)=0;

6 xlama(2,1)=0;

7 xlama(3,1)=0;

8 xlama(4,1)=0;

9 xlama

10 n=4 %jumlah elemen vektor

11 itermaks=10 %jumlah iterasi maksimal

12

13 for i=1:itermaks

14 %------nilai update-------------

15 xbaru(1,1)=(1/10)*xlama(2,1)-(2/10)*xlama(3,1)+(6/10);

16 xbaru(2,1)=(1/11)*xlama(1,1)+(1/11)*xlama(3,1)-(3/11)*xlama(4,1)+(25/11);

17 xbaru(3,1)=-(2/10)*xlama(1,1)+(1/10)*xlama(2,1)+(1/10)*xlama(4,1)-(11/10);

18 xbaru(4,1)=-(3/8)*xlama(2,1)+(1/8)*xlama(3,1)+(15/8);

19 xbaru

20

21 %------norm selisih-------------

22 s=0;

23 for i=1:n

24 s=s+(xbaru(i,1)-xlama(i,1))^2;

25 end

26 epsilon=sqrt(s)

27 %-------------------------------

28

29 xlama=xbaru; %xbaru dijadikan xlama untuk iterasi berikutnya

30 end

Tabel dibawah ini memperlihatkan hasil norm-selisih hingga iterasi ke-10. Hasil perhitungan

norm-selisih tersebut, saya beri nama epsilon, ǫ, dimana semakin kecil nilai epsilon, ǫ, menan-

dakan hasil iterasinya semakin dekat dengan solusi. Hasil norm-selisih yang semakin kecil

pada iterasi ke-10 menunjukan bahwa hasil iterasi ke-10 adalah hasil yang paling dekat den-

gan solusi yang sebenarnya.

Page 97: Iterasi Gauss

5.3. ITERASI JACOBI 81

Tabel 5.2: Hasil perhitungan norm-selisih (dengan ℓ2) hingga iterasi ke-10

norm ℓ2

∥x(2) − x(1)∥

2

∥x(3) − x(2)∥

2

∥x(4) − x(3)∥

2...

∥x(10) − x(9)∥

2ǫ 1,2557 0,4967 0,2189 ... 0,0012

Kembali ke pertanyaan penting yang tadi yaitu kriteria apa yang digunakan sehingga su-

atu hasil iterasi bisa dikatakan paling dekat dengan solusi yang sebenarnya? Jawabnya: ter-

gantung besar kecilnya nilai ǫ. Artinya kalau nilai ǫ ditentukan sebesar 0,2 , maka iterasi akan

berhenti pada iterasi ke-4. Atau kalau nilai ǫ ditentukan sebesar 0,001 , maka proses iterasi akan

berhenti pada iterasi ke-10. Kesimpulannya, semakin kecil nilai ǫ, semakin panjang proses it-

erasinya, namun hasil akhirnya semakin akurat. Jadi nilai ǫ berperan penting untuk menghen-

tikan proses iterasi. Dalam hal ini, ǫ lebih umum dikenal dengan istilah stopping-criteria.

Di bawah ini adalah script iterasi Jacobi setelah mengalami optimasi beberapa kali,

1 clear all

2 clc

3

4 %----nilai awal-----------

5 xlama(1,1)=0;

6 xlama(2,1)=0;

7 xlama(3,1)=0;

8 xlama(4,1)=0;

9 xlama

10

11 n=4 %jumlah elemen vektor

12 itermaks=10 %jumlah iterasi maksimal

13 sc=0.001 %stopping-criteria

14

15 for i=1:itermaks

16 %------nilai update-------------

17 xbaru(1,1)=(1/10)*xlama(2,1)-(2/10)*xlama(3,1)+(6/10);

18 xbaru(2,1)=(1/11)*xlama(1,1)+(1/11)*xlama(3,1)-(3/11)*xlama(4,1)+(25/11);

19 xbaru(3,1)=-(2/10)*xlama(1,1)+(1/10)*xlama(2,1)+(1/10)*xlama(4,1)-(11/10);

20 xbaru(4,1)=-(3/8)*xlama(2,1)+(1/8)*xlama(3,1)+(15/8);

21 xbaru

22

23 %------norm selisih-------------

24 s=0;

25 for i=1:n

26 s=s+(xbaru(i,1)-xlama(i,1))^2;

27 end

28 epsilon=sqrt(s)

29

30 %------memeriksa stopping criteria, sc--------

31 if epsilon<sc

32 break

Page 98: Iterasi Gauss

82 BAB 5. METODE ITERASI

33 end

34

35 xlama=xbaru; %xbaru dijadikan xlama untuk iterasi berikutnya

36 end

Metode yang baru saja kita bahas ini disebut metode Iterasi Jacobi. Metode ini bertujuan

mencari nilai-nilai pengganti variabel-variabel x dengan perumusan

x(k)i =

∑nj=1

(

−aijx(k−1)j

)

+ bi

aii(5.7)

dimana i=1,2,3,...,n.

5.3.3 Algoritma

• Langkah 1: Tentukan k=1

• Langkah 2: Ketika (k ≤ N ) lakukan Langkah 3-6

– Langkah 3: Untuk i=1,...,n, hitunglah

xi =−∑n

j=1 (aijXOj) + bi

aii

– Langkah 4: Jika ‖x − XO‖ < ǫ, maka keluarkan OUTPUT (x1, ..., xn) lalu STOP

– Langkah 5: Tentukan k=k+1

– Langkah 6: Untuk i=1,...n, tentukan XOi = xi

• Langkah 7: OUTPUT (’Iterasi maksimum telah terlampaui’) lalu STOP

5.3.4 Program dalam Fortran

1 IMPLICIT NONE

2 DIMENSION A(10,10),B(10),X(10),XO(10)

3 REAL A,B,X,XO,EPS,NORM,S

4 INTEGER N,I,J,K,ITMAX

5 WRITE(*,*) ’==> ITERASI JACOBI UNTUK SISTEM LINEAR <==’

6 WRITE(*,*)

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

8 READ (*,*) N

9 WRITE (*,*) ’MASUKAN ELEMEN-ELEMEN MATRIK A DAN VEKTOR B’

10 DO 52 I = 1,N

11 DO 62 J = 1,N

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

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

14 62 CONTINUE

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

Page 99: Iterasi Gauss

5.3. ITERASI JACOBI 83

16 READ (*,*) B(I)

17 WRITE (*,*)

18 52 CONTINUE

19 WRITE (*,’(1X,A)’) ’JUMLAH ITERASI MAKSIMUM ? ’

20 READ (*,*) ITMAX

21 WRITE (*,’(1X,A)’) ’NILAI EPSILON ATAU TOLERANSI ? ’

22 READ (*,*) EPS

23 WRITE (*,*) ’MASUKAN NILAI AWAL UNTUK XO’

24 DO 72 I = 1,N

25 WRITE (*,’(1X,A,I2,A)’) ’XO(’,I,’) ? ’

26 READ (*,*) XO(I)

27 72 CONTINUE

28 WRITE (*,*)

29 C MENAMPILKAN MATRIK A

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

31 DO 110 I = 1,N

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

33 110 CONTINUE

34 WRITE (*,*)

35 C MENAMPILKAN VEKTOR B

36 WRITE (*,’(1X,A)’) ’VEKTOR B:’

37 DO 111 I = 1,N

38 WRITE (*,6) B(I)

39 111 CONTINUE

40 WRITE (*,*)

41 C LANGKAH 1

42 K = 1

43 C LANGKAH 2

44 100 IF(K.GT.ITMAX) GOTO 200

45 C LANGKAH 3

46 NORM = 0.0

47 DO 10 I = 1,N

48 S = 0.0

49 DO 20 J=1,N

50 S = S-A(I,J)*XO(J)

51 20 CONTINUE

52 S = (S+B(I))/A(I,I)

53 IF (ABS(S).GT.NORM) NORM=ABS(S)

54 X(I) = XO(I)+S

55 10 CONTINUE

56 WRITE(*,’(1X,A,I3)’) ’ITERASI KE-’, K

57 WRITE(*,’(1X,A,F14.8)’) ’NORM = ’, NORM

58 WRITE(*,’(1X,A,I3,A,F14.8)’) (’X(’,I,’) = ’, X(I),I=1,N)

59 WRITE(*,*)

60 C LANGKAH 4

61 IF(NORM.LE.EPS) THEN

62 WRITE(*,7) K,NORM

Page 100: Iterasi Gauss

84 BAB 5. METODE ITERASI

63 GOTO 400

64 END IF

65 C LANGKAH 5

66 K = K+1

67 C LANGKAH 6

68 DO 30 I=1,N

69 XO(I) = X(I)

70 30 CONTINUE

71 GOTO 100

72 C LANGKAH 7

73 200 CONTINUE

74 WRITE(*,9)

75 400 STOP

76

77 5 FORMAT(1X,I3)

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

79 7 FORMAT(1X,’KONVERGEN PADA ITERASI YANG KE- ’,I3,

80 *’ , NORM= ’,F14.8)

81 9 FORMAT(1X,’MELEBIHI BATAS MAKSIMUM ITERASI’)

82 END

5.4 Iterasi Gauss-Seidel

Metode Iterasi Gauss-Seidel hampir sama dengan metode Iterasi Jacobi. Perbedaannya hanya

terletak pada penggunaan nilai elemen vektor xbaru yang langsung digunakan pada per-

samaan dibawahnya. Untuk lebih jelasnya, perhatikan sistem persamaan linear berikut, yang

diturunkan dari contoh terdahulu

xbaru1 =

1

10xlama

2 − 2

10xlama

3 +6

10

xbaru2 =

1

11xbaru

1 +1

11xlama

3 − 3

11xlama

4 +25

11

xbaru3 = − 2

10xbaru

1 +1

10xbaru

2 +1

10xlama

4 − 11

10

xbaru4 = −3

8xbaru

2 +1

8xbaru

3 +15

8

Pada baris pertama, xbaru1 dihitung berdasarkan xlama

2 dan xlama3 . Kemudian xbaru

1 tersebut

langsung dipakai pada baris kedua untuk menghitung xbaru2 . Selanjutnya xbaru

1 dan xbaru2 di-

gunakan pada baris ketiga untuk mendapatkan xbaru3 . Begitu seterusnya hingga xbaru

4 pun

diperoleh pada baris keempat. Sistem persamaan tersebut dapat dinyatakan dalam indeks k

Page 101: Iterasi Gauss

5.4. ITERASI GAUSS-SEIDEL 85

seperti dibawah ini dimana k adalah jumlah iterasi.

x(k)1 =

1

10x

(k−1)2 − 2

10x

(k−1)3 +

6

10

x(k)2 =

1

11x

(k)1 +

1

11x

(k−1)3 − 3

11x

(k−1)4 +

25

11

x(k)3 = − 2

10x

(k)1 +

1

10x

(k)2 +

1

10x

(k−1)4 − 11

10

x(k)4 = −3

8x

(k)2 +

1

8x

(k)3 +

15

8

Misalnya kita tentukan nilai-nilai awal x(0) sebagai berikut x(0)1 = 0, x

(0)2 = 0, x

(0)3 = 0 dan

x(0)4 = 0. Atau dinyatakan seperti ini x(0) = (0; 0; 0; 0)t. Maka pada k = 1 kita akan memperoleh

nilai-nilai x(1) sebagai berikut

x(1)1 = 0, 6000

x(1)2 = 2, 3272

x(1)3 = −0, 9873

x(1)4 = 0, 8789

Lalu proses perhitungan diulangi lagi dengan k = 2. Begitu seterusnya proses ini diulang-

ulang lagi untuk nilai-nilai k berikutnya sampai x(k) mendekati solusi yang sesungguhnya,

yaitu

x = (1; 2;−1; 1)t

Marilah kita amati hasil seluruh iterasi. Tabel di bawah ini menampilkan hasil perhitungan

hingga iterasi yang ke-5. Kita bisa saksikan bahwa dibandingkan dengan iterasi Jacobi, prob-

lem sistem persamaan linear yang sama, bisa diselesaikan oleh metode iterasi Gauss-Seidel

hanya dalam 5 kali iterasi. Dari kasus ini, bisa kita simpulkan bahwa iterasi Gauss-Seidel bek-

Tabel 5.3: Hasil Iterasi Gauss-Seidelk 0 1 2 3 4 5

x(k)1 0,0000 0,6000 1,030 1,0065 1,0009 1,0001

x(k)2 0,0000 2,3272 2,037 2,0036 2,0003 2,0000

x(k)3 0,0000 -0,9873 -1,014 -1,0025 -1,0003 -1,0000

x(k)4 0,0000 0,8789 0,9844 0,9983 0,9999 1,0000

erja lebih efektif dibandingkan iterasi Jacobi. Ya.., memang secara umum demikian, akan tetapi

ternyata ditemukan kondisi yang sebaliknya pada kasus-kasus yang lain.

5.4.1 Script iterasi Gauss-Seidel

Secara umum, script iterasi Gauss-Seidel yang saya tuliskan disini hampir sama dengan it-

erasi Jacobi. Perbedaan kecil-nya terletak pada bagian nilai update, dimana elemen xbaru hasil

perhitungan dilibatkan langsung untuk menghitung elemen xbaru selanjutnya.

Page 102: Iterasi Gauss

86 BAB 5. METODE ITERASI

1 clear all

2 clc

3

4 %----nilai awal-----------

5 xlama(1,1)=0;

6 xlama(2,1)=0;

7 xlama(3,1)=0;

8 xlama(4,1)=0;

9 xlama

10

11 n=4 %jumlah elemen vektor

12 itermaks=10 %jumlah iterasi maksimal

13 sc=0.001 %stopping-criteria

14

15 for i=1:itermaks

16 %------nilai update-------------

17 xbaru(1,1)=(1/10)*xlama(2,1)-(2/10)*xlama(3,1)+(6/10);

18 xbaru(2,1)=(1/11)*xbaru(1,1)+(1/11)*xlama(3,1)-(3/11)*xlama(4,1)+(25/11);

19 xbaru(3,1)=-(2/10)*xbaru(1,1)+(1/10)*xbaru(2,1)+(1/10)*xlama(4,1)-(11/10);

20 xbaru(4,1)=-(3/8)*xbaru(2,1)+(1/8)*xbaru(3,1)+(15/8);

21 xbaru

22

23 %------norm selisih-------------

24 s=0;

25 for i=1:n

26 s=s+(xbaru(i,1)-xlama(i,1))^2;

27 end

28 epsilon=sqrt(s)

29

30 %------memeriksa stopping criteria, sc--------

31 if epsilon<sc

32 break

33 end

34

35 xlama=xbaru; %xbaru dijadikan xlama untuk iterasi berikutnya

36 end

Perumusan metode Iterasi Gauss-Seidel dapat dinyatakan sebagai berikut:

x(k)i =

−∑i−1j=1

(

aijx(k)j

)

− ∑nj=i+1

(

aijx(k−1)j

)

+ bi

aii(5.8)

dimana i=1,2,3,...,n.

Page 103: Iterasi Gauss

5.4. ITERASI GAUSS-SEIDEL 87

5.4.2 Algoritma

• Langkah 1: Tentukan k=1

• Langkah 2: Ketika (k ≤ N ) lakukan Langkah 3-6

– Langkah 3: Untuk i=1,...,n, hitunglah

xi =−∑i−1

j=1 aijxj −∑n

j=i+1 aijXOj + bi

aii

– Langkah 4: Jika ‖x − XO‖ < ǫ, maka keluarkan OUTPUT (x1, ..., xn) lalu STOP

– Langkah 5: Tentukan k=k+1

– Langkah 6: Untuk i=1,...n, tentukan XOi = xi

• Langkah 7: OUTPUT (’Iterasi maksimum telah terlampaui’) lalu STOP

5.4.3 Script iterasi Gauss-Seidel dalam Fortran

1 IMPLICIT NONE

2 DIMENSION A(10,10),B(10),X(10),XO(10)

3 REAL A,B,X,XO,EPS,NORM,S1,S2

4 INTEGER N,I,J,K,ITMAX

5 WRITE(*,*)

6 WRITE(*,*) ’==> ITERASI GAUSS-SEIDEL UNTUK SISTEM LINEAR <==’

7 WRITE(*,*)

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

9 READ (*,*) N

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

11 DO 52 I = 1,N

12 DO 62 J = 1,N

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

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

15 62 CONTINUE

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

17 READ (*,*) B(I)

18 WRITE (*,*)

19 52 CONTINUE

20 WRITE (*,’(1X,A)’) ’JUMLAH ITERASI MAKSIMUM ? ’

21 READ (*,*) ITMAX

22 WRITE (*,’(1X,A)’) ’NILAI EPSILON ATAU TOLERANSI ? ’

23 READ (*,*) EPS

24 WRITE (*,*) ’MASUKAN NILAI AWAL UNTUK XO’

25 DO 72 I = 1,N

26 WRITE (*,’(1X,A,I2,A)’) ’XO(’,I,’) ? ’

27 READ (*,*) XO(I)

28 72 CONTINUE

Page 104: Iterasi Gauss

88 BAB 5. METODE ITERASI

29 WRITE (*,*)

30 C MENAMPILKAN MATRIK A

31 WRITE (*,’(1X,A)’) ’MATRIK A:’

32 DO 110 I = 1,N

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

34 110 CONTINUE

35 WRITE (*,*)

36 C MENAMPILKAN VEKTOR B

37 WRITE (*,’(1X,A)’) ’VEKTOR B:’

38 DO 111 I = 1,N

39 WRITE (*,6) B(I)

40 111 CONTINUE

41 WRITE (*,*)

42 C LANGKAH 1

43 K = 1

44 C LANGKAH 2

45 100 IF(K.GT.ITMAX) GOTO 200

46 C LANGKAH 3

47 DO 10 I = 1,N

48 S1 = 0.0

49 DO 20 J=I+1,N

50 S1 = S1-A(I,J)*XO(J)

51 20 CONTINUE

52 S2 = 0.0

53 DO 23 J=1,I-1

54 S2 = S2-A(I,J)*X(J)

55 23 CONTINUE

56 X(I) = (S2+S1+B(I))/A(I,I)

57 10 CONTINUE

58 C SAYA PILIH NORM-2. ANDA BOLEH PAKAI NORM YANG LAIN!

59 NORM = 0.0

60 DO 40 I=1,N

61 NORM = NORM + (X(I)-XO(I))*(X(I)-XO(I))

62 40 CONTINUE

63 NORM = SQRT(NORM)

64 WRITE(*,’(1X,A,I3)’) ’ITERASI KE-’, K

65 WRITE(*,’(1X,A,F14.8)’) ’NORM-2 = ’, NORM

66 WRITE(*,’(1X,A,I3,A,F14.8)’) (’X(’,I,’) = ’, X(I),I=1,N)

67 WRITE(*,*)

68 C LANGKAH 4

69 IF(NORM.LE.EPS) THEN

70 WRITE(*,7) K,NORM

71 GOTO 400

72 END IF

73 C LANGKAH 5

74 K = K+1

75 C LANGKAH 6

Page 105: Iterasi Gauss

5.5. ITERASI DENGAN RELAKSASI 89

76 DO 30 I=1,N

77 XO(I) = X(I)

78 30 CONTINUE

79 GOTO 100

80 C LANGKAH 7

81 200 CONTINUE

82 WRITE(*,9)

83 400 STOP

84

85 5 FORMAT(1X,I3)

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

87 7 FORMAT(1X,’KONVERGEN PADA ITERASI YANG KE- ’,I3,

88 *’ , NORM= ’,F14.8)

89 9 FORMAT(1X,’MELEBIHI BATAS MAKSIMUM ITERASI’)

90 END

5.5 Iterasi dengan Relaksasi

Metode Iterasi Relaksasi (Relaxation method ) dinyatakan dengan rumus berikut:

x(k)i = (1 − ω) x

(k−1)i +

ω

aii

bi −i−1∑

j=1

aijx(k)j −

n∑

j=i+1

aijx(k−1)j

(5.9)

dimana i=1,2,3,...,n.

Untuk lebih jelasnya, marilah kita perhatikan contoh berikut, diketahui sistem persamaan

linear Ax = b yaitu

4x1 + 3x2+ = 24

3x1 + 4x2 − x3 = 30

−x2 + 4x3 = −24

memiliki solusi (3, 4,−5)t. Metode Gauss-Seidel dan Relaksasi dengan ω = 1, 25 akan digu-

nakan untuk menyelesaikan sistem persamaan linear di atas dengan x(0) = (1, 1, 1)t. Untuk

setiap nilai k = 1, 2, 3, ..., persamaan Gauss-Seidelnya adalah

x(k)1 = −0, 75x

(k−1)2 + 6

x(k)2 = −0, 75x

(k)1 + 0, 25x

(k−1)3 + 7, 5

x(k)3 = 0, 25x

(k)2 − 6

Page 106: Iterasi Gauss

90 BAB 5. METODE ITERASI

Sedangkan persamaan untuk metode Relaksasi dengan ω = 1, 25 adalah

x(k)1 = −0, 25x

(k−1)1 − 0, 9375x

(k−1)2 + 7, 5

x(k)2 = −0, 9375x

(k)1 − 0, 25x

(k−1)2 + 0, 3125x

(k−1)3 + 9, 375

x(k)3 = 0, 3125x

(k)2 − 0, 25x

(k−1)3 − 7, 5

Tabel berikut ini menampilkan perhitungan dari masing-masing metode hingga iterasi ke-7.

Tabel 5.4: Hasil perhitungan iterasi Gauss-Seidel

k 0 1 2 3 4 5 6 7

x(k)1 1 5,2500 3,1406 3,0879 3,0549 3,0343 3,0215 3,0134

x(k)2 1 3,8125 3,8828 3,9267 3,9542 3,9714 3,9821 3,9888

x(k)3 1 -5,0468 -5,0293 -5,0183 -5,0114 -5,0072 -5,0044 -5,0028

Tabel 5.5: Hasil perhitungan iterasi Relaksasi dengan ω = 1, 25

k 0 1 2 3 4 5 6 7

x(k)1 1 6,3125 2,6223 3,1333 2,9570 3,0037 2,9963 3,0000

x(k)2 1 3,5195 3,9585 4,0102 4,0075 4,0029 4,0009 4,0002

x(k)3 1 -6,6501 -4,6004 -5,0967 -4,9735 -5,0057 -4,9983 -5,0003

Dari kasus ini, bisa kita simpulkan bahwa iterasi Relaksasi memerlukan proses iterasi yang

lebih singkat dibandingkan iterasi Gauss-Seidel. Jadi, pada kasus ini (dan juga secara umum),

Relaksasi lebih efektif dibandingkan Gauss-Seidel. Pertanyaannya sekarang, bagaimana menen-

tukan nilai ω optimal?

Metode Relaksasi dengan pilihan nilai ω yang berkisar antara 0 dan 1 disebut metode under-

relaxation, dimana metode ini berguna agar sistem persamaan linear bisa mencapai kondisi

konvergen walaupun sistem tersebut sulit mencapai kondisi konvergen dengan metode Gauss-

Seidel. Sementara bila ω nilainya lebih besar dari angka 1, maka disebut metode successive

over-relaxation (SOR), yang mana metode ini berguna untuk mengakselerasi atau mempercepat

kondisi konvergen dibandingkan dengan Gauss-Seidel. Metode SOR ini juga sangat berguna

untuk menyelesaikan sistem persamaan linear yang muncul dari persamaan diferensial-parsial

tertentu.

5.5.1 Algoritma Iterasi Relaksasi

• Langkah 1: Tentukan k=1

• Langkah 2: Ketika (k ≤ N ) lakukan Langkah 3-6

– Langkah 3: Untuk i=1,...,n, hitunglah

xi = (1 − ω) XOi +ω

(

−∑i−1j=1 aijxj −

∑nj=i+1 aijXOj + bi

)

aii

Page 107: Iterasi Gauss

5.5. ITERASI DENGAN RELAKSASI 91

– Langkah 4: Jika ‖x − XO‖ < ǫ, maka keluarkan OUTPUT (x1, ..., xn) lalu STOP

– Langkah 5: Tentukan k=k+1

– Langkah 6: Untuk i=1,...n, tentukan XOi = xi

• Langkah 7: OUTPUT (’Iterasi maksimum telah terlampaui’) lalu STOP

Demikianlah catatan singkat dari saya tentang metode iterasi untuk menyelesaikan prob-

lem sistem persamaan linear. Saya cukupkan sementara sampai disini. Insya Allah akan saya

sambung lagi dilain waktu. Kalau ada yang mau didiskusikan, silakan hubungi saya melalui

email: [email protected].

Page 108: Iterasi Gauss
Page 109: Iterasi Gauss

Bab 6

Interpolasi

Objektif :

⊲ Mengenalkan Interpolasi Lagrange

⊲ Mengenalkan Interpolasi Spline-cubic

6.1 Interpolasi Lagrange

Interpolasi Lagrange diterapkan untuk mendapatkan fungsi polinomial P (x) berderajat ter-

tentu yang melewati sejumlah titik data. Misalnya, kita ingin mendapatkan fungsi polinomial

berderajat satu yang melewati dua buah titik yaitu (x0, y0) dan (x1, y1). Langkah pertama yang

kita lakukan adalah mendefinisikan fungsi berikut

L0(x) =x − x1

x0 − x1

dan

L1(x) =x − x0

x1 − x0

kemudian kita definisikan fungsi polinomial sebagai berikut

P (x) = L0(x)y0 + L1(x)y1

Jika semua persamaan diatas kita gabungkan, maka akan didapat

P (x) = L0(x)y0 + L1(x)y1

P (x) =x − x1

x0 − x1y0 +

x − x0

x1 − x0y1

dan ketika x = x0

P (x0) =x0 − x1

x0 − x1y0 +

x0 − x0

x1 − x0y1 = y0

93

Page 110: Iterasi Gauss

94 BAB 6. INTERPOLASI

dan pada saat x = x1

P (x1) =x1 − x1

x0 − x1y0 +

x1 − x0

x1 − x0y1 = y1

dari contoh ini, kira-kira apa kesimpulan sementara anda? Ya.. kita bisa sepakat bahwa fungsi

polinomial

P (x) =x − x1

x0 − x1y0 +

x − x0

x1 − x0y1 (6.1)

benar-benar melewati titik (x0, y0) dan (x1, y1).

Sekarang mari kita perhatikan lagi contoh lainnya. Misalnya ada tiga titik yaitu (x0, y0), (x1, y1)

dan (x2, y2). Tentukanlah fungsi polinomial yang melewati ketiganya! Dengan pola yang sama

kita bisa awali langkah pertama yaitu mendefinisikan

L0(x) =(x − x1)(x − x2)

(x0 − x1)(x0 − x2)

lalu

L1(x) =(x − x0)(x − x2)

(x1 − x0)(x1 − x2)

dan

L2(x) =(x − x0)(x − x1)

(x2 − x0)(x2 − x1)

kemudian kita definisikan fungsi polinomial sebagai berikut

P (x) = L0(x)y0 + L1(x)y1 + L2(x)y2

Jika semua persamaan diatas kita gabungkan, maka akan didapat fungsi polinomial

P (x) =(x − x1)(x − x2)

(x0 − x1)(x0 − x2)y0 +

(x − x0)(x − x2)

(x1 − x0)(x1 − x2)y1 +

(x − x0)(x − x1)

(x2 − x0)(x2 − x1)y2

Kita uji sebentar. Ketika x = x0

P (x0) =(x0 − x1)(x0 − x2)

(x0 − x1)(x0 − x2)y0 +

(x0 − x0)(x0 − x2)

(x1 − x0)(x1 − x2)y1 +

(x0 − x0)(x0 − x1)

(x2 − x0)(x2 − x1)y2 = y0

pada saat x = x1

P (x1) =(x1 − x1)(x1 − x2)

(x0 − x1)(x0 − x2)y0 +

(x1 − x0)(x1 − x2)

(x1 − x0)(x1 − x2)y1 +

(x1 − x0)(x1 − x1)

(x2 − x0)(x2 − x1)y2 = y1

pada saat x = x2

P (x2) =(x2 − x1)(x2 − x2)

(x0 − x1)(x0 − x2)y0 +

(x2 − x0)(x2 − x2)

(x1 − x0)(x1 − x2)y1 +

(x2 − x0)(x2 − x1)

(x2 − x0)(x2 − x1)y2 = y2

Page 111: Iterasi Gauss

6.2. INTERPOLASI CUBIC SPLINE 95

Terbukti bahwa fungsi polonomial

P (x) =(x − x1)(x − x2)

(x0 − x1)(x0 − x2)y0 +

(x − x0)(x − x2)

(x1 − x0)(x1 − x2)y1 +

(x − x0)(x − x1)

(x2 − x0)(x2 − x1)y2 (6.2)

melewati ketiga titik tadi.

Kalau kita bandingkan antara persamaan (6.1) dan persamaan (6.2), terlihat bahwa derajat per-

samaan (6.2) lebih tinggi dibandingkan dengan derajat persamaan (6.1). Hal ini terlihat dari x2

pada persamaan (6.2) sementara pada persamaan (6.1) hanya ada x. persamaan (6.2) disebut

funsi polinomial berderajat 2, sedangkan persamaan (6.1) disebut fungsi polinomial berderajat

1.

6.2 Interpolasi Cubic Spline

Gambar 6.1: Fungsi f(x) dengan sejumlah titik data

Gambar 6.2: Pendekatan dengan polinomial cubic spline

Page 112: Iterasi Gauss

96 BAB 6. INTERPOLASI

Diketahui suatu fungsi f(x) (Figure 6.1) yang dibatasi oleh interval a dan b, dan memiliki

sejumlah titik data a = x0 < x1 < ... < xn = b. Interpolasi cubic spline S(x) adalah sebuah po-

tongan fungsi polinomial kecil-kecil (Figure 6.2) berderajat tiga (cubic) yang menghubungkan

dua titik data yang bersebelahan dengan ketentuan sebagai berikut:

1. Sj(x) adalah potongan fungsi yang berada pada sub-interval dari xj hingga xj+1 untuk

nilai j = 0, 1, ..., n − 1;

2. S(xj) = f(xj), artinya pada setiap titik data (xj), nilai f(xj) bersesuaian dengan S(xj)

dimana j = 0, 1, ..., n;

3. Sj+1(xj+1) = Sj(xj+1). Perhatikan titik xj+1 pada Figure 6.2. Ya.. tentu saja jika fungsi

itu kontinyu, maka titik xj+1 menjadi titik sambungan antara Sj dan Sj+1.

4. S′j+1(xj+1) = S′

j(xj+1), artinya kontinyuitas menuntut turunan pertama dari Sj dan Sj+1

pada titik xj+1 harus bersesuaian.

5. S′′j+1(xj+1) = S′′

j (xj+1), artinya kontinyuitas menuntut turunan kedua dari Sj dan Sj+1

pada titik xj+1 harus bersesuaian juga.

6. Salah satu syarat batas diantara 2 syarat batas x0 dan xn berikut ini mesti terpenuhi:

• S′′(x0) = S′′(xn) = 0 ini disebut natural boundary

• S′(x0) = f ′(x0) dan S′(xn) = f ′(xn) ini disebut clamped boundary

Polinomial cubic spline S (polinomial pangkat 3) untuk suatu fungsi f berdasarkan ketentuan

di atas adalah

Sj(x) = aj + bj(x − xj) + cj(x − xj)2 + dj(x − xj)

3 (6.3)

dimana j = 0, 1, ..., n − 1. Maka ketika x = xj

Sj(xj) = aj + bj(xj − xj) + cj(xj − xj)2 + dj(xj − xj)

3

Sj(xj) = aj = f(xj)

Itu artinya, aj selalu jadi pasangan titik data dari xj . Dengan pola ini maka pasangan titik data

xj+1 adalah aj+1, konsekuensinya S(xj+1) = aj+1. Berdasarkan ketentuan (3), yaitu ketika

x = xj+1 dimasukan ke persamaan (12.7)

aj+1 = Sj+1(xj+1) = Sj(xj+1) = aj + bj(xj+1 − xj) + cj(xj+1 − xj)2 + dj(xj+1 − xj)

3

dimana j = 0, 1, ..., n − 2. Sekarang, kita nyatakan hj = xj+1 − xj , sehingga

aj+1 = aj + bjhj + cjh2j + djh

3j (6.4)

Kemudian, turunan pertama dari persamaan (12.7) adalah

S′j(x) = bj + 2cj(x − xj) + 3dj(x − xj)

2

Page 113: Iterasi Gauss

6.2. INTERPOLASI CUBIC SPLINE 97

ketika x = xj ,

S′j(xj) = bj + 2cj(xj − xj) + 3dj(xj − xj)

2 = bj

dan ketika x = xj+1,

bj+1 = S′j(xj+1) = bj + 2cj(xj+1 − xj) + 3dj(xj+1 − xj)

2

Ini dapat dinyatakan sebagai

bj+1 = bj + 2cj(xj+1 − xj) + 3dj(xj+1 − xj)2

dan dinyatakan dalam hj

bj+1 = bj + 2cjhj + 3djh2j (6.5)

Berikutnya, kita hitung turunan kedua dari persamaan (12.7)

S′′j (x) = 2cj + 6dj(x − xj) (6.6)

tapi dengan ketentuan tambahan yaitu S′′(x)/2, sehingga persamaan ini dimodifikasi menjadi

S′′j (x) = cj + 3dj(x − xj)

dengan cara yang sama, ketika x = xj

S′′j (xj) = cj + 3dj(xj − xj) = cj

dan ketika x = xj+1

cj+1 = S′′j (xj+1) = cj + 3dj(xj+1 − xj)

cj+1 = cj + 3djhj (6.7)

dan dj bisa dinyatakan

dj =1

3hj(cj+1 − cj)

dari sini, persamaan (6.4) dapat ditulis kembali

aj+1 = aj + bjhj + cjh2j + djh

3j

= aj + bjhj + cjh2j +

h2j

3(cj+1 − cj)

= aj + bjhj +h2

j

3(2cj + cj+1) (6.8)

Page 114: Iterasi Gauss

98 BAB 6. INTERPOLASI

sementara persamaan (6.5) menjadi

bj+1 = bj + 2cjhj + 3djh2j

= bj + 2cjhj + hj(cj+1 − cj)

= bj + hj(cj + cj+1) (6.9)

Sampai sini masih bisa diikuti, bukan? Selanjutnya, kita coba mendapatkan bj dari persamaan

(6.8)

bj =1

hj(aj+1 − aj) −

hj

3(2cj + cj+1) (6.10)

dan untuk bj−1

bj−1 =1

hj−1(aj − aj−1) −

hj−1

3(2cj−1 + cj) (6.11)

Langkah berikutnya adalah mensubtitusikan persamaan (6.10) dan persamaan (6.11) kedalam

persamaan (6.9),

hj−1cj−1 + 2(hj−1 + hj)cj + hjcj+1 =3

hj(aj+1 − aj) −

3

hj−1(aj − aj−1) (6.12)

dimana j = 1, 2, ..., n − 1. Dalam sistem persamaan ini, nilai hjn−1j=0 dan nilai ajn

j=0 su-

dah diketahui, sementara nilai cjnj=0 belum diketahui dan memang nilai inilah yang akan

dihitung dari persamaan ini.

Sekarang coba perhatikan ketentuan nomor (6), ketika S′′(x0) = S′′(xn) = 0, berapakah nilai c0

dan cn? Nah, kita bisa evaluasi persamaan (6.6)

S′′(x0) = 2c0 + 6d0(x0 − x0) = 0

jelas sekali c0 harus berharga nol. Demikian halnya dengan cn harganya harus nol. Jadi untuk

natural boundary, nilai c0 = cn = 0.

Persamaan (6.12) dapat dihitung dengan operasi matrik Ax = b dimana

A =

1 0 0 . . . . . . . . . 0

h0 2(h0 + h1) h1 0 . . . . . . 0

0 h1 2(h1 + h2) h2 0 . . . 0

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . hn−2 2(hn−2 + hn−1) hn−1

0 . . . . . . . . . 0 0 1

x =

c0

c1

...

cn

Page 115: Iterasi Gauss

6.2. INTERPOLASI CUBIC SPLINE 99

b =

03h1

(a2 − a1) − 3h0

(a1 − a0)...

3hn−1

(an − an−1) − 3hn−2

(an−1 − an−2)

0

Sekarang kita beralih ke clamped boundary dimana S′(a) = f ′(a) dan S′(b) = f ′(b). Nah, kita

bisa evaluasi persamaan (6.10) dengan j = 0, dimana f ′(a) = S′(a) = S′(x0) = b0, sehingga

f ′(a) =1

h0(a1 − a0) −

h0

3(2c0 + c1)

konsekuensinya,

2h0c0 + h0c1 =3

h0(a1 − a0) − 3f ′(a) (6.13)

Sementara pada xn = bn dengan persamaan (6.9)

f ′(b) = bn = bn−1 + hn−1(cn−1 + cn)

sedangkan bn−1 bisa didapat dari persamaan (6.11) dengan j = n − 1

bn−1 =1

hn−1(an − an−1) −

hn−1

3(2cn−1j + cn)

Jadi

f ′(b) =1

hn−1(an − an−1) −

hn−1

3(2cn−1j + cn) + hn−1(cn−1 + cn)

=1

hn−1(an − an−1 +

hn−1

3(cn−1j + 2cn)

dan akhirnya kita peroleh

hn−1cn−1 + 2hn−1Cn = 3f ′(b) − 3

hn−1(an − an−1) (6.14)

Persamaan (6.13) dan persamaan (6.14) ditambah persamaan (6.12 membentuk operasi matrik

Ax = b dimana

A =

2h0 h0 0 . . . . . . . . . 0

h0 2(h0 + h1) h1 0 . . . . . . 0

0 h1 2(h1 + h2) h2 0 . . . 0

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . hn−2 2(hn−2 + hn−1) hn−1

0 . . . . . . . . . 0 hn−1 2hn−1

Page 116: Iterasi Gauss

100 BAB 6. INTERPOLASI

Gambar 6.3: Profil suatu object

x =

c0

c1

...

cn

b =

3h0

(a1 − a0) − 3f ′(a)3h1

(a2 − a1) − 3h0

(a1 − a0)...

3hn−1

(an − an−1) − 3hn−2

(an−1 − an−2)

3f ′(b) − 3hn−1

(an − an−1)

Page 117: Iterasi Gauss

6.2. INTERPOLASI CUBIC SPLINE 101

Gambar 6.4: Sampling titik data

Gambar 6.5: Hasil interpolasi cubic spline

Page 118: Iterasi Gauss

j xj aj bj cj dj

0 0,9 1,3 5,4 0,00 -0,251 1,3 1,5 0,42 -0,30 0,952 1,9 1,85 1,09 1,41 -2,963 2,1 2,1 1,29 -0,37 -0,454 2,6 2,6 0,59 -1,04 0,455 3,0 2,7 -0,02 -0,50 0,176 3,9 2,4 -0,5 -0,03 0,087 4,4 2,15 -0,48 0,08 1,318 4,7 2,05 -0,07 1,27 -1,589 5,0 2,1 0,26 -0,16 0,0410 6,0 2,25 0,08 -0,03 0,0011 7,0 2,3 0,01 -0,04 -0,0212 8,0 2,25 -0,14 -0,11 0,0213 9,2 1,95 -0,34 -0,05 -0,0114 10,5 1,4 -0,53 -0,1 -0,0215 11,3 0,9 -0,73 -0,15 1,2116 11,6 0,7 -0,49 0,94 -0,8417 12,0 0,6 -0,14 -0,06 0,0418 12,6 0,5 -0,18 0 -0,4519 13,0 0,4 -0,39 -0,54 0,6020 13,3 0,25

Gambar 6.6: Hasil interpolasi lagrange

Page 119: Iterasi Gauss

Bab 7

Diferensial Numerik

Objektif :

⊲ Mengenalkan metode Euler.

⊲ Mengenalkan metode Runge Kutta orde 4.

⊲ Mengenalkan metode Finite Difference.

7.1 Metode Euler

Suatu persamaan diferensial dapat dinyatakan sebagai berikut:

dy

dt= f(t, y), a ≤ t ≤ b, y(a) = α (7.1)

Pada kenyataannya, melalui pendekatan numerik, kita tidak akan memperoleh solusi fungsi

yang kontinyu; yang mungkin kita dapat adalah solusi diskrit dalam bentuk mesh points di

dalam interval [a,b]. Setelah diperoleh solusi numerik pada suatu point, maka point-point

yang lainpun bisa dicari dengan cara interpolasi.

Tahap awal solusi pendekatan numerik adalah dengan menentukan point-point dalam jarak

yang sama di dalam interval [a,b], yaitu dengan menerapkan

ti = a + ih, i = 0, 1, 2, ..., N (7.2)

Jarak antar point dirumuskan sebagai

h =b − a

N(7.3)

ini disebut step size.

Metode Euler diturunkan dari deret Taylor. Misalnya, fungsi y(t) adalah fungsi yang kontinyu

103

Page 120: Iterasi Gauss

104 BAB 7. DIFERENSIAL NUMERIK

Gambar 7.1: Metode Euler

dan memiliki turunan dalam interval [a,b]. Maka dalam deret Taylor

y(ti+1) = y(ti) + (ti+1 − ti)y′(ti) +

(ti+1 − ti)2

2y′′(ξi) (7.4)

Karena h = (ti+1 − ti), maka

y(ti+1) = y(ti) + hy′(ti) +h2

2y′′(ξi) (7.5)

dan, karena y(t) memenuhi persamaan diferensial (7.1),

y(ti+1) = y(ti) + hf(ti, y(ti)) +h2

2y′′(ξi) (7.6)

Metode Euler dibangun dengan pendekatan wi ≈ y(ti) untuk i = 1, 2, 3, ..., N , dengan mengabaikan

suku terakhir yang terdapat pada persamaan (7.6). Jadi metode Euler dinyatakan sebagai

w0 = α (7.7)

wi+1 = wi + hf(ti, wi) (7.8)

dimana i = 0, 1, 2, .., N − 1

Contoh

Diketahui persamaan diferensial

y′ = y − t2 + 1, 0 ≤ t ≤ 2, y(0) = 0, 5

dimana N = 10. Sehingga

h =b − a

N=

2 − 0

10= 0, 2

Page 121: Iterasi Gauss

7.1. METODE EULER 105

dan

ti = a + ih = 0 + i(0, 2) → ti = 0, 2i

serta

w0 = 0, 5

Dengan demikian persamaan euler dapat dinyatakan sebagai

wi+1 = wi + h(wi − t2i + 1)

= wi + 0, 2(wi − 0, 04i2 + 1)

= 1, 2wi − 0, 008i2 + 0, 2

dimana i = 0, 1, ..., 9.

Pada saat i = 0 dan dari syarat awal diketahui w0 = 0, 5

w1 = 1, 2w0 − 0, 008(0)2 + 0, 2 = 0, 8000000

Pada saat i = 1

w2 = 1, 2w1 − 0, 008(1)2 + 0, 2 = 1, 1520000

Pada saat i = 2

w3 = 1, 2w2 − 0, 008(2)2 + 0, 2 = 1, 5504000

Demikian seterusnya, hingga pada i = 9

w10 = 1, 2w9 − 0, 008(9)2 + 0, 2 = 4, 8657845

Disisi lain, solusi exact persamaan diferensial adalah

y(t) = (t + 1)2 − 0, 5et

Tabel dibawah ini memperlihatkan solusi metode euler dan solusi exact serta error atau selisih

antara keduanya. Trend error menunjukan bahwa ketika i semakin besar, error juga semakin

meningkat. Figure (9.3) memperlihatkan kurva peningkatan error ketika i semakin besar.

Untuk mengatasi hal ini, salah satu pemecahannya adalah dengan menerapkan deret Taylor

berorde lebih tinggi, atau cara lainnya adalah dengan menggunakan metode Runge-Kutta yang

akan dijelaskan pada pertemuan berikutnya.

Page 122: Iterasi Gauss

106 BAB 7. DIFERENSIAL NUMERIK

ti wi yi = y(ti) |wi − yi|0,0 0,5000000 0,5000000 0,00000000,2 0,8000000 0,8292986 0,02929860,4 1,1520000 1,2140877 0,06208770,6 1,5504000 1,6489406 0,09854060,8 1,9884800 2,1272295 0,13874951,0 2,4581760 2,6408591 0,18268311,2 2,9498112 3,1799415 0,23013031,4 3,4517734 3,7324000 0,28062661,6 3,9501281 4,2834838 0,33335571,8 4,4281538 4,8151763 0,38702252,0 4,8657845 5,3054720 0,4396874

Gambar 7.2: Trend error metode euler

7.2 Metode Runge Kutta

Pada saat membahas metode Euler untuk penyelesaian persamaan diferensial, kita telah sam-

pai pada kesimpulan bahwa truncation error metode Euler terus membesar seiring dengan

bertambahnya iterasi. Dikaitkan dengan hal tersebut, metode Runge-Kutta Orde Empat menawarkan

penyelesaian persamaan diferensial dengan pertumbuhan truncation error yang jauh lebih ke-

cil.

Page 123: Iterasi Gauss

7.2. METODE RUNGE KUTTA 107

Persamaan-persamaan yang menyusun metode Runge-Kutta Orde Empat adalah

w0 = α

k1 = hf(ti, wi) (7.9)

k2 = hf(ti +h

2, wi +

1

2k1) (7.10)

k3 = hf(ti +h

2, wi +

1

2k2) (7.11)

k4 = hf(ti+1, wi + k3) (7.12)

wi+1 = wi +1

6(k1 + 2k2 + 2k3 + k4) (7.13)

Contoh

Diketahui persamaan diferensial

y′ = y − t2 + 1, 0 ≤ t ≤ 2, y(0) = 0, 5

dengan mengganti y menjadi w, kita bisa nyatakan f(ti, wi) sebagai

f(ti, wi) = wi − t2i + 1

Jika N = 10, maka

h =b − a

N=

2 − 0

10= 0, 2

dan

ti = a + ih = 0 + i(0, 2) → ti = 0, 2i

serta

w0 = 0, 5

Sekarang mari kita demonstrasikan metode Runge-Kutta Orde Empat ini. Untuk menghitung

w1, tahap-tahap perhitungannya dimulai dari menghitung k1

k1 = hf(t0, w0)

= h(w0 − t20 + 1)

= 0, 2((0, 5) − (0, 0)2 + 1)

= 0, 3

lalu menghitung k2

k2 = hf(t0 +h

2, w0 +

k1

2)

= h[(w0 +k1

2) − (t0 +

h

2)2 + 1)]

= 0, 2[(0, 5 +0, 3

2) − (0, 0 +

0, 2

2)2 + 1)]

= 0, 328

Page 124: Iterasi Gauss

108 BAB 7. DIFERENSIAL NUMERIK

dilanjutkan dengan k3

k3 = hf(t0 +h

2, w0 +

k2

2)

= h[(w0 +k2

2) − (t0 +

h

2)2 + 1)]

= 0, 2[(0, 5 +0, 328

2) − (0, 0 +

0, 2

2)2 + 1)]

= 0, 3308

kemudian k4

k4 = hf(t1, w0 + k3)

= h[(w0 + k3) − t21 + 1]

= 0, 2[(0, 5 + 0, 3308) − (0, 2)2 + 1]

= 0, 35816

akhirnya diperoleh w1

w1 = w0 +1

6(k1 + 2k2 + 2k3 + k4)

= 0, 5 +1

6(0, 3 + 2(0, 328) + 2(0, 3308) + 0, 35816)

= 0, 5 +1

6(0, 3 + 0, 656 + 0, 6616 + 0, 35816)

= 0, 8292933

Dengan cara yang sama, w2, w3, w4 dan seterusnya dapat dihitung. Tabel berikut menunjukkan

hasil perhitungannya.

i ti wi yi = y(ti) |wi − yi|0 0,0 0,5000000 0,5000000 0,00000001 0,2 0,8292933 0,8292986 0,00000532 0,4 1,2140762 1,2140877 0,00001143 0,6 1,6489220 1,6489406 0,00001864 0,8 2,1272027 2,1272295 0,00002695 1,0 2,6408227 2,6408591 0,00003646 1,2 3,1799942 3,1799415 0,00004747 1,4 3,7323401 3,7324000 0,00005998 1,6 4,2834095 4,2834838 0,00007439 1,8 4,8150857 4,8151763 0,000090610 2,0 5,3054720 5,3053630 0,0001089

Dibandingkan dengan metode Euler, tingkat pertumbuhan truncation error, pada kolom |wi −yi|, jauh lebih rendah sehingga metode Runge-Kutta Orde Empat lebih disukai untuk mem-

bantu menyelesaikan persamaan-diferensial-biasa.

Page 125: Iterasi Gauss

7.2. METODE RUNGE KUTTA 109

Gambar 7.3: Rangkaian RC

Contoh tadi tampaknya dapat memberikan gambaran yang jelas bahwa metode Runge-Kutta

Orde Empat dapat menyelesaikan persamaan diferensial biasa dengan tingkat akurasi yang

lebih tinggi. Namun, kalau anda jeli, ada suatu pertanyaan cukup serius yaitu apakah metode

ini dapat digunakan bila pada persamaan diferensialnya tidak ada variabel t ? Misalnya pada

kasus berikut ini

Sebuah kapasitor yang tidak bermuatan dihubungkan secara seri dengan sebuah resistor dan

baterry (Figure 7.3). Diketahui ǫ = 12 volt, C = 5,00 µF dan R = 8,00 ×105Ω. Saat saklar di-

hubungkan (t=0), muatan belum ada (q=0).

dq

dt=

ǫ

R− q

RC(7.14)

Solusi exact persamaan (7.14) adalah

qexact = q(t) = Cǫ(

1 − e−t/RC)

(7.15)

Anda bisa lihat semua suku di ruas kanan persamaan (7.14) tidak mengandung variabel t.

Padahal persamaan-persamaan penyusun metode Runge-Kutta selalu mencantumkan variabel

t. Apakah persamaan (7.14) tidak bisa diselesaikan dengan metode Runge-Kutta? Belum tentu.

Sekarang, kita coba selesaikan, pertama kita nyatakan

m1 =ǫ

R= 1, 5 × 10−5

m2 =1

RC= 0, 25

sehingga persamaan (7.14) dimodifikasi menjadi

dq

dt= f(qi) = m1 − qim2

ti = a + ih

Jika t0 = 0, maka a = 0, dan pada saat itu (secara fisis) diketahui q0 = 0, 0. Lalu jika ditetapkan

Page 126: Iterasi Gauss

110 BAB 7. DIFERENSIAL NUMERIK

h = 0, 1 maka t1 = 0, 1 dan kita bisa mulai menghitung k1 dengan menggunakan q0 = 0, 0,

walaupun t1 tidak dilibatkan dalam perhitungan ini

k1 = hf(q0)

= h(m1 − q0m2)

= 0, 1((1, 5 × 10−5) − (0, 0)(0, 25))

= 0, 150 × 10−5

lalu menghitung k2

k2 = hf(q0 +k1

2)

= h[(m1 − (q0 +k1

2)m2)]

= 0, 1[(1, 5 × 10−5 − ((0, 0) +0, 15 × 10−5

2)(0, 25)]

= 0, 14813 × 10−5

dilanjutkan dengan k3

k3 = hf(q0 +k2

2)

= h[(m1 − (q0 +k2

2)m2)]

= 0, 1[(1, 5 × 10−5 − ((0, 0) +0, 14813 × 10−5

2)(0, 25)]

= 0, 14815 × 10−5

kemudian k4

k4 = hf(q0 + k3)

= h[(m1 − (q0 + k3)m2)]

= 0, 1[(1, 5 × 10−5 − ((0, 0) + 0, 14815 × 10−5)(0, 25)]

= 0, 14630 × 10−5

akhirnya diperoleh q1

q1 = q0 +1

6(k1 + 2k2 + 2k3 + k4)

= 0, 0 +1

6(0, 150 + 2(0, 14813) + 2(0, 14815) + 0, 14630) × 10−5

= 0, 14814 × 10−5

Selanjutnya q2 dihitung. Tentu saja pada saat t2, dimana t2 = 0, 2, namun sekali lagi, t2 tidak

Page 127: Iterasi Gauss

7.2. METODE RUNGE KUTTA 111

terlibat dalam perhitungan ini. Dimulai menghitung k1 kembali

k1 = hf(q1)

= h(m1 − q1m2)

= 0, 1((1, 5 × 10−5) − (0, 14814 × 10−5)(0, 25))

= 0, 14630 × 10−5

lalu menghitung k2

k2 = hf(q1 +k1

2)

= h[(m1 − (q1 +k1

2)m2)]

= 0, 1[(1, 5 × 10−5 − ((0, 14814 × 10−5) +0, 14630 × 10−5

2)(0, 25)]

= 0, 14447 × 10−5

dilanjutkan dengan k3

k3 = hf(q1 +k2

2)

= h[(m1 − (q1 +k2

2)m2)]

= 0, 1[(1, 5 × 10−5 − ((0, 14814 × 10−5) +0, 14447 × 10−5

2)(0, 25)]

= 0, 14449 × 10−5

kemudian k4

k4 = hf(q1 + k3)

= h[(m1 − (q1 + k3)m2)]

= 0, 1[(1, 5 × 10−5 − ((0, 14814 × 10−5) + 0, 14449 × 10−5)(0, 25)]

= 0, 14268 × 10−5

akhirnya diperoleh q2

q2 = q1 +1

6(k1 + 2k2 + 2k3 + k4)

= 0, 14814 × 10−5 +1

6(0, 14630 + 2(0, 14447) + 2(0, 14449) + 0, 14268) × 10−5

= 0, 29262 × 10−5

Dengan cara yang sama, q3, q4, q5 dan seterusnya dapat dihitung. Tabel di atas menunjukkan

hasil perhitungannya. Kolom qexact diperoleh dari persamaan (7.15).

Luar biasa!! Tak ada error sama sekali. Mungkin, kalau kita buat 7 angka dibelakang koma,

errornya akan terlihat. Tapi kalau anda cukup puas dengan 5 angka dibelakang koma, hasil ini

Page 128: Iterasi Gauss

112 BAB 7. DIFERENSIAL NUMERIK

i ti qi qexact = q(ti) |qi − qexact|0 0,0 0,00000×10−5 0,00000×10−5 0,000001 0,1 0,14814×10−5 0,14814×10−5 0,000002 0,2 0,29262×10−5 0,29262×10−5 0,000003 0,3 0,43354×10−5 0,43354×10−5 0,000004 0,4 0,57098×10−5 0,57098×10−5 0,000005 0,5 0,70502×10−5 0,70502×10−5 0,000006 0,6 0,83575×10−5 0,83575×10−5 0,000007 0,7 0,96326×10−5 0,96326×10−5 0,000008 0,8 1,0876×10−5 1,0876×10−5 0,000009 0,9 1,2089×10−5 1,2089×10−5 0,0000010 1,0 1,3272×10−5 1,3272×10−5 0,00000

sangat memuaskan. Figure 7.4 memperlihatkan kurva penumpukan muatan q terhadap waktu

t.

0 2 4 6 8 10 12 14 16 18 200

2

4

6x 10

−5

Gambar 7.4: Kurva muatan q terhadap waktu t

Berikut ini adalah script dalam matlab yang dipakai untuk menghitung q

1 clear all

2 clc

3 E=12;

4 R=800000;

5 C=5e-6;

6 m1=E/R;

7 m2=1/(R*C);

8 b=20.0;

9 a=0.0;

Page 129: Iterasi Gauss

7.3. METODE FINITE DIFFERENCE 113

10 h=0.1;

11 n=(b-a)/h;

12 q0=0.0;

13 t0=0.0;

14 for i=1:n

15 t(i)=a+i*h;

16 end

17 for i=1:n

18 if i==1

19 k1=h*(m1-(m2*q0));

20 k2=h*(m1-(m2*(q0+(k1/2))));

21 k3=h*(m1-(m2*(q0+(k2/2))));

22 k4=h*(m1-(m2*(q0+k3)));

23 q(i)=q0+(k1+(2*k2)+(2*k3)+k4)/6;

24 else

25 k1=h*(m1-(m2*q(i-1)));

26 k2=h*(m1-(m2*(q(i-1)+(k1/2))));

27 k3=h*(m1-(m2*(q(i-1)+(k2/2))));

28 k4=h*(m1-(m2*(q(i-1)+k3)));

29 q(i)=q(i-1)+(k1+(2*k2)+(2*k3)+k4)/6;

30 end

31 end

32 q

Sampai disini mudah-mudahan jelas dan bisa dimengerti. Silakan anda coba untuk kasus yang

lain, misalnya proses pembuangan (discharging) q pada rangkaian yang sama, atau bisa juga

anda berlatih dengan rangkaian RL dan RLC. Saya akhiri dulu uraian saya sampai disini.

7.3 Metode Finite Difference

Suatu persamaan diferensial dapat dinyatakan sebagai berikut:

d2y

dx2(x) = p(x)

dy

dx(x) + q(x)y(x) + r(x), a ≤ x ≤ b, y(a) = α, y(b) = β (7.16)

atau juga dapat dituliskan dalam bentuk lain

y′′ = p(x)y′ + q(x)y + r(x) (7.17)

Persamaan tersebut dapat diselesaikan dengan melakukan pendekatan numerik terhadap y′′

dan y′. Caranya adalah pertama, kita memilih angka integer sembarang yaitu N dimana N > 0

dan membagi interval [a, b] dengan (N + 1), hasilnya dinamakan h (lihat Gambar 7.5)

h =b − a

N + 1(7.18)

Dengan demikian maka titik-titik x yang merupakan sub-interval antara a dan b dapat diny-

atakan sebagai

xi = a + ih, i = 0, 1, ..., N + 1 (7.19)

Pencarian solusi persamaan diferensial melalui pendekatan numerik dilakukan dengan me-

manfaatkan polinomial Taylor untuk mengevaluasi y′′ dan y′ pada xi+1 dan xi−1 seperti berikut

Page 130: Iterasi Gauss

114 BAB 7. DIFERENSIAL NUMERIK

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

ini

y(xi+1) = y(xi + h) = y(xi) + hy′(xi) +h2

2y′′(xi) (7.20)

dan

y(xi−1) = y(xi − h) = y(xi) − hy′(xi) +h2

2y′′(xi) (7.21)

Jika kedua persamaan ini dijumlahkan

y(xi+1) + y(xi−1) = 2y(xi) + h2y′′(xi)

Dari sini y′′ dapat ditentukan

h2y′′(xi) = y(xi+1) − 2y(xi) + y(xi−1)

y′′(xi) =y(xi+1) − 2y(xi) + y(xi−1)

h2(7.22)

Dengan cara yang sama, y′(xi) dapat dicari sebagai berikut

y′(xi) =y(xi+1) − y(xi−1)

2h(7.23)

Selanjutnya persamaan (7.22) dan (7.23) disubstitusikan ke persamaan (7.17) maka

y(xi+1) − 2y(xi) + y(xi−1)

h2= p(xi)

y(xi+1) − y(xi−1)

2h+ q(xi)y(xi) + r(xi)

−y(xi+1) + 2y(xi) − y(xi−1)

h2= −p(xi)

y(xi+1) − y(xi−1)

2h− q(xi)y(xi) − r(xi)

−y(xi+1) + 2y(xi) − y(xi−1)

h2+ p(xi)

y(xi+1) − y(xi−1)

2h+ q(xi)y(xi) = −r(xi)

Page 131: Iterasi Gauss

7.3. METODE FINITE DIFFERENCE 115

Sebelum dilanjut, saya nyatakan bahwa y(xi+1)=wi+1 dan y(xi)=wi serta y(xi−1)=wi−1. Maka

persamaan di atas dapat ditulis sebagai berikut

(−wi+1 + 2wi − wi−1

h2

)

+ p(xi)

(

wi+1 − wi−1

2h

)

+ q(xi)wi = −r(xi)

(−wi+1 + 2wi − wi−1) +h

2p(xi) (wi+1 − wi−1) + h2q(xi)wi = −h2r(xi)

−wi+1 + 2wi − wi−1 +h

2p(xi)wi+1 −

h

2p(xi)wi−1 + h2q(xi)wi = −h2r(xi)

−wi−1 −h

2p(xi)wi−1 + 2wi + h2q(xi)wi − wi+1 +

h

2p(xi)wi+1 = −h2r(xi)

−(

1 +h

2p(xi)

)

wi−1 +(

2 + h2q(xi))

wi −(

(1 − h

2p(xi)

)

wi+1 = −h2r(xi) (7.24)

dimana i=1,2,3...sampai N, karena yang ingin kita cari adalah w1, w2, w3,..., wN . Sementara,

satu hal yang tak boleh dilupakan yaitu w0 dan wN+1 biasanya selalu sudah diketahui. Pada

persamaan (7.16), jelas-jelas sudah diketahui bahwa w0=α dan wN+1=β; keduanya dikenal se-

bagai syarat batas atau istilah asingnya adalah boundary value. Topik yang sedang bahas ini

juga sering disebut sebagai Masalah Syarat Batas atau Boundary Value Problem.

Sampai disini kita mendapatkan sistem persamaan linear yang selanjutnya dapat dinyatakan

sebagai bentuk operasi matrik

Aw = b (7.25)

dimana A adalah matrik tridiagonal dengan orde N × N

A =

2 + h2q(x1) −1 + h2p(x1) 0 . . . . . . . . . 0

−1 − h2p(x2) 2 + h2q(x2) −1 + h

2p(x2) 0 . . . . . . 0

0 −1 − h2p(x3) 2 + h2q(x3) −1 + h

2p(x3) 0 . . . 0

0 0 −1 − h2p(x4) 2 + h2q(x4) −1 + h

2p(x4) 0 0

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . −1 − h2p(xN−1) 2 + h2q(xN−1) −1 + h

2p(xN−1)

0 . . . . . . . . . . . . −1 − h2p(xN ) 2 + h2q(xN )

w =

w1

w2

w3

w4

...

wN−1

wN

b =

−h2r(x1) +(

1 + h2p(x1)

)

w0

−h2r(x2)

−h2r(x3)

−h2r(x4)...

−h2r(xN−1)

−h2r(xN ) +(

1 − h2p(xN )

)

wN+1

7.3.1 Script Finite-Difference

1 clear all

2 clc

3

4 a=1.0; %ganti angkanya sesuai data yang anda miliki

Page 132: Iterasi Gauss

116 BAB 7. DIFERENSIAL NUMERIK

5 b=2.0; %ganti angkanya sesuai data yang anda miliki

6 n=9; %ganti angkanya sesuai data yang anda miliki

7 h=(b-a)/(n+1);

8 alpha=1; %ganti angkanya sesuai data yang anda miliki

9 beta=2; %ganti angkanya sesuai data yang anda miliki

10

11 %====== Mencari Elemen Matrik A ========

12 for i=1:n

13 x=a+i*h;

14 A(i,i)=2+h^2*fungsiQ(x);

15 end

16 for i=1:n-1

17 x=a+i*h;

18 A(i,i+1)=-1+((h/2)*fungsiP(x));

19 end

20 for i=2:n

21 x=a+i*h;

22 A(i,i-1)=-1-((h/2)*fungsiP(x));

23 end

24 A

25 %====== Mencari Elemen Vektor b ========

26 x=a+h;

27 b(1,1)=-h^2*fungsiR(x)+(1+((h/2)*fungsiP(x)))*alpha;

28 for i=2:8

29 x=a+i*h;

30 b(i,1)=-h^2*fungsiR(x);

31 end

32 xn=a+n*h

33 b(n,1)=-h^2*fungsiR(xn)+(1-((h/2)*fungsiP(xn)))*beta;

34 b

Pada akhirnya, elemen-elemen matrik A dan vektor b sudah diketahui. Sehingga vektor w

dapat dihitung dengan berbagai metode pemecahan sistem persamaan linear, seperti Eliminasi

Gauss, Gauss-Jourdan, Iterasi Jacobi dan Iterasi Gauss-Seidel.

Contoh

Diketahui persamaan diferensial seperti berikut ini

y′′ = −2

xy′ +

2

x2y +

sin(lnx)

x2, 1 ≤ x ≤ 2, y(1) = 1, y(2) = 2

memiliki solusi exact

y = c1x +c2

x2− 3

10sin(lnx) − 1

10cos(lnx),

dimana

c2 =1

70[8 − 12 sin(ln 2) − 4 cos(ln 2)] ≈ −0, 03920701320

Page 133: Iterasi Gauss

7.3. METODE FINITE DIFFERENCE 117

dan

c1 =11

10− c2 ≈ 1, 1392070132.

Dengan metode Finite-Difference, solusi pendekatan dapat diperoleh dengan membagi inter-

val 1 ≤ x ≤ 2 menjadi sub-interval, misalnya kita gunakan N = 9, sehingga spasi h diperoleh

h =b − a

N + 1=

2 − 1

9 + 1= 0, 1

Dari persamaan diferensial tersebut juga didapat

p(xi) = − 2

xi

q(xi) =2

x2i

r(xi) =sin(lnxi)

x2i

Script matlab telah dibuat untuk menyelesaikan contoh soal ini. Untuk memecahkan persoalan

ini, saya membuat 4 buah script, terdiri dari script utama, script fungsiP, script fungsiQ dan

script fungsiR. Berikut ini adalah script fungsiP yang disimpan dengan nama file fungsiP.m:

1 function y = fungsiP(x)

2 y = -2/x;

lalu inilah script fungsiQ yang disimpan dengan nama file fungsiQ.m:

1 function y = fungsiQ(x)

2 y = 2/x^2;

kemudian ini script fungsiR yang disimpan dengan nama file fungsiR.m::

1 function y = fungsiR(x)

2 y = sin(log(x))/x^2;

dan terakhir, inilah script utamanya:

1 clear all

2 clc

3

4 a=1.0;

5 b=2.0;

6

7 alpha=1;

8 beta=2;

9

10 %=======jika diketahui n, maka h dihitung ====

Page 134: Iterasi Gauss

118 BAB 7. DIFERENSIAL NUMERIK

11 n=9;

12 h=(b-a)/(n+1);

13

14 %=======jika diketahui h, maka n dihitung ====

15 %h=0.1;

16 %n=((b-a)/h)-1;

17

18 %====== Mencari Elemen Matrik A ========

19 for i=1:n

20 x=a+i*h;

21 A(i,i)=2+h^2*fungsiQ(x);

22 end

23 for i=1:n-1

24 x=a+i*h;

25 A(i,i+1)=-1+((h/2)*fungsiP(x));

26 end

27 for i=2:n

28 x=a+i*h;

29 A(i,i-1)=-1-((h/2)*fungsiP(x));

30 end

31 A

32 %====== Mencari Elemen Vektor b ========

33 x=a+h;

34 b(1,1)=-h^2*fungsiR(x)+(1+((h/2)*fungsiP(x)))*alpha;

35 for i=2:8

36 x=a+i*h;

37 b(i,1)=-h^2*fungsiR(x);

38 end

39 xn=a+n*h

40 b(n,1)=-h^2*fungsiR(xn)+(1-((h/2)*fungsiP(xn)))*beta;

41 b

42 %====== Menggabungkan Vektor b kedalam matrik A ========

43 for i=1:n

44 A(i,n+1)=b(i,1);

45 end

46 A

47

48 %&&&&&& Proses Eliminasi Gauss &&&&&&&&&&&&&&&&&&&&&&&&&

49 %---------Proses Triangularisasi-----------

50 for j=1:(n-1)

51

52 %----mulai proses pivot---

53 if (A(j,j)==0)

54 for p=1:n+1

55 u=A(j,p);

56 v=A(j+1,p);

57 A(j+1,p)=u;

Page 135: Iterasi Gauss

7.3. METODE FINITE DIFFERENCE 119

58 A(j,p)=v;

59 end

60 end

61 %----akhir proses pivot---

62 jj=j+1;

63 for i=jj:n

64 m=A(i,j)/A(j,j);

65 for k=1:(n+1)

66 A(i,k)=A(i,k)-(m*A(j,k));

67 end

68 end

69 end

70 %-------------------------------------------

71

72 %------Proses Substitusi mundur-------------

73 x(n,1)=A(n,n+1)/A(n,n);

74

75 for i=n-1:-1:1

76 S=0;

77 for j=n:-1:i+1

78 S=S+A(i,j)*x(j,1);

79 end

80 x(i,1)=(A(i,n+1)-S)/A(i,i);

81 end

82 %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

83

84 %===== Menampilkan Vektor w =================

85 w=x

Tabel berikut ini memperlihatkan hasil perhitungan dengan pendekatan metode Finite-Difference

wi dan hasil perhitungan dari solusi exact y(xi), dilengkapi dengan selisih antara keduanya

|wi − y(xi)|. Tabel ini memperlihatkan tingkat kesalahan (error) berada pada orde 10−5. Un-

xi wi y(xi) |wi − y(xi)|1,0 1,00000000 1,000000001,1 1,09260052 1,09262930 2,88 × 10−5

1,2 1,18704313 1,18708484 4,17 × 10−5

1,3 1,28333687 1,28338236 4,55 × 10−5

1,4 1,38140205 1,38144595 4,39 × 10−5

1,5 1,48112026 1,48115942 3,92 × 10−5

1,6 1,58235990 1,58239246 3,26 × 10−5

1,7 1,68498902 1,68501396 2,49 × 10−5

1,8 1,78888175 1,78889853 1,68 × 10−5

1,9 1,89392110 1,89392951 8,41 × 10−6

2,0 2,00000000 2,00000000

tuk memperkecil orde kesalahan, kita bisa menggunakan polinomial Taylor berorde tinggi.

Akan tetapi proses kalkulasi menjadi semakin banyak dan disisi lain penentuan syarat batas

Page 136: Iterasi Gauss

120 BAB 7. DIFERENSIAL NUMERIK

lebih kompleks dibandingkan dengan pemanfaatan polinomial Taylor yang sekarang. Untuk

menghindari hal-hal yang rumit itu, salah satu jalan pintas yang cukup efektif adalah dengan

menerapkan ekstrapolasi Richardson.

Contoh

Pemanfaatan ekstrapolasi Richardson pada metode Finite Difference untuk persamaan difer-

ensial seperti berikut ini

y′′ = −2

xy′ +

2

x2y +

sin(lnx)

x2, 1 ≤ x ≤ 2, y(1) = 1, y(2) = 2,

dengan h = 0, 1, h = 0, 05, h = 0, 025. Ekstrapolasi Richardson terdiri atas 3 tahapan, yaitu

ekstrapolasi yang pertama

Ext1i =4wi(h = 0, 05) − wi(h = 0, 1)

3

kemudian ekstrapolasi yang kedua

Ext2i =4wi(h = 0, 025) − wi(h = 0, 05)

3

dan terakhir ekstrapolasi yang ketiga

Ext3i =16Ext2i − Ext1i

15

Tabel berikut ini memperlihatkan hasil perhitungan tahapan-tahapan ekstrapolasi tersebut. Ji-

ka seluruh angka di belakang koma diikut-sertakan, maka akan terlihat selisih antara solusi

exact dengan solusi pendekatan sebesar 6, 3 × 10−11. Ini benar-benar improvisasi yang luar

biasa.

xi wi(h = 0, 1) wi(h = 0, 05) wi(h = 0, 025) Ext1i Ext2i Ext3i

1,0 1,00000000 1,00000000 1,00000000 1,00000000 1,00000000 1,000000001,1 1,09260052 1,09262207 1,09262749 1,09262925 1,09262930 1,092629301,2 1,18704313 1,18707436 1,18708222 1,18708477 1,18708484 1,187084841,3 1,28333687 1,28337094 1,28337950 1,28338230 1,28338236 1,283382361,4 1,38140205 1,38143493 1,38144319 1,38144598 1,38144595 1,381445951,5 1,48112026 1,48114959 1,48115696 1,48115937 1,48115941 1,481159421,6 1,58235990 1,58238429 1,58239042 1,58239242 1,58239246 1,582392461,7 1,68498902 1,68500770 1,68501240 1,68501393 1,68501396 1,685013961,8 1,78888175 1,78889432 1,78889748 1,78889852 1,78889853 1,788898531,9 1,89392110 1,89392740 1,89392898 1,89392950 1,89392951 1,893929512,0 2,00000000 2,00000000 2,00000000 2,00000000 2,00000000 2,00000000

7.3.2 Aplikasi

Besar simpangan terhadap waktu (y(t)) suatu sistem osilator mekanik yang padanya diberikan

gaya secara periodik (forced-oscilations) memenuhi persamaan diferensial seperti dibawah ini

Page 137: Iterasi Gauss

7.3. METODE FINITE DIFFERENCE 121

berikut syarat-syarat batasnya

d2y

dt2=

dy

dt+ 2y + cos(t), 0 ≤ t ≤ π

2, y(0) = −0, 3, y(

π

2) = −0, 1

Dengan metode Finite-Difference, tentukanlah besar masing-masing simpangan di setiap inter-

val h = π/8. Buatlah table untuk membandingkan hasil finite-difference dengan solusi analitik

yang memenuhi y(t) = − 110 [sin(t) + 3cos(t)].

jawab:

Secara umum, persamaan diferensial dapat dinyatakan sbb:

d2y

dx2(x) = p(x)

dy

dx(x) + q(x)y(x) + r(x), a ≤ x ≤ b, y(a) = α, y(b) = β

Dengan membandingkan kedua persamaan di atas, kita bisa definisikan

p(t) = 1 q(t) = 2 r(t) = cos(t) a = 0 b =π

2α = −0, 3 β = −0, 1

Adapun persamaan finite-difference adalah

−(

1 +h

2p(xi)

)

wi−1 +(

2 + h2q(xi))

wi −(

(1 − h

2p(xi)

)

wi+1 = −h2r(xi)

Persamaan diatas dikonversi kedalam operasi matriks

Aw = b (7.26)

dimana A adalah matrik tridiagonal dengan orde N × N

A =

2 + h2q(x1) −1 + h2p(x1) 0 . . . . . . . . . 0

−1 − h2p(x2) 2 + h2q(x2) −1 + h

2p(x2) 0 . . . . . . 0

0 −1 − h2p(x3) 2 + h2q(x3) −1 + h

2p(x3) 0 . . . 0

0 0 −1 − h2p(x4) 2 + h2q(x4) −1 + h

2p(x4) 0 0

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . −1 − h2p(xN−1) 2 + h2q(xN−1) −1 + h

2p(xN−1)

0 . . . . . . . . . . . . −1 − h2p(xN ) 2 + h2q(xN )

w =

w1

w2

w3

w4

...

wN−1

wN

b =

−h2r(x1) +(

1 + h2p(x1)

)

w0

−h2r(x2)

−h2r(x3)

−h2r(x4)...

−h2r(xN−1)

−h2r(xN ) +(

1 − h2p(xN )

)

wN+1

Jumlah baris matrik ditentukan oleh bilangan n. Namun disoal hanya tersedia informasi nilai

Page 138: Iterasi Gauss

122 BAB 7. DIFERENSIAL NUMERIK

h = π/8, sehingga n harus dihitung terlebih dahulu:

h =b − a

n + 1n =

b − a

h− 1 =

π2 − 0

π/8− 1 = 3

perhitungan ini dilakukan didalam script matlab. Selanjutnya seluruh elemen matrik A dan

vektor b dihitung dengan matlab

2, 3084 −0, 8037 0

−1, 1963 2, 3084 −0, 8037

0 −1, 1963 2, 3084

w1

w2

w3

=

−0, 5014

−0, 1090

−0, 1394

Proses diteruskan dengan metode Eliminasi Gauss dan didapat hasil akhir berikut ini

w1 = −0.3157 w2 = −0.2829 w3 = −0.2070

Page 139: Iterasi Gauss

Bab 8

Pers. Diferensial Parsial Numerik

Objektif :

⊲ Mengenalkan Persamaan Diferensial Parsial Eliptik

⊲ Mengenalkan Persamaan Diferensial Parsial Hiperbolik

⊲ Mengenalkan Persamaan Diferensial Parsial Parabolik

8.1 Pendahuluan

Dalam bab ini, penulisan ’persamaan diferensial parsial’ akan dipersingkat menjadi PDP. PDP

dapat dibagi menjadi 3 jenis, yaitu persamaan diferensial eliptik, parabolik dan hiperbolik.

PDP eliptik dinyatakan sebagai berikut

∂2u

∂x2(x, y) +

∂2u

∂y2(x, y) = f(x, y) (8.1)

Di bidang fisika, persamaan (8.1) disebut juga dengan Persamaan Poisson. Jika f(x, y)=0, ma-

ka diperoleh persamaan yang lebih sederhana

∂2u

∂x2(x, y) +

∂2u

∂y2(x, y) = 0 (8.2)

yang dikenal sebagai Persamaan Laplace. Contoh masalah PDP eliptik di bidang fisika adalah

problem distribusi panas pada kondisi steady-state di dalam obyek 2-dimensi dan 3-dimensi.

Adapun, PDP parabolik dinyatakan sebagai berikut

∂u

∂t(x, t) − α2 ∂2u

∂x2(x, t) = 0 (8.3)

Fenomena fisis yang bisa dijelaskan oleh persamaan ini adalah masalah aliran panas dalam

suatu obyek. Sedangkan PDP hiperbolik dinyatakan sebagai berikut

α2 ∂2u

∂2x(x, t) =

∂2u

∂t2(x, t) (8.4)

123

Page 140: Iterasi Gauss

124 BAB 8. PERS. DIFERENSIAL PARSIAL NUMERIK

, biasa digunakan untuk menjelaskan fenomena gelombang.

Sekarang, mari kita bahas lebih dalam satu-persatu, difokuskan pada bagaimana cara mengkon-

versi semua PDP menjadi PDP versi Finite-Difference, (FD).

8.2 PDP eliptik dalam Finite-Difference

Kita mulai dari persamaan aslinya

∂2u

∂x2(x, y) +

∂2u

∂y2(x, y) = f(x, y) (8.5)

dimana R = [(x, y)|a < x < b, c < y < d]. Maksudnya, variasi titik-titik x dibatasi antara a dan

b. Demikian pula dengan variasi titik-titik y, dibatasi antara c dan d. Jika h adalah jarak antar

titik yang bersebelahan pada titik-titik dalam rentang a dan b, maka titik-titik variasi di antara

a dan b dapat diketahui melalui rumus ini

xi = a + ih, dimana i = 1, 2, . . . , n (8.6)

dimana a adalah titik awal pada sumbu horisontal x. Demikian pula pada sumbu y. Jika k

adalah jarak antar titik yang bersebelahan pada titik-titik dalam rentang c dan d, maka titik-

titik variasi di antara c dan d dapat diketahui melalui rumus ini

yj = c + jk, dimana j = 1, 2, . . . , m (8.7)

dimana c adalah titik awal pada sumbu vertikal y. Garis-garis yang sejajar sumbu horisontal,

y = yi dan garis-garis yang sejajar sumbu vertikal, x = xi disebut grid lines. Sementara titik-

titik perpotongan antara garis-garis horisontal dan vertikal dinamakan mesh points.

Turunan kedua sebagaimana yang ada pada persamaan (8.5) dapat dinyatakan dalam ru-

mus centered-difference sebagai berikut

∂2u

∂x2(xi, yj) =

u(xi+1, yj) − 2u(xi, yj) + u(xi−1, yj)

h2− h2

12

∂4u

∂x4(ξi, yj) (8.8)

∂2u

∂y2(xi, yj) =

u(xi, yj+1) − 2u(xi, yj) + u(xi, yj−1)

k2− k2

12

∂4u

∂y4(xi, ηj) (8.9)

Kemudian, untuk menyederhanakan analisis menggunakan metode Finite-Difference, biasanya

suku yang terakhir diabaikan.

∂2u

∂x2(xi, yj) =

u(xi+1, yj) − 2u(xi, yj) + u(xi−1, yj)

h2(8.10)

∂2u

∂y2(xi, yj) =

u(xi, yj+1) − 2u(xi, yj) + u(xi, yj−1)

k2(8.11)

Pengabaian suku terakhir otomatis menimbulkan error yang dinamakan truncation error. Jadi,

ketika suatu persamaan diferensial diolah secara numerik dengan metode Finite-Difference,

Page 141: Iterasi Gauss

8.2. PDP ELIPTIK DALAM FINITE-DIFFERENCE 125

maka solusinya pasti meleset/keliru "sedikit", karena pada hasilnya pasti mengandung trun-

cation error. Akan tetapi, keberadaan error tersebut dapat ditolerir hingga batas-batas tertentu

yang uraiannya akan dikupas pada bagian akhir bab ini.

Ok. Mari kita lanjutkan! Sekarang persamaan (8.10) dan (8.11) disubstitusikan ke per-

samaan (8.5)

u(xi+1, yj) − 2u(xi, yj) + u(xi−1, yj)

h2+

u(xi, yj+1) − 2u(xi, yj) + u(xi, yj−1)

k2= f(xi, yj) (8.12)

dimana i = 1, 2, ..., n − 1 dan j = 1, 2, ..., m − 1 dengan syarat batas sebagai berikut

u(x0, yj) = g(x0, yj) u(xn, yj) = g(xn, yj) j = 0, 1, ..., m;

u(xi, y0) = g(xi, y0) u(xi, ym) = g(xi, ym) i = 1, 2, ..., n − 1.

Dalam metode Finite-Difference, persamaan (8.12) dinyatakan sebagai berikut

wi+1,j − 2wi,j + wi−1,j

h2+

wi,j+1 − 2wi,j + wi,j−1

k2= f(xi, yj)

wi+1,j − 2wi,j + wi−1,j +h2

k2(wi,j+1 − 2wi,j + wi,j−1) = h2f(xi, yj)

wi+1,j − 2wi,j + wi−1,j +h2

k2wi,j+1 − 2

h2

k2wi,j +

h2

k2wi,j−1 = h2f(xi, yj)

−2[1 +h2

k2]wi,j + (wi+1,j + wi−1,j) +

h2

k2(wi,j+1 + wi,j−1) = h2f(xi, yj)

2[1 +h2

k2]wi,j − (wi+1,j + wi−1,j) −

h2

k2(wi,j+1 + wi,j−1) = −h2f(xi, yj) (8.13)

dimana i = 1, 2, ..., n − 1 dan j = 1, 2, ..., m − 1, dengan syarat batas sebagai berikut

w0,j = g(x0, yj) wn,j = g(xn, yj) j = 0, 1, ..., m;

wi,0 = g(xi, y0) wi,m = g(xi, ym) i = 1, 2, ..., n − 1.

Persamaan (8.13) adalah rumusan akhir metode Finite-Difference untuk PDP Eliptik.

Contoh pertama

Misalnya kita diminta mensimulasikan distribusi panas pada lempengan logam berukuran 0, 5

m x 0, 5 m. Temperatur pada 2 sisi tepi lempengan logam dijaga pada temperatur 0C, semen-

tara pada 2 sisi tepi lempengan logam yang lain temperaturnya diatur meningkat secara linear

dari 0C hingga 100C. Problem ini memenuhi PDP Eliptik:

∂2u

∂x2(x, y) +

∂2u

∂y2(x, y) = 0

dengan syarat-syarat batas

u(0, y) = 0, u(x, 0) = 0, u(x, 0.5) = 200x, u(0.5, y) = 200y (8.14)

Jika n = m = 4, masalah ini dipecahkan dengan grid sebagaimana yang diperlihatkan pada

Page 142: Iterasi Gauss

126 BAB 8. PERS. DIFERENSIAL PARSIAL NUMERIK

U(0

,y)=

0

U(x,0)=0

U(0

.5,y

)=200y

U(x,0.5)=200x

0.5

0.5

Y

X

W2,3

W1,3

W3,3

W1,2

W2,2

W3,2

W1,1

W2,1

W3,1

W1,4

W2,4

W3,4

W4,3

W4,2

W4,1

W0,3

W0,2

W0,1

W1,0

W2,0

W3,0

Gambar 8.1: Distribusi temperatur pada lempeng logam

Gambar 8.1. Adapun persamaan finite-differencenya adalah

4wi,j − wi+1,j − wi−1,j − wi,j−1 − wi,j+1 = 0 (8.15)

dimana i = 1, 2, 3 dan j = 1, 2, 3. Dengan menerapkan persamaan (8.15) pada setiap mesh

point yang belum diketahui temperaturnya, diperoleh

4w1,3 − w2,3 − w1,2 = w0,3 + w1,4

4w2,3 − w3,3 − w2,2 − w1,3 = w2,4

4w3,3 − w3,2 − w2,3 = w4,3 + w3,4

4w1,2 − w2,2 − w1,1 − w1,3 = w0,2

4w2,2 − w3,2 − w2,1 − w1,2 − w2,3 = 0

4w3,2 − w3,1 − w2,2 − w3,3 = w4,2

4w1,1 − w2,1 − w1,2 = w0,1 + w1,0

4w2,1 − w3,1 − w1,1 − w2,2 = w2,0

4w3,1 − w2,1 − w3,2 = w3,0 + w4,1

Syarat batas yang telah ditentukan adalah

w1,0 = w2,0 = w3,0 = w0,1 = w0,2 = w0,3 = 0,

w1,4 = w4,1 = 25, w2,4 = w4,2 = 50, and w3,4 = w4,3 = 75

Page 143: Iterasi Gauss

8.2. PDP ELIPTIK DALAM FINITE-DIFFERENCE 127

Dengan menyertakan syarat batas, sistem persamaan linear dapat ditulis kembali sebagai berikut

4w1,3 − w2,3 − w1,2 = 25

4w2,3 − w3,3 − w2,2 − w1,3 = 50

4w3,3 − w3,2 − w2,3 = 150

4w1,2 − w2,2 − w1,1 − w1,3 = 0

4w2,2 − w3,2 − w2,1 − w1,2 − w2,3 = 0

4w3,2 − w3,1 − w2,2 − w3,3 = 50

4w1,1 − w2,1 − w1,2 = 0

4w2,1 − w3,1 − w1,1 − w2,2 = 0

4w3,1 − w2,1 − w3,2 = 25

Kemudian sistem persamaan linear tersebut dikonversikan ke dalam operasi perkalian matrik

4 −1 0 −1 0 0 0 0 0

−1 4 −1 0 −1 0 0 0 0

0 −1 4 0 0 −1 0 0 0

−1 0 0 4 −1 0 −1 0 0

0 −1 0 −1 4 −1 0 −1 0

0 0 −1 0 −1 4 0 0 −1

0 0 0 −1 0 0 4 −1 0

0 0 0 0 −1 0 −1 4 −1

0 0 0 0 0 −1 0 −1 4

w1,3

w2,3

w3,3

w1,2

w2,2

w3,2

w1,1

w2,1

w3,1

=

25

50

150

0

0

50

0

0

25

Mari kita perhatikan sejenak, susunan elemen-elemen angka pada matrik berukuran 9x9. Ter-

lihat jelas bahwa angka diagonal selalu bernilai 4. Ini sama sekali bukan ketidaksengajaan.

Melainkan susunan itu sengaja direkayasa sedemikian rupa sehingga elemen-elemen tri-diagonal

terisi penuh dan pada diagonal utamanya diletakkan angka yang terbesar. Akhirnya dengan

metode Eliminasi Gauss diperoleh hasil

w1,3 w2,3 w3,3 w1,2 w2,2 w3,2 w1,1 w2,1 w3,1

18.7500 37.5000 56.2500 12.5000 25.0000 37.5000 6.2500 12.5000 18.7500

Catatan: inilah solusi yang "ditawarkan" oleh Finite-Difference. Kalau diamati dengan teliti,

angka-angka distribusi temperatur pada 9 buah mesh points memang logis dan masuk akal.

Dalam kondisi real, mungkin kondisi seperti ini hanya bisa terjadi bila lempengan logam terse-

but terbuat dari bahan yang homogen isotropik.

Berikut adalah script Matlab untuk menghitung nila-nilai w menggunakan metode Eliminasi

Gauss.

1 clear all

2 clc

Page 144: Iterasi Gauss

128 BAB 8. PERS. DIFERENSIAL PARSIAL NUMERIK

3 n=9;

4 A=[ 4 -1 0 -1 0 0 0 0 0;

5 -1 4 -1 0 -1 0 0 0 0;

6 0 -1 4 0 0 -1 0 0 0;

7 -1 0 0 4 -1 0 -1 0 0;

8 0 -1 0 -1 4 -1 0 -1 0;

9 0 0 -1 0 -1 4 0 0 -1;

10 0 0 0 -1 0 0 4 -1 0;

11 0 0 0 0 -1 0 -1 4 -1;

12 0 0 0 0 0 -1 0 -1 4];

13

14 b=[25; 50; 150; 0; 0; 50; 0; 0; 25];

15

16 %&&&&&& Proses Eliminasi Gauss &&&&&&&&&&&&&&&&&&&&&&&&&

17 %====== Menggabungkan Vektor b kedalam matrik A ========

18 %====== sehingga terbentuk matrik Augmentasi. ========

19 for i=1:n

20 A(i,n+1)=b(i,1);

21 end

22

23 %---------Proses Triangularisasi-----------

24 for j=1:(n-1)

25

26 %----mulai proses pivot---

27 if (A(j,j)==0)

28 for p=1:n+1

29 u=A(j,p);

30 v=A(j+1,p);

31 A(j+1,p)=u;

32 A(j,p)=v;

33 end

34 end

35 %----akhir proses pivot---

36 jj=j+1;

37 for i=jj:n

38 m=A(i,j)/A(j,j);

39 for k=1:(n+1)

40 A(i,k)=A(i,k)-(m*A(j,k));

41 end

42 end

43 end

44 %-------------------------------------------

45

46 %------Proses Substitusi mundur-------------

47 x(n,1)=A(n,n+1)/A(n,n);

48

49 for i=n-1:-1:1

50 S=0;

51 for j=n:-1:i+1

52 S=S+A(i,j)*x(j,1);

53 end

54 x(i,1)=(A(i,n+1)-S)/A(i,i);

55 end

56 %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

57

58 %===== Menampilkan Vektor w =================

59 w=x

Sementara berikut ini adalah script Matlab untuk menghitung nila-nilai w menggunakan metode

Page 145: Iterasi Gauss

8.2. PDP ELIPTIK DALAM FINITE-DIFFERENCE 129

Iterasi Gauss-Seidel.

1 clear all

2 clc

3

4 n=9;

5 A=[ 4 -1 0 -1 0 0 0 0 0;

6 -1 4 -1 0 -1 0 0 0 0;

7 0 -1 4 0 0 -1 0 0 0;

8 -1 0 0 4 -1 0 -1 0 0;

9 0 -1 0 -1 4 -1 0 -1 0;

10 0 0 -1 0 -1 4 0 0 -1;

11 0 0 0 -1 0 0 4 -1 0;

12 0 0 0 0 -1 0 -1 4 -1;

13 0 0 0 0 0 -1 0 -1 4];

14

15 b=[25; 50; 150; 0; 0; 50; 0; 0; 25];

16

17 %&&&&&&& ITERASI GAUSS-SEIDEL &&&&&&&&&&&&&&&&&&

18 itermax=100; %iterasi maksimum

19 %----nilai awal-----------

20 xl=[0; 0; 0; 0; 0; 0; 0; 0; 0];

21 xb=xl;

22 %----stopping criteria-----------

23 sc=0.001;

24 %----memulai iterasi-------------

25 for iterasi=1:itermax

26 smtr1=0;

27 for j=2:n

28 smtr1=smtr1+A(1,j)*xl(j,1);

29 end

30 xb(1,1)=(-smtr1+b(1,1))/A(1,1);

31 %----------------------------------------------

32 for i=2:n-1

33 smtr2=0;

34 for j=i+1:n

35 smtr2=smtr2-A(i,j)*xl(j,1);

36 end

37 smtr3=0;

38 for k=1:i-1

39 smtr3=smtr3-A(i,k)*xb(k,1);

40 end

41 xb(i,1)=(smtr3+smtr2+b(i,1))/A(i,i);

42 end

43 %----------------------------------------------

44 smtr4=0;

45 for k=1:n-1

46 smtr4=smtr4-A(n,k)*xb(k,1);

47 end

48 xb(n,1)=(smtr4+b(n,1))/A(n,n);

49 %------perhitungan norm2 -------------

50 s=0;

51 for i=1:n

52 s=s+(xb(i,1)-xl(i,1))^2;

53 end

54 epsilon=sqrt(s);

55 %-------------------------------------

56 xl=xb;

57 %------memeriksa stopping criteria--------

Page 146: Iterasi Gauss

130 BAB 8. PERS. DIFERENSIAL PARSIAL NUMERIK

58 if epsilon<sc

59 w=xb

60 break

61 end

62 %-----------------------------------------

63 end

Tabel berikut memperlihatkan hasil pemrosesan dengan metode Eliminasi Gauss (disingkat:

EG) dan iterasi Gauss-Seidel (disingkat: GS)

w1,3 w2,3 w3,3 w1,2 w2,2 w3,2 w1,1 w2,1 w3,1

EG 18.7500 37.5000 56.2500 12.5000 25.0000 37.5000 6.2500 12.5000 18.7500

GS 18.7497 37.4997 56.2498 12.4997 24.9997 37.4998 6.2498 12.4998 18.7499

Memang berbeda. Tapi tak ada perbedaan yang cukup berarti. Keduanya nyaris sama

persis. Namun perlu saya tegaskan disini bahwa jika sistem persamaan linear yang diperoleh

dari Finite Difference berorde 100 atau kurang dari itu, maka lebih baik memilih metode Elim-

inasi Gauss sebagai langkah akhir Finite-Difference. Alasannya karena, direct method seperti

eliminasi Gauss lebih stabil dibandingkan metode iterasi. Tapi jika ordenya lebih dari 100, dis-

arankan memilih metode iterasi seperti iterasi Gauss-Seidel, atau menggunakan metode SOR

yang terbukti lebih efisien dibanding Gauss-Seidel. Jika matrik A bersifat positive definite,

metode Court Factorization adalah pilihan yg paling efisien dan menghemat memori komput-

er.

Page 147: Iterasi Gauss

Bab 9

Integral Numerik

Objektif :

⊲ Mengenalkan metode Trapezoida.

⊲ Mengenalkan metode Simpson.

⊲ Mengenalkan metode Composite-Simpson.

9.1 Metode Trapezoida

Suatu persamaan integral∫ b

af(x)dx (9.1)

disebut numerical quadrature. Pendekatan numerik untuk menyelesaikan integral tersebut

adalahi=0∑

n

aif(xi) (9.2)

Metode pendekatan yang paling dasar dalam integral numerik adalah metode Trapezoida

∫ b

af(x)dx =

h

2[f(x0) + f(x1)] −

h3

12f ′′(ξ) (9.3)

dimana x0 = a, x1 = b dan h = b − a. Karena bagian error pada Trapezoida adalah f ′′, maka

pendekatan Trapezoida bekerja efektif pada fungsi-fungsi yang turunan kedua-nya bernilai

nol.

9.2 Metode Simpson

Metode pendekatan yang lebih baik dalam integral numerik adalah metode Simpson

∫ b

af(x)dx =

h

3[f(x0) + 4f(x1) + f(x2)] −

h5

90f4(ξ) (9.4)

131

Page 148: Iterasi Gauss

132 BAB 9. INTEGRAL NUMERIK

Gambar 9.1: Metode Trapezoida

Gambar 9.2: Metode Simpson

dengan x0 = a, x2 = b, dan x1 = a + h dimana h = (b − a)/2.

Contoh

Metode Trapezoida untuk fungsi f pada interval [0,2] adalah

∫ 2

0f(x)dx ≈ f(0) + f(2)

dimana x0 = 0, x1 = 2 dan h = 2 − 0 = 2,

sedangkan metode Simpson untuk fungsi f pada interval [0,2] adalah

∫ 2

0f(x)dx ≈ 1

3[f(0) + 4f(1) + f(2)]

dengan x0 = 0, x2 = 2, dan x1 = a + h = 1 dimana h = (b − a)/2 = 1.

Page 149: Iterasi Gauss

9.3. METODE COMPOSITE-SIMPSON 133

Tabel berikut ini memperlihatkan evaluasi integral numerik terhadap beberapa fungsi dalam

interval [0,2] beserta solusi exact-nya. Jelas terlihat, metode Simpson lebih baik dibanding

Trapezoida.

f(x) x2 x4 1/(x + 1)√

1 + x2 sinx ex

Nilai exact 2,667 6,400 1,099 2,958 1,416 6,389Trapezoida 4,000 16,000 1,333 3,326 0,909 8,389

Simpson 2,667 6,667 1,111 2,964 1,425 6,421

Kalau diamati lebih teliti, akan kita dapatkan bahwa interval [0,2] telah dibagi 2 pada metode

Simpson, sementara pada metode Trapesoida tidak dibagi sama sekali. Sebenarnya dengan

membagi interval lebih kecil lagi, maka error-nya akan semakin kecil. Misalnya, banyaknya

pembagian interval dinyatakan dengan n

ketika n = 1: Trapesioda

∫ x1

x0

f(x)dx =h

2[f(x0) + f(x1)] −

h3

12f ′′(ξ) (9.5)

ketika n = 2: Simpson

∫ x2

x0

f(x)dx =h

3[f(x0) + 4f(x1) + f(x2)] −

h5

90f4(ξ) (9.6)

ketika n = 3: Simpson tiga-per-delapan

∫ x3

x0

f(x)dx =3h

8[f(x0) + 3f(x1) + 3f(x2) + f(x3)] −

3h5

80f4(ξ) (9.7)

ketika n = 4:

∫ x4

x0

f(x)dx =2h

45[7f(x0) + 32f(x1) + 12f(x2) + 32f(x3) + 7f(x4)] −

8h7

945f6(ξ) (9.8)

Keempat bentuk persamaan integral numerik di atas dikenal dengan closed Newton-Cotes

formulas. Keterbatasan metode Newton-Cotes terlihat dari jumlah pembagian interval. Di

atas tadi pembagian interval baru sampai pada n = 4. Bagaimana bila interval evaluasinya

dipersempit supaya solusi numeriknya lebih mendekati solusi exact? Atau dengan kata lain

n > 4.

9.3 Metode Composite-Simpson

Coba perhatikan contoh berikut ini. Tentukan solusi numerik dari∫ 40 exdx. Metode Simpson

dengan h = 2 (atau interval evaluasi integral dibagi 2 , n = 2) memberikan hasil

∫ 4

0exdx ≈ 2

3

(

e0 + 4e2 + e4)

= 56, 76958

Page 150: Iterasi Gauss

134 BAB 9. INTEGRAL NUMERIK

Gambar 9.3: Metode Composite Simpson

Padahal solusi exact dari integral tersebut adalah e4 − e0 = 53, 59815, artinya terdapat er-

ror sebesar 3,17143 yang dinilai masih terlampau besar untuk ditolerir. Bandingkan dengan

metode yang sama namun dengan h = 1 (atau interval evaluasi integral dibagi 4 , n = 4)

∫ 4

0exdx =

∫ 2

0exdx +

∫ 4

2exdx

≈ 1

3

(

e0 + 4e + e2)

+1

3

(

e2 + 4e3 + e4)

=1

3

(

e0 + 4e + 2e2 + 4e3 + e4)

= 53, 86385

Hasil ini memperlihatkan error yang makin kecil, yaitu menjadi 0,26570. Jadi dengan mem-

perkecil h, error menjadi semakin kecil dan itu artinya solusi integral numerik semakin mendekati

solusi exact. Sekarang kita coba kecilkan lagi nilai h menjadi h = 12 (atau interval evaluasi in-

tegral dibagi 8 , n = 8),

∫ 4

0exdx =

∫ 1

0exdx +

∫ 2

1exdx +

∫ 3

2exdx +

∫ 4

3exdx

≈ 1

6

(

e0 + 4e1/2 + e)

+1

6

(

e + 4e3/2 + e2)

+

1

6

(

e2 + 4e5/2 + e3)

+1

6

(

e3 + 4e7/2 + e4)

=1

6

(

e0 + 4e1/2 + 2e + 4e3/2 + 2e2 + 4e5/2 + 2e3 + 4e7/2 + e4)

= 53, 61622

dan seperti yang tadi kita simpulkan, error-nya semakin kecil menjadi 0,01807.

Page 151: Iterasi Gauss

9.3. METODE COMPOSITE-SIMPSON 135

Prosedur ini dapat digeneralisir menjadi suatu formula sebagai berikut

∫ b

af(x)dx =

n/2∑

j=1

∫ x2j

x2j−2

f(x)dx

=

n/2∑

j=1

h

3[f(x2j−2) + 4f(x2j−1) + f(x2j)] −

h5

90f (4)(ξj)

(9.9)

dimana h = (b−a)/n dan xj = a+jh, untuk j = 1, ..., n/2, dengan x0 = a dan xn = b. Formula

ini dapat direduksi menjadi

∫ b

af(x)dx =

h

3

f(x0) + 2

(n/2)−1∑

j=1

f(x2j) + 4

n/2∑

j=1

f(x2j−1) + f(xn)

− h5

90

n/2∑

j=1

f (4)(ξj) (9.10)

Formula ini dikenal sebagai metode Composite Simpson.

Page 152: Iterasi Gauss

136 BAB 9. INTEGRAL NUMERIK

Tugas#4

1. Hitunglah integral-integral berikut ini dengan metode Composite Simpson!

a.

∫ 2

1x lnxdx, n = 4

b.

∫ 2

0

2

x2 + 4dx, n = 6

c.

∫ 3

1

x

x2 + 4dx, n = 8

d.

∫ 2

−2x3exdx, n = 4

e.

∫ 3π/8

0tan xdx, n = 8

f.

∫ 5

3

1√x2 − 4

dx, n = 8

2. Tentukan nilai n dan h untuk mengevaluasi

∫ 2

0e2x sin 3xdx

dengan metode Composite Simpson, bila error yang ditolerir harus lebih kecil dari 10−4.

3. A particle of mass m moving through a fluid is subjected to a viscous resistance R, which is

a function of the velocity v. The relationship between the resistance R, velocity v, and time t is

given by the equation:

t =

∫ v(t)

v(t0)

m

R(u)du

Suppose that R(v) = −v√

v, for a particular fluid, where R is in newtons and v in meters/second.

If m = 10 kg and v(0) = 10 m/s, approximate the time required for the particle to slow to v = 5

m/s.

Page 153: Iterasi Gauss

Bab 10

Metode Newton

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.

10.1 Penyederhanaan

Metode Newton sangat populer dan powerfull untuk mencari akar suatu fungsi yang kon-

tinyu. Ada banyak jalan untuk memperkenalkan metode ini. Salah satunya bisa didahului

mulai dari deret Taylor atau polinomial Taylor. Suatu fungsi yang kontinyu dapat dinyatakan

dalam deret Taylor sebagai berikut

f(x) = f(x) + (x − x)f ′(x) +(x − x)2

2f ′′(ξ(x))

0 = f(x) + (p − x)f ′(x) +(p − x)2

2f ′′(ξ(p))

0 = f(x) + (p − x)f ′(x)

p − x = − f(x)

f ′(x)

p ≈ x − f(x)

f ′(x)

pn = pn−1 −f(pn−1)

f ′(pn−1), n ≥ 1

137

Page 154: Iterasi Gauss

138 BAB 10. METODE NEWTON

Gambar 10.1: Metode Newton

Demikianlah catatan singkat dari saya tentang metode Finite-Difference dengan ekstrapolasi

Richardson untuk problem linear. Saya cukupkan sementara sampai disini. Insya Allah akan

saya sambung dengan problem non-linear dan konsep ekstrapolasi. Kalau ada yang mau

didiskusikan, silakan hubungi saya melalui email: [email protected].

Page 155: Iterasi Gauss

Bab 11

Metode Monte Carlo

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.

11.1 Penyederhanaan

Kita awali pembahasan metode Monte Carlo dengan mengetengahkan contoh yang sangat

terkenal yaitu menghitung luas suatu lingkaran. Fugure 1 memperlihatkan lingkaran den-

gan radius r = 1 berada di dalam kotak bujursangkar. Luas lingkaran adalah πr2 = π(1)2 = π

sementara luas bujursangkar adalah (2)2 = 4. Rasio antara luas lingkaran dan luas bola adalah

ρ =luas lingkaran

luas bujursangkar=

π

4= 0, 7853981633974483 (11.1)

Jadi, dengan mengetahui nilai ρ, maka kita bisa menghitung luas lingkaran dengan cara

luas lingkaran = ρ × luas bujursangkar (11.2)

Bayangkan anda punya satu set permainan dart. Anda lemparkan sejumlah dart ke arah

lingkaran tadi. Misalnya, total dart yang menancap di papan dart ada 1024 buah. Sebanyak

812 dart berada di dalam lingkaran, dan yang lainnya di luar lingkaran. Rasio antara keduanya

ρ =dart di dalam lingkaran

total dart di dalam bujursangkar=

812

1024= 0, 79296875 (11.3)

139

Page 156: Iterasi Gauss

140 BAB 11. METODE MONTE CARLO

Gambar 11.1: Lingkaran dan bujursangkar

Gambar 11.2: Dart yang menancap pada bidang lingkaran dan bujursangkar

Dengan pendekatan ke persamaan (11.2) maka luas lingkaran adalah

luas lingkaran = ρ × luas bujursangkar

= 0, 79296875 × 4

= 3, 171875

Apakah angka ini make sense? Mungkin anda masih ragu. Sekarang mari kita coba hitung ni-

lai π dengan mengacu pada rumus di atas. Kita sepakati saja bahwa dart yang berada di dalam

lingkaran mesti memenuhi x2i + y2

i ≤ 1. Dalam perhitungan, semua dart diganti dengan bi-

langan acak (random number). Dari 1000 dart, yang masuk lingkaran ada 787 buah, sehingga,

mengacu persamaan (11.3)

ρ =787

1000= 0, 787

Page 157: Iterasi Gauss

11.1. PENYEDERHANAAN 141

Gambar 11.3: Dart yang menancap pada bidang 1/4 lingkaran dan bujursangkar

maka berdasarkan persamaan (11.1)

π = ρ × 4 = 0, 787 × 4 = 3, 148

Lumayan akurat bukan? Semakin banyak jumlah dart, semakin akurat nilai π yang anda per-

oleh.

Sekarang mari kita kembangkan metode Monte Carlo ini untuk menghitung luas suatu area

yang terletak di bawah garis kurva suatu fungsi f(x). Atau sebut saja menghitung integral

suatu fungsi f(x) yang dievaluasi antara batas a dan b. Luas kotak R yang melingkupi luas

bidang integral A adalah

R = (x, y) : a ≤ x ≤ b dan 0 ≤ y ≤ d (11.4)

dimana

d = maksimum f(x) , a ≤ x ≤ b (11.5)

Page 158: Iterasi Gauss
Page 159: Iterasi Gauss

Bab 12

Inversi

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.

12.1 Inversi Linear

Diketahui data eksperimen tersaji dalam tabel berikut ini

xi yi xi yi

1 1,3 6 8,82 3,5 7 10,13 4,2 8 12,54 5,0 9 13,05 7,0 10 15,6

Lalu data tersebut di-plot dalam sumbu x dan y. Sekilas, kita bisa melihat bahwa data yang

telah di-plot tersebut dapat didekati dengan sebuah persamaan garis, yaitu a1xi + a0. Artinya,

kita melakukan pendekatan secara linear, dimana fungsi pendekatan-nya adalah

P (xi) = a1xi + a0 (12.1)

Problemnya adalah berapakah nilai konstanta a1 dan a0 yang sedemikian rupa, sehingga posisi

garis tersebut paling mendekati atau bahkan melalui titik-titik data yang telah di-plot di atas?

143

Page 160: Iterasi Gauss

144 BAB 12. INVERSI

1 2 3 4 5 6 7 8 9 100

2

4

6

8

10

12

14

16

X

Y

Dengan kata lain, sebisa mungkin yi sama dengan P (xi) atau dapat diformulasikan sebagai

m∑

i=1

yi − P (xi) = 0 (12.2)

m∑

i=1

yi − (a1xi + a0) = 0 (12.3)

dimana jumlah data, m = 10. Suku yang berada disebelah kiri dinamakan fungsi error (error

function), yaitu

E(a0, a1) =m

i=1

yi − (a1xi + a0) (12.4)

Semua data yang diperoleh melalui eksperimen, fungsi error-nya tidak pernah bernilai nol. Ja-

di, tidak pernah didapatkan garis yang berhimpit dengan semua titik data ekperimen. Namun

demikian, kita masih bisa berharap agar fungsi error menghasilkan suatu nilai, dimana nilai

tersebut adalah nilai yang paling minimum atau paling mendekati nol. Harapan tersebut di-

wujudkan oleh metode least square dengan sedikit modifikasi pada fungsi error-nya sehingga

menjadi

E(a0, a1) =m

i=1

[yi − (a1xi + a0)]2 (12.5)

Agar fungsi error bisa mencapai nilai minimum, maka syarat yang harus dipenuhi adalah:

∂E(a0, a1)

∂ai= 0 (12.6)

dimana i = 0 dan 1, karena dalam kasus ini memang cuma ada a0 dan a1. Maka mesti ada dua

Page 161: Iterasi Gauss

12.1. INVERSI LINEAR 145

buah turunan yaitu:

∂E(a0, a1)

∂a0=

∂a0

m∑

i=1

[yi − (a1xi + a0)]2 = 0

2m

i=1

(yi − a1xi − a0)(−1) = 0

a0.m + a1

m∑

i=1

xi =m

i=1

yi (12.7)

dan

∂E(a0, a1)

∂a1=

∂a1

m∑

i=1

[yi − (a1xi + a0)]2 = 0

2m

i=1

(yi − a1xi − a0)(−xi) = 0

a0

m∑

i=1

xi + a1

m∑

i=1

x2i =

m∑

i=1

xiyi (12.8)

Akhirnya persamaan (12.7) dan (12.8) dapat dicari solusinya berikut ini:

a0 =

∑mi=1 x2

i

∑mi=1 yi −

∑mi=1 xiyi

∑mi=1 xi

m(∑m

i=1 x2i

)

− (∑m

i=1 xi)2 (12.9)

dan

a1 =m

∑mi=1 xiyi −

∑mi=1 xi

∑mi=1 yi

m(∑m

i=1 x2i

)

− (∑m

i=1 xi)2 (12.10)

Coba anda bandingkan kedua hasil di atas dengan rumus least square yang terdapat pada

buku Praktikum Fisika Dasar keluaran Departemen Fisika-UI. Mudah-mudahan sama per-

sis. OK, berdasarkan data ekperimen yang ditampilkan pada tabel diawal catatan ini, maka

didapat:

a0 =385(81) − 55(572, 4)

10(385) − (55)2= −0, 360 (12.11)

dan

a1 =10(572, 4) − 55(81)

10(385) − (55)2= 1, 538 (12.12)

Jadi, fungsi pendekatan-nya, P (xi), adalah

P (xi) = 1, 538xi − 0, 360 (12.13)

Solusi least square dengan pendekatan persamaan garis seperti ini juga dikenal dengan nama

lain yaitu regresi linear. Sedangkan nilai a0 dan a1 disebut koefisien regresi. Gambar di

bawah ini menampilkan solusi regresi linear tersebut berikut semua titik datanya

Tentu saja anda sudah bisa menduga bahwa selain regresi linear, mungkin saja terdapat regresi

Page 162: Iterasi Gauss

146 BAB 12. INVERSI

0 2 4 6 8 10−2

0

2

4

6

8

10

12

14

16 P(x) = 1.538*x − 0.36

parabola atau quadratik dimana fungsi pendekatannya berupa persamaan parabola, yaitu:

P (xi) = a2x2i + a1xi + a0 (12.14)

dimana koefisien regresinya ada tiga yaitu a0, a1 dan a2. Kalau anda menduga demikian, maka

dugaan anda benar! Bahkan sebenarnya tidak terbatas sampai disitu. Secara umum, fungsi

pendekatan, P (xi), bisa dinyatakan dalam aljabar polinomial berikut ini:

P (xi) = anxni + an−1x

n−1i + ... + a2x

2i + a1xi + a0 (12.15)

Namun untuk saat ini, saya tidak ingin memperluas pembahasan hingga regresi parabola, dan

polinomial. Saya masih ingin melibatkan peranan metode eliminasi gauss dalam menyele-

saikan problem least square seperti yang selalu saya singgung pada catatan-catatan kuliah

saya yang terdahulu. Nah, kalau metode eliminasi gauss hendak digunakan untuk mencari

solusi regresi linear, kita bisa mulai dari persamaan (12.7) dan (12.8), yaitu:

a0.m + a1

m∑

i=1

xi =m

i=1

yi

a0

m∑

i=1

xi + a1

m∑

i=1

x2i =

m∑

i=1

xiyi

Keduanya bisa dinyatakan dalam operasi matrik:

[

m∑m

i=1 xi∑m

i=1 xi∑m

i=1 x2i

] [

a0

a1

]

=

[

∑mi=1 yi

∑mi=1 xiyi

]

(12.16)

Kalau anda mengikuti catatan-catatan terdahulu, pasti anda tidak asing lagi dengan dengan

semua elemen-elemen matrik di atas. Semua sudah saya ulas pada catatan yang berjudul Ap-

likasi Elimininasi Gauss: Model Garis. Silakan anda lanjutkan perhitungan matrik tersebut

hingga diperoleh koefisien regresi a0 dan a1. Selamat mencoba!

Page 163: Iterasi Gauss

12.2. INVERSI NON-LINEAR 147

12.2 Inversi Non-Linear

Persamaan least squares linear adalah sebagai berikut:

[GtG]δm = Gtδd (12.17)

Persamaan least squares non-linear dapat dinyatakan sebagai berikut:

[GtG + λI]δm = Gtδd (12.18)

dimana G adalah matrik kernel, namun dia juga biasa dikenal dengan sebutan matrik Ja-

cobian, sementara λ adalah faktor pengali Lagrange, dan I adalah matrik identitas yang or-

denya disesuaikan dengan GtG. Adapun definisi δm dan δd akan dijelaskan pada bagian

akhir catatan ini.

Langkah-langkah untuk menyelesaikan problem least squares non-linear adalah:

1. Menentukan model, misal f(x) = xm

2. Menghitung jacobian, G. Caranya adalah menghitung turunan pertama dari model ter-

hadap model-parameter, m. Sesuai permisalan pada point 1, didapat

A =∂f(m)

∂m= xmln(x) (12.19)

3. Membuat perhitungan simulasi, misalnya ditentukan m = 2. Nilai m adalah nilai yang

hendak dicari. Dalam simulasi, nilai m dianggap sudah diketahui bahkan ditentukan.

Lalu hitunglah f(x) = xm dengan x bergerak dari x = 1, 2, 3.., 10. Jadi, nanti akan didapat

10 buah f(x). Mau lebih dari 10 juga boleh, terserah saja. Hasil hitungannya dikasih

nama d, jadi d = f(x). Karena dalam simulasi ini x-nya bergerak hanya sampai 10, maka

hasilnya mesti ada 10 d, yaitu d1, d2, .., d10.

4. Buatlah perhitungan untuk m sembarang, misal mula-mula dipilih m = 5. Ini adalah ni-

lai awal dari m yang akan diiterasikan sedemikian rupa hingga nantinya m akan menuju

2 sesuai dengan nilai m pada simulasi (point 3). Bagusnya dibedakan penulisannya, atau

tulis saja m0 = 5, dimana m0 maksudnya adalah m mula-mula. Lalu hitung lagi nilai

f(x) = xm0

. Sekarang dinamakan dc = f(x). Jangan lupa bahwa saat perhitungan, nilai

x bergerak dari 1 sampai 10. Jadi, nanti didapat 10 dc.

5. Hitunglah δd, dimana δd = dc − d. Sebelumnya sudah dinyatakan bahwa dc ada 10 buah,

demikian juga d ada 10 buah, maka δd harus ada 10 buah juga.

6. Selanjutnya hitung ||δd|| yang rumusnya seperti ini

||δd|| =1

NΣ(dc − d)2 =

1

NΣδd2 (12.20)

dimana N = 10 karena δd-nya ada 10. Rumus ini tidak mutlak harus demikian, anda bisa

juga menggunakan norm 2, ℓ2.

Page 164: Iterasi Gauss

148 BAB 12. INVERSI

7. Tentukan nilai epsilon, ǫ, misal ǫ = 0.000001. Lalu lakukan evaluasi sederhana. Cek,

apakah ||δd|| < ǫ ? Pasti awalnya ||δd|| > ǫ, kenapa? Karena m 6= m0. Kalau begini

situasinya, δd yang ada 10 biji itu dimasukan kedalam proses berikutnya.

8. Hitunglah operasi matriks berikut ini untuk mendapatkan δm

[GtG + λI]δm = Gtδd (12.21)

dengan λ-nya dikasih nilai sembarang antara 0 dan 1, misalnya λ = 0.005. Perhitungan

ini bisa diselesaikan dengan metode eliminasi gauss.

9. Ganti nilai m0 menjadi m1 sesuai dengan rumus

m1 = m0 + δm (12.22)

Nah, m1 ini dimasukan ke proses yang dijelaskan pada point 4 kemudian proses diu-

langi hingga point 9, begitu seterusnya. Dari sinilah dimulai proses iterasi. Iterasi akan

berhenti bila ||δd|| < ǫ. Pada saat itu, nilai mk akan mendekati m = 2 sesuai dengan m

simulasi.

Selamat mencoba! Saya juga telah menulis beberapa persamaan non-linear sebagai bahan

latihan. Lihat saja di Latihan 1. Tapi tolong diperiksa lagi, apakah jacobiannya sudah be-

nar atau ada kekeliruan. Selanjutnya, kalau ada pertanyaan atau komentar, silakan kirim ke

[email protected]

Page 165: Iterasi Gauss

Daftar Pustaka

[1] Burden, R.L. and Faires, J.D., (2001), Numerical Analysis, Seventh Edition, Brooks/Cole,

Thomson Learning Academic Resource Center.

[2] Haliday and Resnick, (2001), Fundamental of Physics, Brooks/Cole, Thomson Learning Aca-

demic Resource Center.

149

Page 166: Iterasi Gauss
Page 167: Iterasi Gauss

Indek

Positive-definite, 5

Transpose, 3

Tridiagonal, 4

Vektor-baris, 6

Vektor-kolom, 6

151