sistem persamaan linear 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 X=inv(A)*b atau X=A\b
Matriks SPL segitiga atas -> subs. mundur Matriks SPL segitiga bawah -> subs. maju
Segitiga Atas Substitusi Langkah Mundur Mula-mula hitung: Kemudian untuk , 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); endfunction
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); 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); endfunction
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 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); x=backsub(A,b); endfunction
Contoh
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 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 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); if err ~= 0 disp('matriks singular'); return 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 temp = A(k,k); A(k,j) = A(k,j)/temp; x=A(:,m);
Contoh
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
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, 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 Dengan nilai awal
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, endfunction