You are on page 1of 10

M_File Persamaan Linier

1. METODE GAUSS ELIMINASI function x=gauss (n,A,b) % fungsi untuk melakukan elimnasi gauss % untuk menyelenggarakan SPL Ax=b % n=dimensi matrix %A= matriks koefisien %b=vector diruas kanan %x=vector penyelesaian [n,n]=size(A); k=1; [n1,k]=size(b); X=zeros(n,k); for i=1 :n-1; m= -A(i+1:n,i)/A(i,i); A(i+1:n,:)=A(i+1:n,:)+m*A(i,:); b( i+1:n,:)=b(i+1:n,:)+m*b(i,:); end x(n,:)=b(n,:) ./A(n,n); for i=n-1:-1:1; x(i,:)=(b(i,:)-A(i,i+1:n)*x(i+1:n,:)) ./A(i,i); end METODE GAUSS JORDAN function x=gjor (n,A,b); % fungsi untuk melakukan eliminasi gauss jordan % untuk menyelenggarakan SPL Ax=b % n=dimensi matriks %A= matriks koefisien %b=vector diruas kanan %x=vector penyelesaian [n,m]=size(A); vb= (1 : n); for kol = 1 : n for bar = 1 : n if (kol == bar) % proses pivoting ib = vb (kol) ; maxi = abs (A ( ib , kol ) ); i = kol;

2.

ibx = ib; for bars = i + 1 : n ib = vb (bars); if = (abs ( A (ib , kol) ) ) > maxi maxi = abs (A(ib ,kol)); i = bars ; ibx = ib ; end end ib = vb (kol) ; vb (kol) = ibx ; vb (i) = ib ; else %proses eliminasi ib = vb (bar) ; ibx = vb (kol) ; m = -A (ib , kol) / A (ibx,kol) ; for j = kol : n A ( ib , j) = A (ib, j) + m *A ( ibx , j ) ; end b (ib) = b (ib )+m*b(ibx); end end end %nilai elemen x for i = 1 : n ib = vb ( i ) ; x (i) = b (ib) / A( ib, i) ; end return 3. METODE LU DECOMPOSITION function x=Idec(n,A,b) n = size (A,1); for k = 1 : n-1 ; for i = k + 1 : n if A (i,k) ~ = 0.0 lambda = A (i,k) / A (k,k) ; A(i,k+1 : n) = A ( i,k+1 : n ) lambda * A (k, k+1 : n) ; A ( i,k)= lambda ; end

end end if size (b,2) > 1 ; b = b ; end for k = 2 : n b (k) = b (k) A (k,1:k-1) * b (1 : k-1) ; end for k = n :-1 : 1 b (k) = (b (k) A (k,k+1: n)*b(k+1:n)) /A(k,k): end x=b; 4. METODE JACOBI function x=jacobi_f(A,b,x0,tol,maks) %solusi system Ax=b %x= jacobi_f(A,b,x0,tol,maks) [n,m]=size(A); xlama=x0; C=-A; tol=10e-6; maks=1000; for i=1:n; C(i,i)=0; end for i=1:n; C(i,:)=C(i,:)/ A(i,i); end for i=1:n; d(i,1)=b(i)/A(i,i); end i=1; disp(i x1 x2 x3, ..); while (i<=maks) xbaru=C*xlama+d; x=xbaru; disp (i xbaru); if norm(xbaru-xlama)<=tol disp (metode jacobi telah konvergen); break; end if(i>=maks); disp (metode jacobi telah konvergen,iterasi maks);

break; end xlama=xbaru; i=i+1; end 5. METODE GAUSS SEIDEL function x=gauss_seidel (A,b,x0,tol,maks) % solusi persamaan linier Ax=b %menggunakan algorithma iterasi gauss -seidel [n,m]=size(A); x=x0; C=-A; maks=100; for i=1:n C(i,i) =0; end for i=1:n C(i,1:n)=C(i,1:n) /A(i,i); end for i=1:n r(i,1)=b(i)/A(i,i); end i=1; disp (f x1 x2 x3 .) while (i<=maks) xlama=x; disp (*i x+); for j=1:n x(j) = C(j,:)*x+r(j); end

if norm (xlama-x)<=tol disp(metode gauss seidel telah konvergen) return end i=i+1; end

6.

