scipy.optimize.

golden#

scipy.optimize.golden(func, args=(), brack=None, tol=np.float64(1.4901161193847656e-08), full_output=0, maxiter=5000)[源代码]#

使用黄金分割法返回单变量函数的最小值点。

给定一个单变量函数和一个可能的区间,返回一个函数最小值点,其精度为tol。

参数:
funccallable func(x,*args)

要最小化的目标函数。

argstuple, optional

额外的参数(如果存在),传递给func。

bracktuple, optional

可以是三元组 (xa, xb, xc),其中 xa < xb < xcfunc(xb) < func(xa) and  func(xb) < func(xc),也可以是二元组 (xa, xb) 用作下坡区间搜索的初始点(参见 scipy.optimize.bracket)。最小值点 x 不一定满足 xa <= x <= xb

tolfloat, optional

x 容忍度停止标准

full_outputbool, optional

如果为 True,返回可选输出。

maxiterint

要执行的最大迭代次数。

返回:
xminndarray

最优解点。

fvalfloat

(可选输出)最优函数值。

funcallsint

(可选输出)目标函数评估次数。

另请参见

minimize_scalar

用于标量单变量函数最小化算法的接口。特别是参见“Golden”方法

说明

使用二分法模拟来减小括号区间。

示例

我们分别展示了当 brack 大小为 2 和 3 时函数的行为。在 brack 形式为 (xa,xb) 的情况下,对于给定值,输出不一定位于 (xa, xb) 范围内。

>>> def f(x):
...     return (x-1)**2
>>> from scipy import optimize
>>> minimizer = optimize.golden(f, brack=(1, 2))
>>> minimizer
1
>>> res = optimize.golden(f, brack=(-1, 0.5, 2), full_output=True)
>>> xmin, fval, funcalls = res
>>> f(xmin), fval
(9.925165290385052e-18, 9.925165290385052e-18)