Metode Iterasi Jacobi merupakan salah satu bidang analisis numerik yang digunakan untuk menyelesaikan permasalahan persamaan linear dan sering dijumpai dalam berbagai disiplin ilmu. Metode Iterasi Jacobi merupakan salah satu metode tak langsung, yaitu bermula dari suatu hampiran penyelesaian awal dan kemudian berusaha memperbaiki hampiran dalam tak berhingga namun langkah konvergen. Metode Iterasi Jacobi ini digunakan untuk menyelesaikan persamaan linear berukuran besar dan proporsi koefisien nolnya besar.
Metode ini ditemukan oleh matematikawan yang berasal dari Jerman, Carl Gustav Jacob Jacobi. Penemuan ini diperkirakan pada tahun 1800-an.
Kalau kita mengubah dalam Sistem Persamaan Linear, maka dapat ditulis sebagai berikut
Kemudian, diketahui bahwa A = D + ( L + U ) {\displaystyle A=D+\left({L+U}\right)} , di mana D {\displaystyle D} merupakan matriks diagonal, L {\displaystyle L} merupakan matriks segitiga bawah, dan U {\displaystyle U} merupakan matriks segitiga atas.
Kemudian, persamaan di atas dapat diubah menjadi:
Kemudian,
Jika ditulis dalam aturan iteratif, maka metode Jacobi dapat ditulis sebagai:
di mana k {\displaystyle k} merupakan banyaknya iterasi. Jika x ( k ) {\displaystyle x^{(k)}} menyatakan hampiran ke- k {\displaystyle k} penyelesaian SPL, maka x ( 0 ) {\displaystyle x^{(0)}} adalah hampiran awal.
Jadi
menjadi sistem kuadrat dari nilai n dalam persamaan linier yaitu:
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ] , x = [ x 1 x 2 ⋮ x n ] , b = [ b 1 b 2 ⋮ b n ] . {\displaystyle A={\begin{bmatrix}a_{11}&a_{12}&\cdots &a_{1n}\\a_{21}&a_{22}&\cdots &a_{2n}\\\vdots &\vdots &\ddots &\vdots \\a_{n1}&a_{n2}&\cdots &a_{nn}\end{bmatrix}},\qquad \mathbf {x} ={\begin{bmatrix}x_{1}\\x_{2}\\\vdots \\x_{n}\end{bmatrix}},\qquad \mathbf {b} ={\begin{bmatrix}b_{1}\\b_{2}\\\vdots \\b_{n}\end{bmatrix}}.}
Setelah itu nilai A dapat diuraikan menjadi komponen diagonal D, bagian segitiga bawah L dan bagian segitiga atas U:
INPUT:
OUTPUT:
Input: initial guess x ( 0 ) {\displaystyle x^{(0)}} to the solution, (diagonal dominant) matrix A {\displaystyle A} , right-hand side vector b {\displaystyle b} , convergence criterion Output: solution when convergence is reached Comments: pseudocode based on the element-based formula above k = 0 {\displaystyle k=0} while convergence not reached do for i := 1 step until n do σ = 0 {\displaystyle \sigma =0} for j := 1 step until n do if j ≠ i then σ = σ + a i j x j ( k ) {\displaystyle \sigma =\sigma +a_{ij}x_{j}^{(k)}} end end x i ( k + 1 ) = 1 a i i ( b i − σ ) {\displaystyle x_{i}^{(k+1)}={{\frac {1}{a_{ii}}}\left({b_{i}-\sigma }\right)}} end k = k + 1 {\displaystyle k=k+1} end
Penggunaan algoritme Metode Iterasi Jacobi dalam bentuk matlab. Matlab merupakan program pengolahan data numerik.
MEtode ini akan bernilai konvergen jika matriksnya merupakan matriks dominan secara diagonal, yaitu apabila unsur diagonal pada kolom tersebut lebih besar dari penjumlahan unsur-unsur lainnya pada kolom tersebut.
Sistem linear dari bentuk A x = b {\displaystyle Ax=b} dengan perkiraan awal x ( 0 ) {\displaystyle x^{(0)}} diberikan oleh
Kami menggunakan persamaan x ( k + 1 ) = D − 1 ( b − ( L + U ) x ( k ) ) {\displaystyle x^{(k+1)}=D^{-1}(b-(L+U)x^{(k)})} , dijelaskan di atas, untuk memperkirakan x {\displaystyle x} . Pertama, kami menulis ulang persamaan dalam bentuk yang lebih mudah D − 1 ( b − ( L + U ) x ( k ) ) = T x ( k ) + C {\displaystyle D^{-1}(b-(L+U)x^{(k)})=Tx^{(k)}+C} , dimana T = − D − 1 ( L + U ) {\displaystyle T=-D^{-1}(L+U)} dan C = D − 1 b {\displaystyle C=D^{-1}b} . Dari nilai-nilai yang diketahui
we determine T = − D − 1 ( L + U ) {\displaystyle T=-D^{-1}(L+U)} as
Further, C {\displaystyle C} is found as
Dengan T {\displaystyle T} dan C {\displaystyle C} dihitung, kami perkirakan x {\displaystyle x} sebagai x ( 1 ) = T x ( 0 ) + C {\displaystyle x^{(1)}=Tx^{(0)}+C} :
Hasil iterasi berikutnya
Proses ini diulangi sampai konvergensi (yaitu, sampai ‖ A x ( n ) − b ‖ {\displaystyle \|Ax^{(n)}-b\|} kecil). Solusi setelah 25 iterasi adalah
Contohnya kita diberi sistem linier berikut:
Bila kita memilih (0, 0, 0, 0) sebagai pendekatan awal, maka solusi perkiraan pertama diberikan oleh
Dengan menggunakan perkiraan yang diperoleh, prosedur iteratif diulangi sampai akurasi yang diinginkan tercapai. Berikut ini adalah solusi yang diperkirakan setelah lima iterasi.
Solusi yang tepat dari sistem ini adalah (1, 2, −1, 1).
Prosedur numerik berikut hanya melakukan iterasi untuk menghasilkan vektor solusi.
def jacobi(A, b, x_init, epsilon=1e-10, max_iterations=500): D = np.diag(np.diag(A)) LU = A - D x = x_init for i in range(max_iterations): D_inv = np.diag(1 / np.diag(D)) x_new = np.dot(D_inv, b - np.dot(LU, x)) if np.linalg.norm(x_new - x) < epsilon: return x_new x = x_new return x # problem data A = np.array([ [5, 2, 1, 1], [2, 6, 2, 1], [1, 2, 7, 1], [1, 1, 2, 8] ]) b = np.array([29, 31, 26, 19]) # you can choose any starting vector x_init = np.zeros(len(b)) x = jacobi(A, b, x_init) print("x:", x) print("computed b:", np.dot(A, x)) print("real b:", b)
Menghasilkan keluaran:
x: [3.99275362 2.95410628 2.16183575 0.96618357] computed b: [29. 31. 26. 19.] real b: [29 31 26 19]