Rabu, 24 Februari 2010

Iterasi Gauss Seidel

Metode iterasi Gauss-Seidel untuk menyelesaikan sistem persamaan linear

Suatu sistem persamaan linear 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, …,

  x^{(k)}_i  = \frac{1}{a_{ii}} \left(b_i - \sum_{j=1}a_{ij}x^{(k)}_j-\sum_{j=i+1}a_{ij}x^{(k-1)}_j\right),\, i=1,2,\ldots,n.

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
(a) FOR i = 1, 2, 3, ..., n, hitung :  x^{(k)}_i  = \frac{1}{a_{ii}} \left(b_i - \sum_{j=1}a_{ij}x_j-\sum_{j=i+1}a_{ij}x_j\right),\, i=1,2,\ldots,n.
(b) Set X = (x1 x2 x3 ...xn)T
(c) IF ||X - Y|| <>
(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

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

Tidak ada komentar:

Posting Komentar