x=D −1 [ b−( L+ U ) x ]
Jika ditulis dalam aturan iteratif, maka metode iterasi Jacobi dapat ditulis sebagai
berikut:
x=D −1 [ b−( L+ U ) x ]
Jika ditulis dalam aturan iteratif, maka metode iterasi Jacobi dapat ditulis
sebagai berikut:
x=D −1 [ b−( L+ U ) x ]
( D+ L ) x ( k )=b−U x(k−1)
Yang menghasilkan
Ax=b
A=D+ ( L+ U )
Dimana D merupakan matriks diagonal, L merupakan matriks segitiga
bawah, dan U merupakan matriks segitiga atas. Lalu persamaan tersebut
diubah menjadi
Dengan mengekstrapolasi metode Gauss Seidel didapatkan
x(k) (k) (k−1)
i =ω x́ i +(1−ω)x i
Dimana x́ menyatakan iterasi Gauss Seidel dan ω adalah faktor
ekstrapolasi. Dengan mencari nilai ω untuk mempercepat konvergensi dari
solusi iterasi.
( k−1 )
x(k) −1
+ ( D+ L )−1 ) x́(k) (k−1)
i =( ( D+ L ) U x i +(1−ω)x i
Listing Program
function x=JACOBI(n,A,b)
x=zeros(n,1);
xk=zeros(n,1);
dx=zeros(n,1);
A1=zeros(n);
b1=zeros(n,1);
vb=1:n;
for i=1:n
ib=vb(i);
bar=i;
ibx=ib;
m=abs(A(ib,i));
for j=i+1:n
ib=vb(j);
if (abs(A(ib,i))>m)
m=abs(A(ib,i));
bar=j;
ibx=ib;
end
end
ib=vb(i);
vb(i)=ibx;
vb(bar)=ib;
end
%hasil pivot
for i=1:n
ib=vb(i);
for j=1:n
A1(i,j)=A(ib,j);
end
b1(i)=b(ib);
end
%proses iterasi
k=0;
for i=1:n
xk(i)=0.0;
end
tol=5.0e-7;
delta=1.6e-4;
maxiter=3;
while((k<maxiter)&&(delta>tol))
for i=1:n
w=b1(i);
for j=1:n
if (i~=j)
w=w-A1(i,j)*xk(j);
end
end
x(i)=w/A1(i,i);
end
%periksa error
delta=0.0;
for i=1:n
a=(x(i)-xk(i));
dx(i)=abs(a);
xk(i)=x(i);
if (dx(i)>delta)
delta=dx(i);
end
end
k=k+1;
fprintf('iterasi ke-%g ',k);
for i=1:n
fprintf('%10.6f ',x(i));
end
fprintf('\n');
end
return
Dengan Fungsi
A=[-3 -0.1 -0.2; 0.1 7 -0.3; 0.3 -0.2 10];
b = [7.86 -19.3 71.4];
n=length(b);
x=JACOBI(n,A,b);
disp('Solusi SPL');
for i=1:n
fprintf('x(%g) = %10.6f\n',i,x(i));
end
Tampilan Program
IV Algoritma Program
Metode Iterasi Jacobi
Start
Dimensi n, Matriks A,
Ruas kanan b
Inisialisasi vektro x
Maxiter=
Solusi SPL
K=maxiter
Tol belum
tercapai tidak
ya
For i=1:n
w=b(i)
DAFTAR PUSTAKA
Hernadi, J. (2012). Matematika Numerik dengan Implementasi MATLAB (Edisi
Pertama). Yogyakarta: Andi Offset
Mathews, J. And Fink, K. (1999). Numerical Methods Using MATLAB (3rd ed).
New Jersey: Prentice Hall
Suarga (2014). Komputasi Numerik: Pemrograman MATLAB untuk Metode
Numerik. Yogyakarta: Andi Offset