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 < xc
且func(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)