You are on page 1of 15

PERSAMAAN LINEAR SIMULTAN

5
(LANJUTAN)

Mengenai :
1. Metode Iterasi Jacobi

2. Metode Iterasi Gauss-Seidel


3. Metode Iterasi Jacobi Menggunakan Python
4. Metode Iterasi Gauss-Siedel Menggunakan Python

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.

5.1 Metode Iterasi Jacobi

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

Nilai diatas adalah nilai awal x (0), y (0),z (0). Kemudian:

(d1 − b1 y (0) − c1 z (0))


x (1) =
a1

(d2 − a2 x (0) − c2 z (0))


y (1) =
b2

(d3 − a3 x (0) − b3 y (0))


z (1) =
c3

Kemudian, dengan menggunakan nilai x (1), y (1), z (1):


(d1 − b1 y (1) − c1 z (1))
x (2) =
a1

(d2 − a2 x (1) − c2 z (1))


y (2) =
b2

(d3 − a3 x (1) − b3 y (1))


z (2) =
c3

Ulangi proses dengan cara yang sama, sehingga nilai iterasi ke-n adalah x (n), y (n), z (n):

Integrated Laboratory Universitas Gunadarma 2


TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)

(d1 − b1 y (n) − c1 z (n))


x (n+1) =
a1

(d2 − a2 x (n) − c2 z (n))


y (n+1) =
b2

(d3 − a3 x (n) − b3 y (n))


z (n+1) =
c3

Iterasi hitungan terakhir setelah:


x1 n−1 ≈ x1 n , x2 n−1 ≈ x2 n , dan x3 n−1 ≈ x3 n

Atau telah dipenuhi kriteria berikut:

xin − xin−i
εa = | | 100% < εs
xin

Dengan 𝜀𝑠 adalah batasan ketelitian yang dikehendaki.


Berikut adalah contoh penyelesaian 3 persamaan 3 variabel menggunakan metode Jacobi
dengan cara perhitungan manual dan dengan menggunakan Python.
Contoh 5.1:

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

Integrated Laboratory Universitas Gunadarma 3


TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)

Iterasi pertama: dimulai dengan x=y=z=0


−80 − 0 + 0
x (1) = = 6,66667
−12
13 − 0 − 0
y (1) = = −2,16667
−6
90 + 0 + 0
z (1) = =9
10

Iterasi kedua: masukkan nilai x (1) = 6,66667 , y ( 1) = −2,16667 dan z (1) = 9


ke persamaan (1)
−80 − (−2,16667) + 8(9)
x (2) = = 0,48611
−12
13 − 6,66667 − 4(9)
y (2) = = 4,94445
−6
90 + 2(6,66667) + (−2,16667)
z (2) = = 10,116667
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

2 0,48611 4,94445 10,116667


3 0,33425 4,65879 9,5916667
4 0,66045 4,28348 9,5327315
5 0,6684 4,2985 9,5604
6 0,6512 4,3183 9,5635
7 0,6508 4,3175 9,5620
8 0,6517 4,3165 9,5619
9 0,6517 4,3165 9,562

10 0,6517 4,3166 9,562

Sampai iterasi ke 10 kesalahan hitungan sudah cukup kecil sehingga diperoleh hasil
x = 0,6517; y = 4,3166; dan z = 9,562

Integrated Laboratory Universitas Gunadarma 4


TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)

5.2 Metode Iterasi Gauss-Seidel


Metode ini hampir sama dengan metode iterasi Jacobi. Perbedaannya pada hasil nilai x
yang telah di hitung dan digunakan untuk menghitung pada x yang lain tanpa harus menunggu
iterasi selesai. Untuk menyelesaikan persamaan linear dengan metode ini, syarat yang harus
dipenuhi sama dengan syarat pada metode Jacobi.
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

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

Kemudian hitung y (1) dengan menggunakan nilai baru x (1)dan z (0)

(d2 − a2 x (1) − c2 z (0))


y (1) =
b2

Dengan cara yang sama, hitung z (1) dengan menggunakan nilai baru x (1)dan y (1)

(d3 − a3 x (1) − b3 y (1))


z (1) =
c3

Kemudian, dengan menggunakan nilai baru x (1), y (1), z (1), lakukan iterasi berikutnya
(d1 − b1 y (1) − c1 z (1))
x (2) =
a1

(d2 − a2 x (2) − c2 z (1))


y (2) =
b2

Integrated Laboratory Universitas Gunadarma 5


TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)

(d3 − a3 x (2) − b3 y (2))


z (2) =
c3

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 pertama: dimulai dengan x = y = z = 0


(5 − 0 + 0)
x (1) = = 1,66667
3

Gunakan nilai baru x untuk perhitungan selanjutnya, yaitu:


