Dosen Pengampu : Prof. Dr. Suhartono, M.Kom
Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Jurusan : Teknik Informatika
Fakultas : Sains dan Teknologi
Perhatikan ilutrasi berikut :
Berbeda dengan metode eliminasi Gauss yang telah dijelaskan pada Chapter 6.3.1, metode eliminasi Gauss-Jordan membentuk matriks menjadi bentuk reduced row echelon form. Metode ini merupakan pengembangan metode eliminasi Gauss, dimana matriks sebelah kiri augmented matrix diubah menjadi matriks diagonal (lihat Persamaan (6.17)
Jawab:
Augmented matrix dari persamaan linier tersebut adalah sebagai berikut:
(1). Masukkan matriks A dan vektor B beserta ukurannya n
(2). Buat augmented matrix [A|B] namakan dengan A
(3). Untuk baris ke- i dimana i=1 s/d n
Perhatikan apakah nilai ai.i sama dengan nol:
Bila ya: pertukakan baris ke- i dan baris ke- i+k≤n , dimana ai+ki tidak sama dengan nol, bila tidak ada berarti perhitungan tidak bisa dilanjutkan dan proses dihentikan dengan tanpa penyelesaian.
Bila tidak: lanjutkan
Jadikan nilai diagonalnya menjadi satu dengan cara untuk setiap kolom k dimana k= s/d n+1 ,hitung ai.k=ai.kai.i
(4). Untuk baris ke- j , dimana j=i+1 s/d n . Lakukan operasi baris elementer untuk kolom k dimana k=1 s/d n .
Hitung c=aj.i
Hitung aj.k=aj.k−c.ai.k
(5). Penyelesaian untuk i=n s/d 1 disajikan pada Persamaan (6.18)
Dari algoritma tersebut, kita dapat membangun sebuah fungsi menggunakan R
. Fungsi tersebut adalah sebagai berikut:
gauss_jordan <- function (a){
m <- nrow (a)
n <- ncol (a)
piv <- 1
# cek elemen diagonal utama apakah bernilai nol
for(row_curr in 1:m){
if(piv <= n){
i <- row_curr
while(a[i, piv] == 0 && i < m){
i <- i + 1
if(i > m){
i <- row_curr
piv <- piv + 1
if(piv > n)
return (a)
}
}
# jika diagonal utama bernilai nol,lakukan row swapping
if(i != row_curr)
a <- swap_row(a, i, row_curr)
# proses pembentukan matriks reduced row echelon form
piv_val <- a[row_curr , piv]
a <- scale_row (a, row_curr , 1 / piv_val)
for(j in 1: m){
if(j != row_curr){
k <- a[j, piv]/a[row_curr, piv]
a <- replace_row (a, row_curr, j, -k)
}
}
piv <- piv + 1
}
}
return (a)
}
Dengan menggunakan fungsi gauss_jordan()
, sistem persamaan linier pada Contoh 6.3:
(m <- matrix(c(1,2,1,4,3,8), nrow=2))
## [,1] [,2] [,3]
## [1,] 1 1 3
## [2,] 2 4 8
gauss_jordan(m)
## [,1] [,2] [,3]
## [1,] 1 0 2
## [2,] 0 1 1
Contoh 6.4 Dengan menggunakan fungsi gauss_jordan()
, carilah penyelesaian sistem persamaan linier pada Contoh 6.1 dan Contoh 6.2:
Jawab:
Untuk Contoh 6.1:
am <- c(1,1,2,
1,2,1,
1,-1,2,
6,2,10)
m <- matrix(am, nrow=3)
gauss_jordan(m)
## [,1] [,2] [,3] [,4]
## [1,] 1 0 0 1
## [2,] 0 1 0 2
## [3,] 0 0 1 3
Untuk Contoh 6.2:
m <- matrix(c(2,3,1,1,2,-5,
-1,-2,4,1,1,3),
nrow=3)
gauss_jordan(m)
## [,1] [,2] [,3] [,4]
## [1,] 1 0 0 1
## [2,] 0 1 0 2
## [3,] 0 0 1 3