Dosen Pengampu : Prof. Dr. Suhartono, M.Kom
Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Jurusan : Teknik Informatika
Fakultas : Sains dan Teknologi
◀️Matrik Tridiagonal▶️ |
Metode eliminasi Gauss merupakan metode yang sederhana untuk digunakan khususnya jika semua koefisien bukan nol berkumpul pada diagonal utama dan beberapa diagonal sekitarnya. Suatu sistem yang bersifat demikian disebut sebagai banded dan banyaknya diagonal yang memuat koefisien bukan nol disebut sebagai bandwidth. Contoh khusus yang sering dijumpai adalah matriks tridiagonal yang memiliki bandwidth tiga.
Proses eliminasi untuk matriks tridiagonal bersifat trivial karena dengan membentuk sebuah subdiagonal tambahan, proses substitusi mundur segera dapat dilakukan. Bentuk matriks tridiagonal disajikan pada Persamaan (6.19).
Bentuk sistem persamaan linier menjadi matriks pada Persamaan (6.21).
Lakukan foward sweep. Setiap elemen diagonal l dieliminasi menggunakan reduksi baris
Berdasarkan algoritma tersebut, kita dapat membangun sebuah fungsi pada R
. Fungsi penyelesaian matriks tridiagonal disajikan sebagai berikut:
tridiagmatrix <- function (L, D, U, b){
n <- length (D)
L <- c(NA , L)
## forward sweep
U[1] <- U[1] / D[1]
b[1] <- b[1] / D[1]
for(i in 2:(n - 1)){
U[i] <- U[i] / (D[i] - L[i] * U[i - 1])
b[i] <- (b[i] - L[i] * b[i - 1]) /
(D[i] - L[i] * U[i - 1])
}
b[n] <- (b[n] - L[n] * b[n - 1])/(D[n] - L[n] * U[n - 1])
## backward sweep
x <- rep.int (0, n)
x[n] <- b[n]
for(i in (n - 1) :1)
x[i] <- b[i] - U[i] * x[i + 1]
return (x)
}
Contoh 6.5 Selesaikan sistem persamaan berikut menggunakan fungsi tridiagmatrix()
dan fungsi gauss_jordan()
!
Jawab:
Langkah pertama untuk menyelesaikannya, kita harus merubah persamaan tersebut kedalam bentuk matriks
Untuk menyelesaikan persamaan tersebut menggunakan fungsi tridiagmatrix()
, kita perlu membentuk vektor diagonal l ,d,u,dan b .
l <- u <- c(4, 2, 3); d <- c(3, 5, 5, 5)
b <- c(20, 28, 18, 18)
Setelah terbentuk, vektor tersebut dapat langsung dimasukkan ke dalam fungsi tridiagmatrix()
.
tridiagmatrix(L=l, D=d, U=u, b=b)
## [1] 4 2 1 3
Untuk menyelesaikannya menggunakan fungsi gauss_jordan()
, kita perlu membentuk augmented matrix-nya terlebih dahulu.
m <- matrix(c(3,4,0,0,4,5,2,0,
0,2,5,3,0,0,3,5,
20,28,18,18), nrow=4)
gauss_jordan(m)