Anda di halaman 1dari 3

2012

Komputasi Numerik
Metode Biseksi
Kelompok 14 - Alristo S / 1106070836 - Cipto Tigor P.N / 1106070810 - Eka Hertanto Syafei / 1106070855 - Fransiscus Adam / 1106070842

C:\Users\user\Desktop\metodebiseksi2.for

DEPARTEMEN TEKNIK KIMIA

FAKULTAS TEKNIK UNIVERSITAS INDONESIA

C Program: Solusi Persamaan Aljabar Non-Linear Tunggal (PANLT) C dengan Metode 'Bisection' C VARIAN: Program dengan Subroutine C -------------------------------------------------------------implicit none external f REAL*8 eps,f,fx,f0,x,x0,x1 INTEGER flag,iter,maxiter WRITE(*,'(A,$)') 'Harga-harga awal x0,x1 : ' READ(*,*) x0,x1 WRITE(*,'(A,$)') 'Jumlah iterasi maksimum : ' READ(*,*) maxiter WRITE(*,'(A,$)') 'Epsilon/kriteria proses : ' READ(*,*) eps CALL BISECT(f,x0,x1,x,eps,iter,maxiter,flag) WRITE(*,*) 'x0 = ',x0 WRITE(*,*) 'x1 = ',x1 WRITE(*,*) 'f(x) = ',f(x) WRITE(*,*) 'Jumlah iterasi = ',iter STOP END FUNCTION f(x) REAL*8 f,x f = x - x**(1.0D0/3)-2 RETURN END SUBROUTINE BISECT(ff,x0,x1,x,eps,itnum,itmax,prflag) C -------------------------------------------------------C Sub-program: Solusi PANLT dengan metode BISECTION | C atau NILAI PARUH | C ff : fungsi f(x) = 0 yang akan dicari akarnya | C x0 : nilai x-awal di sebelah kiri akar f(x) | C x1 : nilai x-awal di sebelah kanan akar f(x) | C x : akar f(x), nilai paruh (antara x0 dan x1) | C eps : kriteria atau ketelitian penghitungan | C itnum : jumlah iterasi yang dilakukan proses | C itmax : jumlah pembatas iterasi untuk proses | C prflag : identifikasi untuk konvergensi, yaitu: | C 0 = proses sedang/akan berlangsung | C 1 = proses mencapai konvergensinya | C 2 = jumlah iterasi maksimum (itmax) telah | C terlampaui | C -------------------------------------------------------REAL*8 eps,ff,fx,f0,x,x0,x1 INTEGER prflag,itnum,itmax f0 = ff(x0) itnum = 0 prflag = 0 DO WHILE(prflag .EQ. 0) itnum = itnum + 1 x = (x0 + x1)/2 fx = ff(x) IF ((f0*fx) .LE. 0. 0D0) THEN x1 = x ELSE x0 = x f0 = fx

ENDIF IF ((x1-x0) .LE. eps) THEN prflag = 1 ELSEIF (itnum. GT. itmax) THEN prflag = 2 ENDIF ENDDO x = (x0 + x1)/2 RETURN END