KOMPUTASI NUMERIK
AKN - 3
METODE ITERASI UNTUK SISTEM PERSAMAAN
LINIER
LABORATORIUM KOMPUTASI
DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS PADJADJARAN
2021
LEMBAR PENGESAHAN
AKN - 3
METODE ITERASI UNTUK SISTEM PERSAMAAN
LINIER
( )
METODE ITERASI UNTUK SISTEM PERSAMAAN LINIER
I. Tujuan
Mahasiswa diharapkan mampu menentukan solusi dari sistem persamaan linier
menggunakan metode iterasi serta mampu membedakan penggunaan metode langsung
dan metode tidak langsung dalam menentukan solusi persamaan linier. Selain itu,
mahasiswa juga diharapkan mampu menentukan laju konvergensi dari metode iterasi
yang digunakan.
Pada persamaan di atas, kita memiliki dua buah variabel, yaitu variabel x dan y.
sementara itu kita memiliki dua konstanta yaitu m dan b. m adalah konstanta dari
variabel x. Dalam materi persamaan linier, m juga sering disebut sebagai gradien
atau kemiringan. Apabila kita menggambar persamaan linier pada sebuah grafik,
kemiringan dari grafik tersebut adalah sama dengan m.
- Metode iterasi Jacobi
Metode Jacobi adalah salah satu metode penyelesaian sistem persamaan linear
berdimensi banyak. Metode ini menggunakan pendekatan numerik dalam
menyelesaikan persamaan linier yang mungkin apabila dikerjakan secara analitik
cukup sulit. Metode ini cocok untuk digunakan ketika kita ingin mencari solusi dari
persamaan linier yang memiliki banyak variabel atau berdimensi besar. Untuk
persamaan linier yang hanya memiliki sedikit variabel atau memiliki persamaan
matriks dimensi kecil, kita akan lebih efektif menyelesaikannya dengan
menggunakan eliminasi,substitusi, atau metode Cramer.
1
𝑥𝑖𝑘 = (𝑏𝑖 − ∑ 𝑎𝑖𝑗 𝑥𝑗(𝑘−1) )
𝑎𝑖𝑖
𝑗≠𝑖
Pada metode ini, kita pertama-tama akan memilih nilai awal dari variabel-
variabel yang ingin kita hitung. Nilai awal ini besarnya sesuai dengan diri kita.
Setelah itu, kita akan memasukkan nilai awal ini kedalam persamaan di atas. Setelah
menghitung persamaan di atas, kita akan mendapatkan nilai baru untuk semua
variabel kita. Nilai baru ini adalah nilai pada iterasi pertama. Kita kemudian akan
memasukkan nilai iterasi pertama ini kembali kedalam persamaannya masing
masing hingga kita mendapatkan nilai iterasi ke dua. Kita akan terus mengulangi
proses ini hingga error atau galat dari perhitungan kita sudah sesuai dengan yang
kita inginkan.
- Metode iterasi Gauss-Seidel
Metode iterasi Gauss-Seidel adalah sebuah metode penyelesaian persamaan
linier dengan menggunakan pendekatan numerik. Metode ini biasa digunakan untuk
menyelesaikan sistem persamaan linier dengan variabel yang besar. Metode Gauss-
Seidel ini dapat dikatakan sebagai perbaikan atau versi lebih baik dari metode
Jacobi. Metode ini cara pengerjaannya sangat mirip dengan metode Jacobi.
Perbedaan metode ini dan metode Jacobi berada pada perumusannya. Metode
Gauss-sedel dapat dirumuskan seperti berikut :
1
𝑥𝑖𝑘 = (𝑏𝑖 − ∑ 𝑎𝑖𝑗 𝑥𝑗(𝑘) − ∑ 𝑎𝑖𝑗 𝑥𝑗(𝑘−1) )
𝑎𝑖𝑖
𝑗=𝑖 𝑗=𝑖+1
Pada persamaan di atas, kita dapat melihat dimana perbedaan metode ini dengan
metode Jacobi. Pada metode ini, kita menggunakan nilai 𝑥𝑗 yang paling baru atau
nilai yang baru saja dihitung pada operasi sebelumnya. Ketika kita sedang
menghitung dengan menggunakan metode Jacobi, kita harus menghitung nilai dari
variabel 𝑥1 , 𝑥2 , 𝑥3 , … , 𝑥𝑛 hingga selesai dan setelah itu kita baru dapat menghitung
iterasi selanjutnya. Pada metode Gauss-seidel kita dapat langsung menggunakan
nilai variabel yang telah dihitung pada iterasi yang sama. Jadi apabila kita telah
menghitung nilai iterasi ke-n dari sebuah variabel, kita dapat menggunakan nilai
tersebut untuk menghitung nilai dari variabel lain pada iterasi yang sama (iterasi ke-
n). Efek dari hal ini adalah metode Gauss-Seidel dapat memiliki lau konvergensi
yang lebih cepat dibanding dengan metode Jacobi. Metode ini dapat dikatakan
sebagai metode yang lebih baik dibanding metode Jacobi.
𝜔
𝑥𝑖(𝑘+1) = (1 − 𝜔)𝑥𝑖(𝑘) + (𝑏𝑖 − ∑ 𝑎𝑖𝑗 𝑥𝑗(𝑘) − ∑ 𝑎𝑖𝑗 𝑥𝑗(𝑘+1) )
𝑎𝑖𝑖
𝑗=𝑖 𝑗=𝑖+1
Kita dapat melihat bahwa perbedaan utama metode ini dengan metode gauss-seidel
adalah adanya pertambahan variabel 𝜔 di dalam persamaan. Apabila nilai dari
variabel 𝜔 adalah 𝜔 = 1 maka persamaan ini akan sama persis dengan persamaan
Gauss-seidel. Modifikasi ini dilakukan untuk menyelesaikan persamaan linier yang
cukup lambat laju konvergensinya.
III. Tugas Praktikum
3.1 Listing program
Berikut adalah listing dari program yang digunakan pada percobaan ini :
o Metode Jacobi
import numpy as np
a=np.array(
[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]])
b=np.array([0,0,0,0])
xi=np.array([0,0,0,0])
n=len(xi)
xn=[]
e=1
iterasi=0
while e>0.0001:
for i in range(0,n):
sigma=0
for j in range (0,i):
sigma=sigma+a[i,j]*xi[j]
for j in range (i+1,n):
sigma=sigma+a[i,j]*xi[j]
x=(1/a[i,i])*(b[i]-sigma)
xn.append(x)
e=abs(max(xi)-max(xn))
xi=xn
xn=[]
iterasi=iterasi+1
print ('\nHasil Perhitungan')
print ('----------------------------------------------')
for i in range (0,n):
print ('X%d : '%(i+1),xi[i])
print('besar galat : %f'%e)
print("jumlah iterasi : %d"%iterasi)
o Metode Gauss-Seidel
import numpy as np
a=np.array(
[[0,0,0],[0,0,0],[0,0,0]])
b=np.array([0,0,0])
xi=np.array([0,0,0])
n=len(xi)
xn=[]
e=1
iterasi=0
while e>0.0001:
for i in range(0,n):
sigma=0
for j in range (0,i):
sigma=sigma+a[i,j]*xn[j]
for j in range (i+1,n):
sigma=sigma+a[i,j]*xi[j]
x=(1/a[i,i])*(b[i]-sigma)
xn.append(x)
e=abs(max(xi)-max(xn))
xi=xn
xn=[]
iterasi=iterasi+1
print ('\nHasil Perhitungan')
print ('----------------------------------------------')
for i in range (0,n):
print ('X%d : '%(i+1),xi[i])
print('besar galat : %f'%e)
print("jumlah iterasi : %d"%iterasi)
o Metode SOR
import numpy as np
a=np.array(
[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]])
b=np.array([0,0,0,0])
xi=np.array([0,0,0,0])
n=len(xi)
xn=[]
xo=[0,0,0,0]
e=1
iterasi=0
w=1.1
while e>0.0001:
for i in range(0,n):
sigma=0
for j in range (0,i):
sigma=sigma+a[i,j]*xn[j]
for j in range (i+1,n):
sigma=sigma+a[i,j]*xi[j]
x=((w/a[i,i])*(b[i]-sigma))+(1-w)*xo[i]
xn.append(x)
e=abs(max(xi)-max(xn))
xo=xi
xi=xn
xn=[]
iterasi=iterasi+1
print ('\nHasil Perhitungan')
print ('----------------------------------------------')
for i in range (0,n):
print ('X%d : '%(i+1),xi[i])
print('besar galat : %f'%e)
print("jumlah iterasi : %d"%iterasi)
3.2 percobaan
a)
1. Tampilan program
2. Analisa program
Pada percobaan a ini, kita memiliki sistem persamaan linier
dengan dua variabel. Kita akan menggunakan ketiga metode untuk
mencari solusi dari persamaan tersebut. Pertama , kita harus mengubah
persamaan tersebut ke dalam bentuk matriks. Sistem persamaan ini
memiliki dua variabel sehingga matriks koefisiennya akan berdimensi
2x2. Setelah kita mengubah sistem persamaan di atas ke dalam bentuk
matriks, kita dapat langsung memasukkannya ke dalam program. Dalam
program terdapat array a dan b. Array a adalah tempat kita memasukkan
matriks koefisien . Setelah kita memasukkan nilai dari kedua matriks ke
dalam program, kita akan memasukkan nilai tebakan awal dari x. Nilai
tebakan awal ini kita letakkan di dalam array xi. Setelah kita selesai
menginput data, program dapat dijalankan.
Pada metode SOR kita mesti terlebih dahulu memasukkan nilai dari 𝜔 .
Untuk percobaan kali ini, nilai dari 𝜔 yang kita gunakan adalah 1.1 .
Setelah itu, kita dapat menjalankan ketiga program. Kita dapat melihat
output dari program pada gambar di atas. Dengan membandingkan
output dari ketiga program, kita dapat melihat bahwa metode Gauss-
Seidel adalah metode yang menggunakan iterasi paling sedikit dan
metode Jacobi menggunakan iterasi yang paling banyak.
b)
1. Tampilan program
2. Analisa program
Untuk percobaan b ini, kita memiliki sistem persamaan linier dengan
tiga variabel. Kita akan menggunakan ketiga metode untuk menentukan
solusi dari sistem persamaan ini. Pertama-tama , kita akan mengubah
sistem persamaan menjadi bentuk matriks dan kemudian
memasukkannya ke dalam program. Setelah itu, kita dapat menjalankan
program. Setelah program selesai , outputnya akan berupa seperti
gambar di atas. Dengan membandingkan output dari ketiga program,
kita dapat melihat bahwa metode Gauss-seidel melakukan iterasi paling
sedikit dan metode jacobi memiliki jumlah iterasi yang sedikit lebih
besar dari metode gauss-seidel. Kita juga dapat melihat bahwa metode
SOR adalah metode yang paling lambat laju konvergensinya karena
jumlah iterasi yang lebih besar dari metode lainnya.
c)
1. Tampilan program
2. Analisa program
Untuk percobaan ini, kita akan mencari solusi dari sistem persamaan
linier empat variabel dengan menggunakan ketiga variabel. Seperti
biasa, kita akan pertama-tama mengubah sistem persamaan menjadi
bentuk matriks. Setelah itu kita akan memasukan matriks tersebut ke
dalam program. Untuk metode SOR, nilai dari 𝜔 adalah sama dengan
pada percobaan a dan b yaitu 1.1 . Selanjutnya kita akan menjalankan
program. Tampilan output dari program dapat dilihat pada gambar di
atas. Dengan membandingkan ketiga gambar, kita dapat melihat bahwa
sama seperti pada percobaan sebelumnya, metode gauss-seidel adalah
metode yang memiliki laju konvergensi yang paling cepat dari ketiga
metode. Metode dengan laju konvergensi paling lambat adalah metode
SOR. Namun, laju konvergensi dari metode SOR sangat bergantung
pada nilai 𝜔-nya. Semakin dekat nilai 𝜔 dengan 1, maka semakin cepat
konvergensinya.
IV. Tugas Akhir
1. Selidiki perbedaan norm jika diaplikasikan pada Percobaan untuk metode iterasi
Jacobi dan Gauss-Seidel.
Norm dari sebuah matriks adalah akar dari penjumlahan seluruh komponennya yang
dikuadratkan. Atau dapat dijelaskan dengan persamaan :
𝒏 𝒏
‖𝑿‖ = √∑ ∑(𝒂𝒊𝒋 )𝟐
𝒊=𝟏 𝒋=𝟏
Hasil dari perhitungan sistem persamaan linier adalah berupa solusi dari persamaan
tersebut. Kita dapat memasukkan solusi dari sistem persamaan tersebut ke dalam
sebuah matriks. Kita akan membandingkan norm matriks tersebut pada metode Jacobi
dan Seidel.
Saya akan menggunakan sistem persamaan linear pada percobaan b. berikut adalah
hasil perhitungannya :
Kita dapat melihat bahwa norm yang dihasilkan oleh kedua metode ini tidak lah jauh
beda. Nilainya memiliki perbedaan yang sangat kecil. Sehingga kita dapat
menyimpulkan bahwa norm dari matriks solusi persamaan linier yang di selesaikan
dengan metode jacobi dan yang diselesaikan dengan metode Gauss adalah sama saja
dengan perbedaan yang sangat kecil.
2. Apa yang akan terjadi jika kita menggunakan metode SOR untuk menyelesaikan
Percobaan dengan nilai 𝜔 > 2 atau 𝜔 < 0?
- Listing program
import numpy as np
a=np.array(
[[1.4,0,-2.4,0], [3,-4,2,0], [0,1,-9.8,0], [1,3,-1,0.3]])
b=np.array([3,-2,12,28])
xi=np.array([0,0,0,0])
n=len(xi)
xn=[]
xo=[0,0,0,0]
e=1
iterasi=0
w=2.1
while e>0.0001:
for i in range(0,n):
sigma=0
for j in range (0,i):
sigma=sigma+a[i,j]*xn[j]
for j in range (i+1,n):
sigma=sigma+a[i,j]*xi[j]
x=((w/a[i,i])*(b[i]-sigma))+(1-w)*xo[i]
xn.append(x)
e=abs(max(xi)-max(xn))
xo=xi
xi=xn
xn=[]
iterasi=iterasi+1
print ('\nHasil Perhitungan Metode SOR')
print ('----------------------------------------------')
for i in range (0,n):
print ('X%d : '%(i+1),xi[i])
print('besar galat : %f'%e)
print("jumlah iterasi : %d"%iterasi)
- Tampilan program
- Analisa
Program yang saya gunakan adalah program yang sama pada percobaan a,b,dan c.
Untuk mencari tahu efek dari nilai 𝜔 yang lebih besar dari 2 atau lebih kecil dari
0, saya mencoba menggunakan metode SOR untuk mencari solusi dari sistem
persamaan linier yang terdapat pada percobaan c. Setelah menjalankan
program dengan 𝜔=2.1 dan 𝜔=-1. Kita dapat melihat outputnya pada gambar
di atas. Kita dapat melihat bahwa program tidak akan sampai kepada suatu
konvergensi, justru solusi dari sistem persamaan ini akan menjadi divergen
sehingga program akan melakukan iterasi hingga ribuan kali dan hasil
akhirnya adalah nan. Dengan melakukan eksperimen ini, kita dapat
menyimpulkan bahwa apabila kita menggunakan 𝜔 yang nilainya lebih dari 2
atau kurang dari 0 , solusi dari persamaan akan bersifat divergen dan tidak
dapat ditemukan. Jadi , apabila kita ingin menggunakan metode SOR, kita harus
memilih nilai 𝜔 yang berada pada interval 0<𝜔<2 agar solusi akan bersifat
konvergen.
3. Tentukan besar masing-masing arus listrik (I1, I2, dan I3) pada rangkaian dibawah
ini, dengan menggunakan sistem persamaan linier.
Untuk mencari nilai I, kita harus membuat persamaan yang menjelaskan rangkaian di
atas. Kita dapat melakukannya dengan menggunakan persamaan :
∑ 𝐸 + ∑ 𝐼. 𝑅 = 0
Dan
𝐼𝑚𝑎𝑠𝑢𝑘 = 𝐼𝑘𝑒𝑙𝑢𝑎𝑟
Dengan menggunakan kedua persamaan ini, kita akan mendapatkan tiga persamaan
seperti berikut :
1) 7𝐼1 + 3𝐼3 = 30
2) 11𝐼2 − 3𝐼3 = 50
3) 𝐼1 − 𝐼2 − 𝐼3 = 0
Selajutnya saya akan menggunakan metode Gauss-Seidel untuk menyelesaikan sistem
persamaan linier tersebut. Program yang saya gunakan adalah program yang sama
dengan pada percobaan a,b, dan c. berikut adalah hasil perhitungannya :
- Tampilan program
- Analisa
Kita mendapatkan solusi dari persamaan setelah melakukan 21 iterasi Jacobi
dengan galat yang cukup rendah. Besar dari masing-masing arus listrik adalah :
Pada praktikum kali ini kita telah belajar berbagai macam hal baru. Saya telah
memiliki sebuah pemahaman baru tentang persamaan linier dan metode-metode
yang dapat digunakan untuk mencari solusinya. Saya telah memahami apa yang
disebut dengan metode iterasi, jenis-jenis dari metode iterasi,serta cara
menggunakan metode tersebut untuk mencari solusi dari sebuah persamaan linier.
Pada praktikum ini, kita mempelajari tiga metode iterasi yang digunakan untuk
menyelesaikan persamaan linier. Pertama , kita mempelajari metode Jacobi dan cara
penggunaannya. Kedua ,kita mempelajari metode Gauss-seidel dan perbedaannya
dengan metode Jacobi. Dan yang terakhir, kita mempelajari Metode SOR, yang
merupakan sebuah modifikasi dari metode Gauss-seidel. Saya juga telah memahami
perbedaan dari ketiga metode ini. Dengan ini saya menutup laporan akhir praktikum
kali ini, saya berharap dalam waktu yang akan datang ilmu yang saya telah pelajari
dapat bermanfaat. Sekian dari saya, terima kasih.
Daftar Pustaka