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)[源代码][源代码]#
使用二分法在区间内寻找函数的根。
基本二分法程序,用于在参数 a 和 b 之间找到函数 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
。- maxiterint, 可选
如果在 maxiter 次迭代中未达到收敛,则会引发错误。必须 >= 0。
- 参数tuple, 可选
包含函数的额外参数 f。f 通过
apply(f, (x)+args)
调用。- 完整输出bool, 可选
如果 full_output 为 False,则返回根。如果 full_output 为 True,返回值为
(x, r)
,其中 x 是根,r 是一个RootResults
对象。- dispbool, 可选
如果为 True,则在算法未收敛时引发 RuntimeError。否则,收敛状态记录在
RootResults
返回对象中。
- 返回:
- 根浮动
a 和 b 之间 f 的根。
- r :
RootResults
(如果full_output = True
则存在)RootResults(如果 full_output = True 则存在) 包含收敛信息的对象。特别是,如果例程收敛,
r.converged
为 True。
示例
>>> 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