Professional Documents
Culture Documents
5
(LANJUTAN)
Mengenai :
1. Metode Iterasi Jacobi
Pendahuluan
Metode penyelesaian persamaan linear pada topik sebelumnya disebut metode
langsung, sedangkan metode yang akan dibahas pada topik ini adalah metode iterasi. Metode
ini tidak selalu berhasil. Agar berhasil, setiap persamaan harus memenuhi satu syarat, yaitu:
semua elemen diagonal melebihi elemen lain dalam persamaan tersebut. Metode ini
biasanya digunakan untuk sistem persamaan dengan banyak elemen matriks yang bernilai nol.
Metode ini juga dapat digunakan untuk menyelesaikan sistem persamaan tidak linier. Dua
metode iterasi yang akan dibahas adalah dua metode yang hampir sama, yaitu me tode Jacobi
dan metode Gauss Seidel.
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 Jakob
Jacobi. Penemuan ini diperkirakan pada tahun 1800-an.
TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)
Sebagai gambaran penyelesaian dengan metode iterasi Jacobi, maka tinjau sistem 3
persamaan dengan 3 variable yang tidak diketahui:
a1 x + b1 y + c1 z = d1
a2 x + b2 y + c2 z = d2
a3 x + b3 y + c3 z = d3
Kita mulai dengan men-set nilai awal x,y, dan z sebagai nol. Selesaikan x, y, dan z sebagai
variabel lain, yaitu:
(d1 − b1 y − c1 z)
x=
a1
(d2 − a2 x − c2 z)
y=
b2
(d3 − a3 x − b3 y)
z=
c3
Ulangi proses dengan cara yang sama, sehingga nilai iterasi ke-n adalah x (n), y (n), z (n):
xin − xin−i
εa = | | 100% < εs
xin
Selesaikan sistem persamaan berikut dengan Metode Iterasi Jacobi dengan batas toleransi
0.00001 atau 1e-5
−12x + y − 8z = −80
x − 6y + 4z = 13
−2x − y + 10z = 90
• Perhitungan manual
Solusi:
(−80 − y + 8z)
x=
−12
(13 − x − 4z)
y=
−6
(90 + 2x + y)
z=
10
Hitungan dilanjutkan dengan prosedur di atas, sampai diperoleh kesalahan yang relatif
kecil (terhadap ketelitian yang diharapkan). Berikut ini adalah tabel dari hasil itungan.
Iterasi x y z
0 0 0 0
1 6,66667 -2,16667 9
Sampai iterasi ke 10 kesalahan hitungan sudah cukup kecil sehingga diperoleh hasil
x = 0,6517; y = 4,3166; dan z = 9,562
(d2 − a2 x − c2 z)
y=
b2
(d3 − a3 x − b3 y)
z=
c3
Nilai diatas adalah nilai awal x (0), y (0), z (0). Lanjutkan dengan nilai awal y (0) dan z (0)
dari persamaan pertama, yaitu:
(d1 − b1 y (0) − c1 z (0))
x (1) =
a1
Dengan cara yang sama, hitung z (1) dengan menggunakan nilai baru x (1)dan y (1)
Kemudian, dengan menggunakan nilai baru x (1), y (1), z (1), lakukan iterasi berikutnya
(d1 − b1 y (1) − c1 z (1))
x (2) =
a1
Dengan cara menggunakan metode Gauss Seidel akan diperoleh lebih cepat dari pada metode
Jacobi. Contoh penyelesaian 3 persamaan linear 3 variabel dengan metode gauss seidel
Contoh 5.2:
Selesaikan sistem persamaan berikut dengan metode Gauss-Seidel hingga iterasi ke 2 dengan
batas toleransi 0.001 atau 1e-3
3x + y − z = 5
4x + 7y − 3z = 20
2x − 2y + 5z = 10
• Perhitungan manual
Solusi:
(5 − y + z)
x=
3
(20 − 4x + 3z)
y=
7
(10 − 2x + 2y)
z=
5
Iterasi kedua: gunakan y (1) = 1,90476 dan z (1) = 2,09524 di persamaan pertama
(5 − 1,90476 + 2,09524)
x (2) = = 1,73016
3
1,73016 − 1,66667
εx = 100% = 3,67%
1,73016
2,76644 − 2,90476
εy = 100% = 31,15%
2,76644
2,41451 − 2,09524
εz = 100% = 13,22%
2,41451
0 0 0 0 - - -
for i in range(M.shape[0]):
row = ["{}*x{}".format(M[i, j], j + 1) for j in
range(M.shape[1])]
print(" + ".join(row), "=", l[i])
print()
k = np.zeros_like(l)
for it_count in range(batas_iter):
print("Solusi ke ",it_count," :",k)
k_new = np.zeros_like(k)
for i in range(M.shape[0]):
s1 = np.dot(M[i, :i], k[:i])
s2 = np.dot(M[i, i+1:], k[i+1:])
# Solusi
k_new[i]=(l[i] - s1- s2)/M[i, i]
print("\nSolusi: ")
print(k)
error = np.dot(M,k) - 1
print("\nKesalahan:")
print(error)
# Mendefinisikan Matriks
M = np.array([[-12, 1, -8],
[1, -6, 4],
[-2, -1, 10]],float)
K = np.array([-80, 13, 90],float)
jacobi(M,K)
import numpy as np
def gauss_siedel(M,l):
batas_iter = 1000
x = np.zeros_like(l)
for it_count in range(1,batas_iter):
x_new = np.zeros_like(x)
print("Iterasi ke-{0}: {1}".format(it_count,x))
for i in range(M.shape[0]):
s1 = np.dot(M[i, :i], x_new[:i])
s2 = np.dot(M[i, i + 1:],x[i + 1:])
x_new[i] = (l[i] - s1 - s2) / M[i, i]
# Mendefinisikan matriks
M = np.array([[3, 1, -1],
[4, 7, -3],
[2, -2, 5]],float)
L = np.array([5, 20, 10],float)
gauss_siedel(M, L)
Maka jika program tersebut dijalankan akan menghasilkan output seperti Gambar 5.4
berikut
Catatan:
• iterasi Jacobi dan Gauss seidel memiliki contoh soal yang sama, yang
membedakan adalah cara iterasi masing-masing metode.
• Dengan menggunakan metode Gauss Seidel, proses iterasi lebih cepat
daripada proses iterasi menggunakan metode Jacobi.
• Program Gauss Seidel hanya berbeda pada baris ke 19, ketika xaw(j,1) pada
program Jacobi diganti dengan xhsl(j,1) pada program gauss siedel.
Referensi
Paulus, E. d. (2018). Perangkat Komputasi Numerik SCILAB Berbasis Open-Source: Algoritma
dan Penerapannya. Yogyakarta: Deepublish.
Rosidi, M. (2019, Desember 23). Metode Numerik Menggunakan R Untuk Teknik
Lingkungan. Diambil kembali dari https://bookdown.org/
Sanjaya WS, M. (2015). Metode Numerik Berbasis Python. Yogyakarta: Penerbit Gava Media.
Sasongko, B. S. (2010). Metode Numerik dengan Scilab. Yogyakarta: Penerbit ANDI.
Sholihun, & Fatomi, Z. S. (2021). Pemrograman dan Komputasi Numerik Menggunakan
Python. Yogyakarta: Gadjah Mada University Press.
Triatmodjo, B. (2006). Metode Numerik. Yogyakarta: Betta Offset.