Lembaga: “Universitas Islam Negeri Maulana Malik Ibrahim Malang”
Fakultas: “Sains dan Teknologi”
Jurusan: “Teknik Informatika”
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)).
⎡ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ a 1 , 1 a 1 , 2 a 1 , 3 ⋯ a 1 , n b 1 a 2 , 1 a 2 , 2 a 2 , 3 ⋯ a 2 , n b 2 a 3 , 1 a 3 , 2 a 3 , 3 ⋯ a 3 , n b 3 ⋮ ⋮ ⋮ ⋱ ⋮ a m , 1 a m , 2 a m , 3 ⋯ a m , n b n ⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⟹ ⎡ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ 1 0 0 ⋯ 0 d 1 0 1 0 ⋯ 0 d 2 0 0 1 ⋯ 0 d 3 ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ 1 d n ⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦
(6.17)
Sehingga penyelesaian persamaan linier tersebut adalah nilai d 1 , d 2 , d 3 , … , d n dan atau:
x 1 = d 1 x 2 = d 2 x 3 = d 3 ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ x n = d n
Dari algoritma tersebut, kita dapat membangun sebuah fungsi menggunakan R. Fungsi tersebut adalah sebagai berikugauss_jordan <- function (a){ m <- nrow (a) n <- ncol (a) piv <- 1
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)
}
}
if(i != row_curr)
a <- swap_row(a, i, row_curr)
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