scipy.optimize.

金色#

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

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

给定一个单变量函数和一个可能的括号区间,返回一个函数的最小值,该最小值被隔离到指定的容差范围内。

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

要最小化的目标函数。

参数tuple, 可选

附加参数(如果存在),传递给 func。

括号tuple, 可选

一个三元组 (xa, xb, xc) 其中 xa < xb < xc 并且 func(xb) < func(xa) func(xb) < func(xc),或者一对 (xa, xb) 用于下坡括号搜索的初始点(参见 scipy.optimize.bracket)。最小化器 x 不一定满足 xa <= x <= xb

tolfloat, 可选

x 容差停止准则

完整输出bool, 可选

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

maxiter整数

要执行的最大迭代次数。

返回:
xminndarray

最佳点。

fval浮动

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

函数调用整数

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

参见

minimize_scalar

用于标量单变量函数的最小化算法的接口。特别参见’黄金分割’ 方法

注释

使用类似二分法的方法来缩小括号区间。

示例

我们分别展示当 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)