scipy.optimize.

golden#

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

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

给定一个单变量函数和一个可能的括弧区间,返回该函数的最小值,该最小值被隔离到 tol 的小数精度。

参数:
func可调用对象 func(x,*args)

要最小化的目标函数。

args元组,可选

传递给 func 的其他参数(如果存在)。

brack元组,可选

可以是三元组 (xa, xb, xc),其中 xa < xb < xcfunc(xb) < func(xa) and  func(xb) < func(xc),或一对 (xa, xb) 作为下坡括弧搜索的初始点(请参阅 scipy.optimize.bracket)。 最小值 x 不一定满足 xa <= x <= xb

tol浮点数,可选

x 容差停止标准

full_output布尔值,可选

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

maxiter整数

要执行的最大迭代次数。

返回值:
xminndarray

最佳点。

fval浮点数

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

funcalls整数

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

另请参阅

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)