Bisection
Bisection
REAL X1,X2,X3,FX1,FX2,FX3,TOL
WRITE (*,*)' '
WRITE (*,*)'PROGRAM INI MERUPAKAN PROGRAM PENYELESAIAN PERSAMAAN
'PANGKAT 3'
WRITE (*,*)'DENGAN METODE BISECTION '
WRITE (*,*)' '
WRITE (*,*)'BENTUK UMUM PERSAMAAN : '
WRITE (*,*)' '
WRITE (*,*)' 3 2 '
WRITE (*,*)' Y = X + A.X + B.X + C'
WRITE (*,*)' '
WRITE (*,*)' '
WRITE (*,*)'--------------------------------------------------'
WRITE (*,*)' '
WRITE (*,*) 'APAKAH ANDA INGIN MENGGUNAKAN PROGRAM INI ?'
PRINT *, 'PILIH 1 UNTUK YA, 2 UNTUK TIDAK'
WRITE (*,*)' '
WRITE (*,*)'--------------------------------------------------'
WRITE (*,*)' '
READ*,J
GOTO(1,2000)J
1 WRITE(*,2)
2 FORMAT(3X,'MASUKKAN NILAI A :')
READ(*,*)A
WRITE(*,3)
3 FORMAT(3X,'MASUKKAN NILAI B :')
READ(*,*)B
WRITE(*,4)
4 FORMAT(3X,'MASUKKAN NILAI C :')
READ(*,*)C
300 WRITE(*,5)
5 FORMAT(3X,'MASUKKAN NILAI X1 :')
READ(*,*)X1
WRITE(*,6)
6 FORMAT(3X,'MASUKKAN NILAI X2 :')
READ(*,*)X2
WRITE(*,7)
7 FORMAT(3X,'MASUKKAN NILAI TOLERANSI :')
READ(*,*)TOL
FX1=(X1**3)+(A*(X1**2))+(B*X1)+C
FX2=(X2**3)+(A*(X2**2))+(B*X2)+C
IF(FX1.EQ.0)THEN
WRITE (*,8)X1
8 FORMAT(/,2X,'X1 MERUPAKAN AKAR PERSAMAAN = ',F10.5,1X)
WRITE (*,*)' '
GOTO 500
ENDIF
IF(FX2.EQ.0)THEN
WRITE (*,9)X2
9 FORMAT(/,2X,'X2 MERUPAKAN AKAR PERSAMAAN = ',F10.5,1X)
WRITE (*,*)' '
GOTO 500
ENDIF
FK1=FX1*FX2
IF (FK1.GT.0) THEN
WRITE (*,*)' '
WRITE (*,*)' TEBAKAN TIDAK MENGAMPIT AKAR'
WRITE (*,*)' SMASUKKAN ULANG NILAI X1 DAN X2 '
WRITE (*,*)' '
GOTO 300
ENDIF
IF (FK1.LT.0) THEN
WRITE (*,*)'------------------------------------------------------
'-----------'
WRITE (*,*)' N X1 X2 X3 FX1 FX2
' FX3'
WRITE (*,*)'------------------------------------------------------
'-----------'
I=0
20 X3=(X1+X2)/2
I=I+1
FX3=(X3**3)+(A*(X3**2))+(B*X3)+C
FK2=FX1*FX3
WRITE (*,90)I,X1,X2,X3,FX1,FX2,FX3
WRITE (*,*)' '
IF(FK2.LT.0) THEN
X2=X3
FX2=FX3
ENDIF
IF(FK2.GT.0) THEN
X1=X3
FX1=FX3
ENDIF
IF (ABS(FX3).LT.TOL) THEN
GOTO 200
ELSE
GOTO 20
ENDIF
90 FORMAT(I5,6F10.5)
200 WRITE (*,*)' '
WRITE (*,*)' '
WRITE (*,120)X1
120 FORMAT(/,2X,'X1 MERUPAKAN AKAR PERSAMAAN = ',F10.5,1X)
WRITE (*,*)' '
WRITE (*,*)' '
ENDIF
500 WRITE (*,*)'--------------------------------------------------'
WRITE (*,*)' '
WRITE (*,*) 'APAKAH INGIN MENGHITUNG LAGI ?'
PRINT *, 'PILIH 1 UNTUK YA, 2 UNTUK TIDAK'
WRITE (*,*)' '
WRITE (*,*)'--------------------------------------------------'
WRITE (*,*)' '
READ*,I
GOTO(1,2000)I
2000 END