Pada sub-chapter ini kita akan menggunakan operasi baris elementer yang telah dijelaskan pada Chapter 2.5. Terdapat dua topik yang akan dibahas pada sub-chapter ini, yaitu: row echelon form termasuk reduced row echelon form dan matriks tridiagonal.
Eliminasi Gauss merupakan sebuah cara untuk mencari penyelesaian sistem persamaan linier. Ide dasar dari eliminasi Gauss adalah melakukan operasi matematika pada baris matriks (lihat Chapter 2.5) dan melanjutkannya sampai hanya tersisa satu variabel saja. Kita dapat melakukan lebih dari satu operasi baris elementer pada proses elmininasi ini (contoh: mengalikan sebuah baris dengan konstanta dan menjumlahkan hasilnya pada baris lain).
Sebuah matriks merupakan row echelon form jika matriks tersebut memenuhi beberapa kondisi:
Angka bukan nol pertama dari kiri (leading coefficient) selalu di sebelah kanan angka bukan nol pertama pada baris di atasnya.
Baris yang terdiri dari semua nol ada di bagian bawah matriks.
Misalkan terdapat persamaan linier seperti yang ditunjukkan pada Persamaan (6.10).
dimana:
matriks A merupakan matriks koefisien / Jacobian
vaktor X merupakan vaktor variabel
vektor B merupakan vektor konstanta
matriks pada Persamaan (6.11) dapat diubah menjadi augmented matrix, yaitu: perluasan matriks A dengan menambahkan vektor B pada kolom terakhirnya.
Teorema 6.1 (spltheorem) Suatu sistem persamaan linier mempunyai penyelesaian tunggal bila memenuhi syarat-syarat sebagai berikut:
ukuran persamaan linier simultan bujursangkar (jumlah persamaan sama dengan jumlah variabel bebas).
sistem persamaan linier non-homogen di mana minimal ada satu nilai vektor konstanta BB tidak nol atau terdapat bn≠0bn≠0.
Determinan dari matriks koefisiensistem persamaan linier tidak sama dengan nol.
Untuk memperoleh penyelesaian sistem persamaan linier, Persamaan (6.13) perlu dilakukan operasi baris elementer.
Algoritma Row Echelon Form
Masukkan matriks AA, dan vektor BB beserta ukurannya nn
Buat augmented matrix [A|B][A|B] namakan dengan AA
Untuk baris ke-ii dimana i=1i=1 s/d nn, perhatikan apakah nilai ai,jai,j sama dengan nol. a) Bila iya, lakukan row swapping antara baris ke-ii dan baris ke-i+k≤ni+k≤n, dimana ai+k,jai+k,j tidak sama dengan nol. Bila tidak ada berarti perhitungan tidak bisa dilanjutkan dan proses dihentikan dengan tanpa penyelesaian, b) Bila tidak, lanjutkan.
Untuk baris ke-jj, dimana j=i+1j=i+1 s/d nn, lakukan operasi baris elementer:a) Hitung c=aj,iai,ic=aj,iai,i, b) untuk kolom kk, dimana k=1k=1 s/d n+1n+1, hitung aj,k=aj,k−c.ai,kaj,k=aj,k−c.ai,k.
Hitung akar, untuk i=ni=n s/d 1 (bergerak dari baris pertama) menggunakan Persamaan (6.16).
Berdasarkan algoritma tersebut, kita dapat menyusun fungsi pada R
untuk menyelesaikan sistem persamaan linier menggunakan matriks row echelon form. Fungsi yang akan dibentuk hanya sampai pada algoritma ke-4. Proses substitusi akan dilakukan secara manual. Berikut adalah sintaks yang digunakan:
ref_matrix <- function(a){
m <- nrow(a)
n <- ncol(a)
piv <- 1
# cek elemen diagonal 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 bernilai nol, lakukan row swapping
if(i != row_curr)
a <- swap_row(a, i, row_curr)
# proses triangulasi untuk membentuk matriks segitiga atas
for(j in row_curr:m)
if(j != row_curr){
c <- a[j, piv]/a[row_curr, piv]
a <- replace_row(a, row_curr, j, -c)
}
piv <- piv+1
}
}
return(a)
}
Dengan menggunakan fungsi ref_matrix()
, kita dapat membentuk matriks row echelon form pada Contoh 6.1.
am <- c(1,1,2,
1,2,1,
1,-1,2,
6,2,10)
(m <- matrix(am, nrow=3))
## [,1] [,2] [,3] [,4]
## [1,] 1 1 1 6
## [2,] 1 2 -1 2
## [3,] 2 1 2 10
ref_matrix(m)
## [,1] [,2] [,3] [,4]
## [1,] 1 1 1 6
## [2,] 0 1 -2 -4
## [3,] 0 0 -2 -6