scipy.optimize.

ridder#

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

使用 Ridder 方法找到区间内函数的根。

参数:
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_outputbool,可选

如果 full_output 为 False,则返回根。如果 full_output 为 True,则返回值为 (x, r),其中 x 为根,而 rRootResults 对象。

dispbool,可选

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

返回值:
root浮点数

fab 之间的根。

rRootResults(在 full_output = True 时显示)

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

另请参阅

brentqbrenthbisectnewton

1-D 根寻找

fixed_point

标量不动点查找器

说明

在参数 ab 之间使用 [Ridders1979] 方法来找到函数 f 的根。Ridders 方法比二分查找法快,但通常不如 Brent 例程快。 [Ridders1979] 提供了算法的经典描述和来源。在任何近期版本的 Numerical Recipes 中也可以找到描述。

为了更仔细地考虑容差,此处使用的例程与标准展示略有不同。

参考

[Ridders1979] (1,2)

Ridders, C. F. J. “A New Algorithm for Computing a Single Root of a Real Continuous Function.” IEEE Trans. Circuits Systems 26, 979-980, 1979.

示例

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