当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy optimize.bracket用法及代码示例


本文简要介绍 python 语言中 scipy.optimize.bracket 的用法。

用法:

scipy.optimize.bracket(func, xa=0.0, xb=1.0, args=(), grow_limit=110.0, maxiter=1000)#

将函数的最小值括起来。

给定一个函数和不同的初始点,沿下坡方向(由初始点定义)搜索并返回包含函数最小值的三个点。

参数

func 可调用 f(x,*args)

最小化的目标函数。

xa, xb 浮点数,可选

初始点。默认 xa 为 0.0,xb 为 1.0。局部最小值不需要包含在该区间内。

args 元组,可选

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

grow_limit 浮点数,可选

最大增长限制。默认为 110.0

maxiter 整数,可选

要执行的最大迭代次数。默认为 1000。

返回

xa, xb, xc 浮点数

括号的最终点。

fa, fb, fc 浮点数

括号点处的目标函数值。

funcalls int

进行的函数评估次数。

抛出

BracketError

如果在算法终止之前没有找到有效的括号。有关有效括号的条件,请参阅注释。

注意

该算法尝试找到满足 的三个严格排序点(即 ),其中必须严格满足不等式之一,并且所有 必须是有限的。

例子

这个函数可以找到一个函数的下凸区域:

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy.optimize import bracket
>>> def f(x):
...     return 10*x**2 + 3*x + 5
>>> x = np.linspace(-2, 2)
>>> y = f(x)
>>> init_xa, init_xb = 0.1, 1
>>> xa, xb, xc, fa, fb, fc, funcalls = bracket(f, xa=init_xa, xb=init_xb)
>>> plt.axvline(x=init_xa, color="k", linestyle="--")
>>> plt.axvline(x=init_xb, color="k", linestyle="--")
>>> plt.plot(x, y, "-k")
>>> plt.plot(xa, fa, "bx")
>>> plt.plot(xb, fb, "rx")
>>> plt.plot(xc, fc, "bx")
>>> plt.show()
scipy-optimize-bracket-1_00_00.png

请注意,两个初始点都位于最小值的右侧,第三个点位于 “downhill” 方向:函数呈现递减的方向(向左)。最终点严格排序,中间点的函数值小于端点的函数值;由此可见,最小值必须位于括号内。

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.optimize.bracket。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。