Lembaga: “Universitas Islam Negeri Maulana Malik Ibrahim Malang”

Fakultas: “Sains dan Teknologi”

Jurusan: “Teknik Informatika”

Eliminasi Gauss-Jordan

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

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