golden.f90

来自「FORTRANvisualfortran常用数值算法集及源码」· F90 代码 · 共 41 行

F90
41
字号
FUNCTION golden(ax,bx,cx,f,tol,xmin)
REAL golden,ax,bx,cx,tol,xmin,f,R,C
EXTERNAL f
PARAMETER (R=.61803399,C=1.-R)
REAL f1,f2,x0,x1,x2,x3
x0=ax
x3=cx
if(abs(cx-bx)>abs(bx-ax)) then
  x1=bx
  x2=bx+C*(cx-bx)
else
  x2=bx
  x1=bx-C*(bx-ax)
endif
f1=f(x1)
f2=f(x2)
do
  if(abs(x3-x0)<=tol*(abs(x1)+abs(x2))) exit
  if(f2<f1) then
    x0=x1
    x1=x2
    x2=R*x1+C*x3
    f1=f2
    f2=f(x2)
  else
    x3=x2
    x2=x1
    x1=R*x2+C*x0
    f2=f1
    f1=f(x1)
  endif
end do
if(f1<f2) then
  golden=f1
  xmin=x1
else
  golden=f2
  xmin=x2
endif
END FUNCTION golden

⌨️ 快捷键说明

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