本文简要介绍 python 语言中 scipy.optimize.brenth
的用法。
用法:
scipy.optimize.brenth(f, a, b, args=(), xtol=2e-12, rtol=8.881784197001252e-16, maxiter=100, full_output=False, disp=True)#
使用 Brent 方法和双曲外推法在括号区间中找到函数的根。
经典布伦特例程的变体,用于在参数 a 和 b 之间查找函数 f 的根,该例程使用双曲外推法而不是逆二次外推法。 Bus & Dekker (1975) 保证了该方法的收敛性,声称此处函数计算的上限比二分法的上限小 4 或 5 倍。 f(a) 和 f(b) 不能具有相同的符号。一般来说,与布伦特原油原油期货价格相当,但没有经过严格测试。它是使用双曲线外推法的割线法的安全版本。这里的版本是由 Chuck Harris 编写的,并实现了 [BusAndDekker1975] 的算法 M,可以在其中找到更多详细信息(收敛属性、附加注释等)
- f: 函数
Python 函数返回一个数字。 f 必须是连续的,并且 f(a) 和 f(b) 必须有相反的符号。
- a: 标量
包围区间 [a,b] 的一端。
- b: 标量
包围区间 [a,b] 的另一端。
- xtol: 编号,可选
计算出的根
x0
将满足np.allclose(x, x0, atol=xtol, rtol=rtol)
,其中x
是精确根。该参数必须为正数。与brentq
一样,对于好的函数,该方法通常会使用xtol/2
和rtol/2
满足上述条件。- rtol: 编号,可选
计算的根
x0
将满足np.allclose(x, x0, atol=xtol, rtol=rtol)
,其中x
是确切的根。该参数不能小于其默认值4*np.finfo(float).eps
。与brentq
一样,对于好的函数,该方法通常会满足上述条件xtol/2
和rtol/2
。- maxiter: 整数,可选
如果在 maxiter 迭代中未实现收敛,则会引发错误。必须 >= 0。
- args: 元组,可选
包含函数的额外参数f.f被称为
apply(f, (x)+args)
.- full_output: 布尔型,可选
如果full_output为 False,则返回根。如果full_output为真,返回值为
(x, r)
,其中x是根,并且r是一个RootResults
对象。- disp: 布尔型,可选
如果为真,如果算法没有收敛,则提高 RuntimeError。否则,收敛状态记录在任何
RootResults
返回对象中。
- root: 浮点数
a 和 b 之间的 f 的根。
- r:
RootResults
(如果full_output = True
则存在) 包含有关收敛信息的对象。特别是,如果例程收敛,
r.converged
为 True。
参数 ::
返回 ::
参考:
[巴士与德克尔1975]Bus, J. C. P., Dekker, T. J.,“两种保证收敛的高效算法,用于查找函数的零点”,ACM Transactions on Mathematical Software,Vol。 1,第 4 期,1975 年 12 月,第 330-345 页。第 3 节:“Algorithm M”。 DOI:10.1145/355656.355659
例子:
>>> def f(x): ... return (x**2 - 1)
>>> from scipy import optimize
>>> root = optimize.brenth(f, -2, 0) >>> root -1.0
>>> root = optimize.brenth(f, 0, 2) >>> root 1.0
相关用法
- Python SciPy optimize.brentq用法及代码示例
- Python SciPy optimize.brent用法及代码示例
- Python SciPy optimize.bracket用法及代码示例
- Python SciPy optimize.brute用法及代码示例
- Python SciPy optimize.broyden1用法及代码示例
- Python SciPy optimize.broyden2用法及代码示例
- Python SciPy optimize.bisect用法及代码示例
- Python SciPy optimize.basinhopping用法及代码示例
- Python SciPy optimize.rosen_der用法及代码示例
- Python SciPy optimize.line_search用法及代码示例
- Python SciPy optimize.rosen用法及代码示例
- Python SciPy optimize.shgo用法及代码示例
- Python SciPy optimize.minimize_scalar用法及代码示例
- Python SciPy optimize.root用法及代码示例
- Python SciPy optimize.fmin用法及代码示例
- Python SciPy optimize.NonlinearConstraint用法及代码示例
- Python SciPy optimize.KrylovJacobian用法及代码示例
- Python SciPy optimize.toms748用法及代码示例
- Python SciPy optimize.linprog_verbose_callback用法及代码示例
- Python SciPy optimize.milp用法及代码示例
- Python SciPy optimize.diagbroyden用法及代码示例
- Python SciPy optimize.isotonic_regression用法及代码示例
- Python SciPy optimize.golden用法及代码示例
- Python SciPy optimize.newton用法及代码示例
- Python SciPy optimize.fsolve用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.optimize.brenth。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。