Praktikum 6 - WordPress.com

advertisement
Praktikum 6
sistem persamaan linear

Latihan bermain matriks 4x4

transpose, invers, determinan, ekstrak diagonal
matriks, operasi matriks
Cara menyelesaikan SPL
Secara langsung

Eliminasi gauss, gauss-jordan

Dekomposisi L-U
Secara iterasi

Iterasi jacobi, gauss-seidel
Bentuk umum SPL
a koefisien konstanta, b konstanta, n banyaknya persamaan
Penyelesaian metode
langsung
6 x1  2 x2  x3  x4  9
2 x1  4 x2  x3  13
x1  x2  4 x3  x4  11
 x1  x3  3 x4  8
6

2

A
1

 1
1

4 1 0
1 4 1

0 1 3 
2 1
9
 
13
b 
 11 
 
8
1
 
2

x
 3
 
 4
X=inv(A)*b atau X=A\b

Matriks SPL segitiga atas -> subs. mundur

Matriks SPL segitiga bawah -> subs. maju
Segitiga Atas
a11 x1  a12 x2 
 a1n xn  b1
a22 x2 
 a2 n xn  b2
ann xn  bn
Substitusi Langkah Mundur
bn
ann
i  n  1, n  2,,
• Mula-mula hitung:
• Kemudian untuk
xn 
bi 
xi 
,1
n
a x
j i 1
aii
ij
j
hitung:
Ketik di scinote, lalu gunakan
untuk menyelesaikan SPL
function x=backsub(A,b)
[m n]=size(A);
x=[];
x(n,1)=b(n,1)/A(n,n);
for i=n-1:-1:1
jum=0;
for j=i+1:n
jum=jum+A(i,j)*x(j,1);
end
x(i,1)=(b(i,1)-jum)/A(i,i);
end
endfunction
1
0

0

0
5   x1   3 
2 3 7   x2   4 
    
0 8 3   x3   7 
   
0 0 3   x4   5 
6
4
 -1.8333 


-1.5833

x
 1.5000 


 1.6667 
Ketik di scinote, lalu gunakan
untuk menyelesaikan SPL
function x=forsub(A,b)
[m n]=size(A);
x=[];
x(1,1)=b(1,1)/A(1,1);
 7 0
4 2

 9 6

 5 3
0 0   x1   5 
0 0   x2   4 
    
5 0   x3   9 
   
8 3   x4   3 
for i=2:n
jum=0;
for j=1:i-1
jum=jum+A(i,j)*x(j,1);
end
x(i,1)=(b(i,1)-jum)/A(i,i);
end
endfunction
 -0.7143 


-0.5714

x
 2.4000 


-6.0190


Eliminasi Gauss
Menyelesaikan SPL dengan mengubah SPL itu menjadi
matriks segitiga atas (pakai OBD), lalu selesaikan dengan
substitusi mundur
function x=gausselim(A,b)
[m n]=size(A);
x=[];
for i=1:n-1
for j=i:m
if A(j,i)~=0
p=j;
break;
end
end
temp=A(i,:);
A(i,:)=A(p,:);
A(p,:)=temp;
temp=b(i,1);
b(i,1)=b(p,1);
b(p,1)=temp;
for j=i+1:n
s=A(j,i)/A(i,i);
for k=i+1:n
A(j,k)=A(j,k)-s*A(i,k);
end
b(j,1)=b(j,1)-s*b(i,1);
end
end
x=backsub(A,b);
endfunction
Contoh
 3 2 2   x1   3 
 1 5 3   x    4 

 2   
 2 3 4   x   6 

 3   
 1.0917 


x   1.2477 
 1.1101 


Eliminasi Gauss-Jordan
Metode ini mengubah matriks SPL menjadi matriks satuan
sehingga tidak perlu menggunakan subtitusi mundur
Fungsi pivot
function [A, err] = gepivot(A, k)
err = 0;
[n, m] = size(A);
piv = A(k,k);
newpivot = k;
for i = k+1:n
if abs(A(i,k)) > abs(piv)
newpivot = i;
piv = A(i,k);
end
end
if piv == 0
err = 1;
elseif newpivot ~= k
for j = k:m
temp1 = A(k,j);
temp2 = A(newpivot,j);
A(k,j) = temp2;
A(newpivot,j) = temp1;
end
end
endfunction
Eliminasi Gauss-Jordan
function [x, err] = gaussjord(A, b)
err = 0;
x = zeros(size(b));
[n,m] = size(A);
if n ~= m
disp('error. bukan matiks segi')
err = 2; return
end
m = n+1; A(:,m) = b;
for k = 1:n
if k < n
[A, err] = gepivot(A, k);
end
if err ~= 0
disp('matriks singular'); return
end
for i = 1:n
if i ~= k
term = A(i,k)/A(k,k);
for j = k:m
A(i,j) = A(i,j) - term*A(k,j);
end
end
end
temp = A(k,k);
for j = k:m
A(k,j) = A(k,j)/temp;
end
end
x=A(:,m);
Contoh
 0 1 2   x1   3 
 3 4 4   x    5 

 2   
 2 6 5   x   1 

 3   
 51.667 


x   27.667 
 12.3333 


Dekomposisi L-U
[l,u]=lu(a)
[l,u,e]=lu(a)
Iterasi Jacobi

Menyelesaikan SPL berukuran nxn secara iteratif

Diawali dengan memilih nilai awal x(0)
Contoh

Tentukan solusi SPL di bawah ini dengan nilai
awal P0   x0 , y0 , z0    0,0,0
2 x  8 y  z  11
5 x  y  z  10
x  y  4z  3
function [X,g,H]=jacobi(A,b,X0,T,N)
H=X0';
n=length(b);
X=X0;
for k=1:N
for i=1:n
s=b(i)-A(i,[1:i-1,i+1:n])*X0([1:i-1,i+1:n]);
X(i)=s/A(i,i);
end
g=abs(X-X0);
err=norm(g);
relerr=err/(norm(X)+%eps);
X0=X;
H=[H;X0'];
if (err<T)|(relerr<T),
break,
end
end
endfunction

Hasilnya sedikit berbeda dengan metode langsung atau
eliminasi

Metode ini akan bernilai konvergen jika matriksnya
merupakan matriks dominan secara diagonal, yaitu
apabila unsur diagonal atau elemen aii merupakan
elemen terbesar pada setiap baris.

Coba matriksnya kita ubah
5x-y+z=10
2x+8y-z=11
-x+y+4z=3
Iterasi Gauss-Seidel

Hampir sama dengan iterasi jacobi, tapi nilai
variabelnya berubah tiap iterasi
Contoh

Gunakan metode iterasi Gauss-Seidel untuk:
27x+6y-z=85
6x+15y+2z=72
x+y+54z=110
Dengan nilai awal  x0 , y0 , z0    0,0,0
function [X,g,H]=gaussd(A,b,X0,T,N)
H=X0';
n=length(b);
X=X0;
for k=1:N
for i=1:n
s=b(i)-A(i,[1:i-1])*X0([1:i-1])-A(i,[i+1:n])*X0([i+1:n]);
X(i)=s/A(i,i);
end
g=abs(X-X0);
err=norm(g);
relerr=err/(norm(X)+%eps);
X0=X;
H=[H;X0'];
if (err<T)|(relerr<T),
break,
end
end
endfunction
Download