scipy.optimize.

fminbound#

scipy.optimize.fminbound(func, x1, x2, args=(), xtol=1e-05, maxfun=500, full_output=0, disp=1)[源代码]#

标量函数的有界最小化。

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

要最小化的目标函数(必须接受和返回标量)。

x1, x2浮点数或数组标量

有限的优化边界。

args元组,可选

传递给函数的额外参数。

xtol浮点数,可选

收敛容差。

maxfun整数,可选

允许的最大函数评估次数。

full_output布尔值,可选

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

disp:整数,可选

如果非零,则打印消息。

0 : 不打印消息。

1 : 仅通知非收敛的消息。

2 : 也打印收敛的消息。

3 : 打印迭代结果。

返回:
xoptndarray

(在给定区间内)使目标函数最小化的参数。

fval数字

(可选输出)在最小化器处评估的函数值。

ierr整数

(可选输出)错误标志(如果收敛则为 0,如果达到最大函数调用次数则为 1)。

numfunc整数

(可选输出)进行的函数调用次数。

另请参阅

minimize_scalar

标量单变量函数的最小化算法的接口。特别参见“有界”方法

注释

使用 Brent 方法查找区间 x1 < xopt < x2 中标量函数 func 的局部最小值。(有关自动括号,请参见 brent。)

参考文献

[1]

Forsythe, G.E., M. A. Malcolm 和 C. B. Moler。“用于数学计算的计算机方法。” Prentice-Hall 自动计算系列 259 (1977)。

[2]

Brent, Richard P. 无导数最小化算法。 Courier Corporation, 2013。

示例

fminbound 查找给定范围内函数的最小值。以下示例说明了这一点。

>>> from scipy import optimize
>>> def f(x):
...     return (x-1)**2
>>> minimizer = optimize.fminbound(f, -4, 4)
>>> minimizer
1.0
>>> minimum = f(minimizer)
>>> minimum
0.0
>>> res = optimize.fminbound(f, 3, 4, full_output=True)
>>> minimizer, fval, ierr, numfunc = res
>>> minimizer
3.000005960860986
>>> minimum = f(minimizer)
>>> minimum, fval
(4.000023843479476, 4.000023843479476)