Selasa, 03 April 2012

Metode dalam Solusi Persamaan Nirlanjar

Dalam persamaan nirlanjar (Nonlinear equation), terdapat dua metode, yaitu metode tertutup dan metode terbuka.
Metode tertutup dalam persamaan nirlanjar antara lain:
  1. Metode Bagidua (Bisection Method)
  2. Metode Regula Falsi
Sedangkan metode terbuka antara lain:
  1. Metode Newton-Raphson
  2. Metode Secant
Software yang digunakan untuk mencari solusi dari persamaan ini adalah dengan Scilab. Scilab adalah software yang memiliki kesamaan fungsionalitas dengan MATLAB, tetapi tersedia untuk diunduh tanpa biaya lisensi. Langsung saja ke program, program ini dibuat untuk mencari solusi dari persamaan f(x) = x^3+2*x^2+10*x-20.

1. Metode Bagidua (Bisection Method)
Listing Program:
function y=f(x)
y=x^3 + 2*x^2 + 10*x - 20;
endfunction
function c=metodebagidua(f, x0, x1, aprox)
i=1;
er(1)=100;
if f(x0)*f(x1) < 0
    a(1)=x0;
    b(1)=x1;
    c(1)=(a(1)+b(1))/2;
    printf('r.\t\t a\t\t b\t\t c\t\t f(c)\t  Error  \n');
    printf('%2d \t %11.6f \t %11.6f \t %11.6f \t %11.6f \n',i,a(i),b(i),c(i),f(c(i)));
    while abs(er(i)) >= aprox
      if f(a(i))*f(c(i))< 0
         a(i+1)=a(i);
         b(i+1)=c(i);
      end
      if f(a(i))*f(c(i))> 0
         a(i+1)=c(i);
         b(i+1)=b(i);
      end     
      c(i+1)=(a(i+1)+b(i+1))/2;
      er(i+1)=abs((c(i+1)-c(i))/(c(i+1)));
      printf('%2d \t %11.6f \t %11.6f \t %11.6f \t %11.6f \t %7.6f \n',i+1,a(i+1),b(i+1),c(i+1),f(c(i+1)),er(i+1));
      i=i+1;
   end
else
   printf(' ');
end
endfunction

Output:

2. Metode Regula Falsi
Listing Program:
function y=f(x)
y=x^3 + 2*x^2 + 10*x - 20;
endfunction

function xn=regulafalsi(f, a1, b1, aprox)
i=1;
ea(1)=100;
if f(a1)*f(b1) < 0
    x0(1)=a1;
    x1(1)=b1;
    xn(1)=x0(1)-f(x0(1))*(x1(1)-x0(1))/(f(x1(1))-f(x0(1)));
    printf('r.\t\t x0\t\t xn\t\t x1\t  Error  \n');
    printf('%2d \t %11.7f \t %11.7f \t %11.7f \n',i,x0(i),xn(i),x1(i));
    while abs(ea(i))>=aprox,
      if f(x0(i))*f(xn(i))< 0
         x0(i+1)=x0(i);
         x1(i+1)=xn(i);
      end
      if f(x0(i))*f(xn(i))> 0
         x0(i+1)=xn(i);
         x1(i+1)=x1(i);
      end     
      xn(i+1)=x0(i+1)-f(x0(i+1))*(x1(i+1)-x0(i+1))/(f(x1(i+1))-f(x0(i+1)));
       ea(i+1)=abs((xn(i+1)-xn(i))/(xn(i+1)));
      printf('%2d \t %11.7f \t %11.7f \t %11.7f \t %7.7f \n', i+1,x0(i+1),xn(i+1),x1(i+1),ea(i+1));
      i=i+1;
   end
else
   printf(' ');
end
endfunction

Output:

3. Metode Newton Raphson
Listing Program:
function y=f(x)
y=x^3 + 2*x^2 + 10*x - 20;
endfunction

function y=df(x)
y=3*x^2 + 4*x + 10;
endfunction

function xr=newtonraphson(f, x0, aprox);
i=1;
er(1)=1;
xr(1)=x0;
while abs(er(i))>=aprox;
    xr(i+1)=xr(i)-f(xr(i))/df(xr(i));
    er(i+1)=abs((xr(i+1)-xr(i))/xr(i+1));
    i=i+1;
end
printf(' i  \t      xn(i)      Error aprox (i) \n');
for j=1:i;
    printf('%2d \t %11.7f \t %7.6f \n',j-1,xr(j),er(j));
end
endfunction


Output:

4. Metode Secant
Listing Program:
function y=g(x)
y=x^3 + 2*x^2 + 10*x - 20;
endfunction

function pn=metodesecant(x0, x1, aprox)
j=2;
i=1;
pn(1)=x0;
pn(2)=x1;
er(i)=1;
while abs(er(i))>=aprox
   pn(j+1)=(pn(j-1)*f(pn(j))-pn(j)*f(pn(j-1)))/(f(pn(j))-f(pn(j-1)));
   er(i+1)=abs((pn(j+1)-pn(j))/pn(j+1));
   j=j+1;
   i=i+1;
end

printf(' i \t\t pn(i) \t\t Error aprox (i) \n');
printf('%2d \t %11.7f \t\t \n',0,pn(1));

for k=2:j;
printf('%2d \t %11.7f \t %7.8f \n',k,pn(k),er(k-1));
end 
endfunction


Output:

Keterangan:
0.000001 = epsilon (ε)

Kelompok:
Aisyah Syafarirna (54409726)
Hendrawan Ariyono (52409809)
Risma Rahmalia Fitriani (55409765)
Rismayuni (54409667)


Sumber:

2 komentar:

  1. G ada satupun yang jalan gan...

    BalasHapus
  2. kalau boleh saya minta .sci/.sce filenya. kirim ke email ervan.fansuri@gmail.com ty

    BalasHapus