Metode Gauss-Seidel
Metode Gauss-Seidel digunakan untuk menyelesaikan sistem persamaan
linear (SPL) berukuran besar dan proporsi koefisien nolnya besar, seperti
sistem-sistem yang banyak ditemukan dalam sistem persamaan diferensial. Metode
iterasi Gauss-Seidel dikembangkan dari gagasan metode iterasi pada solusi
persamaan tak linier.
Teknik iterasi jarang digunakan untuk menyelesaikan SPL berukuran kecil
karena metode-metode langsung seperti metode eliminasi Gauss lebih efisien daripada metode iteratif. Akan
tetapi, untuk SPL berukuran besar dengan persentase elemen nol pada matriks koefisien besar, teknik iterasi
lebih efisien daripada metode langsung dalam hal penggunaan memori komputer
maupun waktu komputasi. Dengan metode iterasi Gauss-Seidel sesatan pembulatan dapat diperkecil
karena dapat meneruskan iterasi sampai solusinya seteliti mungkin sesuai dengan
batas sesatan yang diperbolehkan.
Metode iterasi Gauss-Seidel untuk menyelesaikan sistem
persamaan linear
Suatu sistem persamaan linier terdiri atas sejumlah berhingga
persamaan linear dalam sejumlah berhingga variabel. Menyelesaikan suatu sistem
persamaan linier adalah mencari nilai-nilai variabel yang belum diketahui yang
memenuhi semua persamaan linier yang diberikan.
Rumus iterasi untuk hampiran ke-k pada metode iterasi
Gauss-Seidel adalah sebagai berikut. Untuk i = 1, 2, …, n dan k =
1, 2, 3, …,
Algoritma Iterasi Gauss-Seidel
Untuk menyelesaikan sistem persamaan linier AX = b dengan A adalah matriks
koefisien n × n , b vektor konstanta n ×
1 , dan X vektor n × 1 yang perlu di cari.
INPUT : n, A, b dan hampiran awal Y = (y1 y2 y3 ...yn)T,
batas toleransi T dan maksimum iterasi N.
OUTPUT : X = (x1 x2 x3 ...xn)T atau
pesan "gagal".
LANGKAH-LANGKAH :
1. Set penghitung iterasi k =
1
2. WHILE k <= N DO
(b) Set X = (x1 x2 x3 ...xn)T
(c) IF ||X - Y|| < T THEN STOP
(d) Tambah penghitung iterasi, k = k +
1
(e) FOR i = 1, 2, 3,
..., n, Set yi = xi
(f) Set Y = (y1 y2 y3 ...yn)T
3. Tulis pesan "metode gagal
setelah N iterasi"
4. STOP.
Implementasi dengan MATLAB
function [X1,g,H] = seidel(A,b,X0,T,N)
H = X0';
n = length(b);
X1 = X0 ;
for k=1:N,
for i=1:n,
S=b(i)-A(i,1:i-1)*X1(1:i-1)-A(i,i+1:n)*X0(i+1:n);
X1(i)=S/A(i,i);
end
g=abs(X1-X0);
err=norm(g);
relerr=err/(norm(X1)+eps);
X0=X1;
H=[H,X0'];
if(err<T)|(relerr<T),break,end
end
Contoh
Sebagai gambaran misalkan mencari penyelesaian SPL
10x1 - x2 +2x3=6
-x1+11x2-x3+3x4=25
2x1-x2+10x3-x4=-11
3x2-x3+8x4=15
Berikut pemakaian fungsi MATLAB seidel untuk penyelesaian soal di atas dan
keluaran yang diperoleh :
>> A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8]
A =
10 -1
2 0
-1 11
-1 3
2 -1
10 -1
0 3
-1 8
>> b=[6;25;-11;15]
b =
6
25
-11
15
>> X0=[0;0;0;0]
X0 =
0
0
0
0
>> T=0.0001;N=25;
>> [X,g,H]=seidel(A,b,X0,T,N)
X =
1.0000
2.0000
-1.0000
1.0000
g =
1.0e-004 *
0.8292
0.2017
0.2840
0.1111
H =
Columns 1 through
5
0 0 0 0
0.6000
Columns 6 through
10
2.3273 -0.9873
0.8789 1.0302 2.0369
Columns 11 through
15
-1.0145 0.9843
1.0066 2.0036 -1.0025
Columns 16 through
20
0.9984 1.0009
2.0003 -1.0003 0.9998
Columns 21 through
25
1.0001 2.0000
-1.0000 1.0000 1.0000
Columns 26 through
28
2.0 -1.0000
1.0000
Proses iterasi dapat diulangi sampai tingkat keakuratan yang diinginkan
tercapai, penyelesaian eksak contoh di atas adalah (1, 2, -1, 1).