scipy.optimize.

bisect#

scipy.optimize.bisect(f, a, b, args=(), xtol=2e-12, rtol=np.float64(8.881784197001252e-16), maxiter=100, full_output=False, disp=True)[source]#

使用二分法在区间内查找函数的根。

基本二分法程序,用于在参数 ab 之间查找函数 f 的根。 f(a)f(b) 不能有相同的符号。 速度慢但可靠。

参数:
f函数

返回数字的 Python 函数。 f 必须是连续的,并且 f(a) 和 f(b) 必须有相反的符号。

a标量

括号区间 [a,b] 的一端。

b标量

括号区间 [a,b] 的另一端。

xtol数字,可选

计算出的根 x0 将满足 np.allclose(x, x0, atol=xtol, rtol=rtol),其中 x 是精确的根。 参数必须为正数。

rtol数字,可选

计算出的根 x0 将满足 np.allclose(x, x0, atol=xtol, rtol=rtol),其中 x 是精确的根。 参数不能小于其默认值 4*np.finfo(float).eps

maxiter整数,可选

如果在 maxiter 次迭代中未达到收敛,则会引发错误。 必须 >= 0。

args元组,可选

包含函数 f 的额外参数。 fapply(f, (x)+args) 调用。

full_output布尔值,可选

如果 full_output 为 False,则返回根。 如果 full_output 为 True,则返回值为 (x, r),其中 x 是根,r 是一个 RootResults 对象。

disp布尔值,可选

如果为 True,则如果算法未收敛,则引发 RuntimeError。 否则,收敛状态将记录在 RootResults 返回对象中。

返回:
root浮点数

fab 之间的根。

rRootResults (如果 full_output = True,则存在)

包含有关收敛的信息的对象。 特别是,r.converged 如果例程收敛则为 True。

另请参见

brentq, brenth, bisect, newton
fixed_point

标量不动点查找器

fsolve

n 维求根

示例

>>> def f(x):
...     return (x**2 - 1)
>>> from scipy import optimize
>>> root = optimize.bisect(f, 0, 2)
>>> root
1.0
>>> root = optimize.bisect(f, -2, 0)
>>> root
-1.0