Dosen Pengampu : Prof.Dr.Suhartono,M.Kom
Lembaga : UIN Maliki Malang
Jurusan : Teknik Informatika
Fakultas : Sains Dan Teknologi
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.
Masukkan matriks A dan vektor B beserta ukurannya n
Buat augmented matriks [A][B] namakan dengan A
Untuk baris ke-i dimana i=1 s/d n
-Perhatikan apakah nilai ai.i sama dengan nol:
Bila ya: pertukaran baris ke-i dan baris ke-i+k<=n, dimana ai+k.i 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=1 s/d n+1, hitung ai.k=ai.k/ai.i
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)
}(cars)
Dengan menggunakan fungsi gauss_jordan(),
(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