Nama : Ahmad Fadhli Dzilikrom Nim : 220605110078 kelas : A Mata kuliah : Linear Algebra Dosen pengampuh : Prof. Dr. Muhammad Suhartono, M.Kom Jurusan : Teknik Informatika Fakultas : Sains dan Teknologi Universitas : Maulana Malik Ibrahim Malang — Dalam metode iterasi untuk menyelesaikan matriks, kita dapat memulai dengan premis bahwa terdapat matriks A, vektor x, dan vektor b, sehingga Ax = b. Dalam metode Jacobi, kita dapat mengamati bahwa terdapat matriks R dan matriks D yang memiliki hubungan A = R + D. Maka akan kita dapatkan persamaan yang digunakan sebagai acuan iterasi Jacobi. Di sini, matriks D adalah matriks diagonal yang memiliki elemen diagonal yang sama dengan diagonal utama dari matriks A. Invers dari matriks D dapat disederhanakan menjadi matriks diagonal yang elemen diagonal utamanya diperoleh dengan membagi satu oleh elemen diagonal utama dari matriks A. Matriks R adalah matriks yang memiliki struktur yang identik dengan matriks A, namun dengan diagonal utama yang bernilai nol. Suatu iterasi dikatakan konvergen jika jumlah kuadrat dari vektor x^(n+1) dan vektor x^(n) semakin mengecil.Suatu persamaan linier yang hendak diselesaikan dengan menggunakan metode iterasi Jacobi harus memenuhi syarat nilai elemen diagonal utama matriks harus lebih dominan.
Langkah awal yang harus dilakukan adalah menyiapkan matriks A, vektor b, dan vektor x (nilai estimasi awal).
(A <- matrix(c(5,2,1,2,7,3,3,4,8), 3))
## [,1] [,2] [,3]
## [1,] 5 2 3
## [2,] 2 7 4
## [3,] 1 3 8
(b <- c(40,39,55))
## [1] 40 39 55
(x <- rep(0,3))
## [1] 0 0 0
Kita peroleh invers matriks D
(Dinv <- diag(1/diag(A)))
## [,1] [,2] [,3]
## [1,] 0.2 0.0000000 0.000
## [2,] 0.0 0.1428571 0.000
## [3,] 0.0 0.0000000 0.125
Siapkan matriks R
(R<-A-diag(diag(A)))
## [,1] [,2] [,3]
## [1,] 0 2 3
## [2,] 2 0 4
## [3,] 1 3 0
Dengan Iterasi 1 maka kita buat kodingan seperti berikut :
(x1 <- Dinv %*% (b-R%*%x))
## [,1]
## [1,] 8.000000
## [2,] 5.571429
## [3,] 6.875000
Iterasi 2
(x2 <- Dinv %*% (b-R%*%x1))
## [,1]
## [1,] 1.6464286
## [2,] -0.6428571
## [3,] 3.7857143
Iterasi 3
(x3 <- Dinv %*% (b-R%*%x2))
## [,1]
## [1,] 5.985714
## [2,] 2.937755
## [3,] 6.910268
Jumlah akar kuadrat dihitung
sqrt(sum(x3-x2)^2)
## [1] 11.04445
Kita juga bisa menggunakan algoritma iterasi Jacobi dengan menggunakan sintaks berikut serta contoh penggunaannya
jacobi <- function(a, b, tol=1e-7, maxiter=100){
n <- length(b)
iter <- 0
Dinv <- diag(1/diag(a))
R <- a-diag(diag(a))
x <- rep(0,n)
x_new <- rep(tol, n)
while(sqrt(sum(x_new-x)^2)>tol){
if(iter>maxiter){
warning("iterasi maksimum tercapai")
break
}
x <- x_new
x_new <- Dinv %*% (b - R %*% x)
iter <- iter+1
}
return(list(X = x_new, iter=iter))
}
Contoh penggunaan
jacobi(A,b)
## $X
## [,1]
## [1,] 4
## [2,] 1
## [3,] 6
##
## $iter
## [1] 62
Source : https://bookdown.org/moh_rosidi2610/Metode_Numerik/linearaljabar.html#jacobiiter