⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bisect0.f90

📁 fortran 95书的源程序全集
💻 F90
字号:
!	二分法求解
!	By Pon 1997/9/2
module NUMERICAL
  implicit none
  real, parameter :: zero = 0.00001
contains
  real function bisect( A, B )
    implicit none
	real A,B	! 输入的猜值
	real C		! 用来算(A+B)/2
	real FA		! 记录F(A)
	real FB		! 记录F(B)
	real FC		! 记录F(C)

!	先求出C, F(C)的值
	C = (A+B)/2.0	
	FC = func(C)

!   F(C) 小于 ZERO 时,就视 F(C)=0 , 结束循环
	do while( abs(fc) > zero )
	  FA = func(A)
	  FB = func(B)
	  if ( FA*FC < 0 ) then
	  ! f(a)*f(c)<0 ,以a,c值为新的区间
		B=C
		C=(A+B)/2.0
	  else
	  ! 不然就是以b,c为新的区间
		A=C
		C=(A+B)/2.0
	  end if
      ! 求出新的f(c)值
		FC=FUNC(C)
	end do
	bisect = C
	return
	end function
!	求解用的函数
	real function func(X)
	implicit none
	real X
	FUNC=(X+3)*(X-3)
	return
	end function
end module

program main
  use NUMERICAL
  implicit none
  real  A,B		! 两个猜值
  real  ANS		! 算出的值
  do while(.true.)
	write(*,*) '输入两个猜测值'
	read (*,*) A,B
    ! f(a)*f(b) < 0 的猜值才是有效的猜值
	if ( func(A)*func(B) < 0 ) exit
	write(*,*) "不正确的猜值"
  end do
  ! 调用二叉法求根的函数
  ANS=bisect( A, B )
  ! 写出结果
  write(*,"('x=',F6.3)") ans
  stop
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -