fork download
  1. Program bisection
  2. implicit none
  3. real, parameter :: eps = 1.0e-6
  4. real :: mid, fx, fy, fm, zero = 0, x = 1.0, y = 2.0
  5.  
  6. fx = x**2 - 2.0 ; fy = y**2 - 2.0
  7. print *, fx * fy
  8. if(fx * fy < 0.0) then
  9. do while (abs(x - y) > eps)
  10. print *, abs(x - y)
  11. if(abs(x - y) < eps) then
  12. zero = y
  13.  
  14. else
  15. mid = 0.5 * (x + y); fm = mid**2 - 2.0
  16. if(fx * fm <= 0) then
  17. y = mid; fy = fm
  18. else
  19. x = mid; fx = fm
  20. end if
  21. end if
  22. end do
  23. end if
  24. print *, ' Корень ', zero
  25. end program bisection
Success #stdin #stdout 0s 14912KB
stdin
Standard input is empty
stdout
  -2.00000000    
   1.00000000    
  0.500000000    
  0.250000000    
  0.125000000    
   6.25000000E-02
   3.12500000E-02
   1.56250000E-02
   7.81250000E-03
   3.90625000E-03
   1.95312500E-03
   9.76562500E-04
   4.88281250E-04
   2.44140625E-04
   1.22070312E-04
   6.10351562E-05
   3.05175781E-05
   1.52587891E-05
   7.62939453E-06
   3.81469727E-06
   1.90734863E-06
  Корень     0.00000000E+00