(20 − 4 (1,66667) + 3(0))
y (1) = = 1,90476
7

Gunakan x=3,1481 dan y=3,5407 untuk mencari z:

(10 − 2(1,66667) + 2(1,90476)


z (1) = = 2,09524
5

Iterasi kedua: gunakan y (1) = 1,90476 dan z (1) = 2,09524 di persamaan pertama

Integrated Laboratory Universitas Gunadarma 6


TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)

(5 − 1,90476 + 2,09524)
x (2) = = 1,73016
3

1,73016 − 1,66667
εx = 100% = 3,67%
1,73016

(20 − 4 (1,73016 ) + 3(2,09524)


y (2) = = 2,76644
7

2,76644 − 2,90476
εy = 100% = 31,15%
2,76644

(10 − 2(1,73016) + 2(2,76644)


z (2) = = 2,41451
5

2,41451 − 2,09524
εz = 100% = 13,22%
2,41451

Lanjutkan iterasi sehingga memperoleh hasil seperti tabel sebagai berikut:

Iterasi x Y z 𝜀𝑥 (%) 𝜀𝑦 (%) 𝜀𝑧 (%)

0 0 0 0 - - -

1 1,66667 1,9048 2,0952 100 100 100

2 1,7302 2,7664 2,4145 3,67 31,15 13,22

3 1,5494 3,0066 2,5829 -11,67 7,99 6,52

4 1,5254 3,0924 2,6268 -1,57 2,78 1,67

5 1,5115 3,1192 2,6431 -0,92 0,86 0,62

6 1,5080 3,1282 2,6481 -0,23 0,29 0,19

7 1,5079 3,1282 2,6480 -0,09 0,09 0,06

Sehingga solusi persamaan tersebut adalah:


x = 1,5079 , y = 3,1282, z = 2,6480

Integrated Laboratory Universitas Gunadarma 7


TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)

5.3 Metode Iterasi Jacobi Menggunakan Python


Kita juga dapat menyelesaikan permasalahan sistem persamaan linear simultan dengan
menerapkan metode Iterasi Jacobi kedalam kode Python. Untuk implementasi metode Iterasi
Jacobi pada permasalahan contoh 5.1 di atas kita dapat amati pada listing program 5.1 berikut
ini.
# Mengimpor library numpy dan memberikan alias np
import numpy as np
def jacobi(M,l):
batas_iter = 1000
print("Sistem persamaan: ")

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]

if np.allclose(k, k_new, atol=1e-5, rtol=0.):


break
k = k_new

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)

Listing Program 5.1: Listing program metode_jacobi.py

Integrated Laboratory Universitas Gunadarma 8


TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)

Gambar 5.1: Gambar listing program metode_jacobi.py pada Python


Jika program tersebut dijalankan akan menampilkan output sebagai berikut

Integrated Laboratory Universitas Gunadarma 9


TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)

Gambar 5.2: Gambar output program jmetode_jacobi.py pada python

5.4 Metode Iterasi Gauss-Siedel Menggunakan Python


Kita juga dapat menyelesaikan permasalahan sistem persamaan linear simultan dengan
menerapkan metode Iterasi Gauss-Siedel kedalam kode Python. Untuk implementasi metode
Iterasi Gauss-Siedel pada permasalahan contoh 5.2 di atas kita dapat amati pada listing
program 5.2 berikut ini.

Integrated Laboratory Universitas Gunadarma 10


TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)

import numpy as np
def gauss_siedel(M,l):
batas_iter = 1000

print("Sistem Persamaan: ")


for i in range(M.shape[0]):
row = ["{0:3g}*x{1}".format(M[i, j], j + 1) for j in
range(M.shape[1])]
print("[{0}] = [{1:3g}]".format(" + ".join(row),
l[i]))

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]

if np.allclose(x, x_new, rtol=1e-3):


break
x = x_new
print("Solusi: {0}".format(x))
error = np.dot(M, x)-l
print("KOreksi: {0}".format(error))

# 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)

Listing program 5.2: Listing program metode_gauss-siedel.py

Integrated Laboratory Universitas Gunadarma 11


TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)

Gambar 5.3: Gambar listing program metode_gauss-siedel.py pada python

Maka jika program tersebut dijalankan akan menghasilkan output seperti Gambar 5.4
berikut

Integrated Laboratory Universitas Gunadarma 12


TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)

Gambar 5.4: Gambar output program metode_gauss-siedel.py

Integrated Laboratory Universitas Gunadarma 13


TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)

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.

Integrated Laboratory Universitas Gunadarma 14


TOPIK 5 PERSAMAAN LINEAR SIMULTAN (LANJUTAN)

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.

Integrated Laboratory Universitas Gunadarma 15

You might also like