METODE SOR function x=SOR (A,b,x0,w,tol,maks) % menyelesaikan persamaan linier Ax=b [n,m]=size (A); x=x0;C=-A; w=1.5 ; for i=1:n C(i,i)=0; End for i=1:n C(i,1:n)=C(i, 1:n)/A(i,i); r(i,1)=b(i)/A(i,i); end i=1; while (i<maks) xlama=x; for j=1:n x(j)=(1-w)*xlama(j)+w*(C(j,:)*x+r(j)); end if norm (xlama-x)<=tol

disp (metode SOR telah konvergen); return; end i=i+1; end

M_File Persamaan Non Linier


1. METODE BISECTION function [ iterasi A B X FX ] = bagi dua ( f, a, b, tol ) A=[a] ;B=[b] ;X=[] ;FX=[] ;iterasi=[] ; fa=feval (f, a); fb=feval (f,b); if fa*fb >0, return end N=1+round ( (log(b-a)-log(tol) ) /log(2) ) ; %maksimum iterasi for k=1:N iterasi=[iterasi ;k] ; x=(a+b) /2 ; fx=feval (f, x) ; X=[X;x] ;FX=[FX ;fx] ; if ( fx==0 ) | ( (b-a) <tol), break,end if fa*fx<0 ; b=x ;

else a=x ; end A=[A ;a] ;B=[B ;b] ;format long ; end

function y=fungsi_1(x) % menghitung nilai fungsi y=x^2+2x-3 y=x^2+2*x-3; [i,a,b,x,fx]=bagidua('fungsi_1',-1,5,0.00001)

2.

METODE TITIK TETAP function [iterasi ,x ,galat]=ttetap (g, x0, tol, N) iterasi=[0]; x=[x0] ; err=x0; galat=err; tolerr=1 ; r=x0 ; for k=1 : N, iterasi=[iterasi ; k] ; r=feval (g, x0) ; err=abs (r-x0) ; x=[x ;r] ; galat=[galat ;err] ; relerr=err/ (abs (r)+eps) ; if (err<tol)| ( relerr<tol) ,break ; end x0 ; end function y=fungsi_2(x) % menghitung nilai fungsi fungsi_2(x)=(3-x^2)/2 y=(3-x^2)/2 [k,x,galat]=ttetap('fungsi_2',2,0.000001,20)

3.

METODE TITIK PALSU function [ iterasi A B X FX ] = tpalsu ( f, a, b, tol ) A=[a] ;B=[b] ;X=[] ;FX=[] ;iterasi=[] ; fa=feval (f, a) fb=feval (f,b) if fa*fb >0, return end N=1+round ( (log(b-a)-log(tol) ) /log(2) ) ; %maksimum iterasi for k=1:N iterasi=[iterasi ;k] ; x=a-(((b-a)/(fb-fa))*fa); fx=feval (f, x) ; X=[X;x] ;FX=[FX ;fx] ; if ( fx==0 ) | ( (x-a) <tol), break,end if fb*fx<0; a=x; else b=b; end if fa*fx<0; b=x; else a=a; end A[A;a]; B[B;b]; format long; end function y=fungsi_3(x) % menghitung nilai fungsi y=x^2+2x-8 y=x^2+2*x-8; [i,a,b,x,fx]= tpalsu('fungsi_3',-5,1.2,10e-6) METODE NEWTON RAPHSON function [x,y]=newt (f,df,x0,tol,maks) x(1)=x0; y(1)=feval (f,x(1)); dy(1)=feval (df,x(1)); iter=0; for i=2 : maks

4.

x(i)=x(i-1)-y(i-1)/dy(i-1); y(i)=feval (f,x(i)); if abs (x(i)-x(i-1))<tol disp (metode newton telah konvergen); break end dy(i)=feval (df,x(i)); iter=iter+1; end if(iter>=maks) disp(akar tak sesuai dengan toleransi); end x=transpose (x); y=transpose (y); hasil=[x;y];

5.

METODE SECANT function [x,y]=secant (f,x0,x1,tol,maks) x(1)=x0;x(2)=x1; y(1)=feval (f,x(1)); y(2)=feval (f,x(2)); iter =0; for i=2: maks x(i+1)=x(i)-(x(i)-x(i-1))*y(i)/y(i)-y(i-1); y(i+1)=feval (f,x(i+1)); b=y(i)y(i-1); if abs (x(i+1)-x(i))<tol disp(metode secant telah konvergen); break end

if y(i)==0.0; disp(akar ditemukan) end if b==0; break, end iter=iter+1; end if(iter>=maks) disp(akar tak sesuai dengan toleransi); end x=transpose (x); y=transpose (y); hasil=[x;y];

You might also like