本文简要介绍 python 语言中 scipy.optimize.toms748
的用法。
用法:
scipy.optimize.toms748(f, a, b, args=(), k=1, xtol=2e-12, rtol=8.881784197001252e-16, maxiter=100, full_output=False, disp=True)#
使用 TOMS 算法 748 方法求根。
实现 Alefeld、Potro 和 Shi 的算法 748 方法,以求函数 f 在区间 [a , b] 上的根,其中 f(a) 和 f(b) 必须具有相反的符号。
它使用逆三次插值和“Newton-quadratic” 步骤的混合。 [APS1995]。
- f: 函数
Python 函数返回一个标量。函数 必须是连续的, 和 符号相反。
- a: 标量,
搜索区间的下边界
- b: 标量,
搜索区间的上边界
- args: 元组,可选
包含函数的额外参数f.f被称为
f(x, *args)
.- k: 整数,可选
执行每次迭代的牛顿二次步数。
k>=1
。- xtol: 标量,可选
计算出的根
x0
将满足np.allclose(x, x0, atol=xtol, rtol=rtol)
,其中x
是精确根。该参数必须为正数。- rtol: 标量,可选
计算的根
x0
将满足np.allclose(x, x0, atol=xtol, rtol=rtol)
,其中x
是确切的根。- maxiter: 整数,可选
如果在 maxiter 迭代中未实现收敛,则会引发错误。必须 >= 0。
- full_output: 布尔型,可选
如果full_output为 False,则返回根。如果full_output为真,返回值为
(x, r)
,其中x是根,并且r是一个RootResults
对象。- disp: 布尔型,可选
如果为真,如果算法没有收敛,则提高 RuntimeError。否则,收敛状态记录在
RootResults
返回对象中。
- root: 浮点数
f 的近似根
- r:
RootResults
(如果full_output = True
则存在) 包含有关收敛信息的对象。特别是,如果例程收敛,
r.converged
为 True。
参数 ::
返回 ::
注意:
f必须是连续的。算法 748
k=2
是渐近已知的最有效的算法,用于找到四次连续可微函数的根。与可能仅在最后一步减少封闭括号的长度的 Brent 算法相比,算法 748 在每次迭代中以与找到根相同的渐近效率来减少它。为了便于说明效率 index ,假设f有 4 个连续的导数。为了
k=1
,收敛阶数至少为 2.7,每次迭代大约渐近 2 次函数评估,效率 index 约为 1.65。为了k=2
,阶数约为 4.6,每次迭代渐近 3 次函数评估,效率 index 为 1.66。对于更高的值k,效率 index 接近第 k 根(3k-2)
, 因此k=1
或者k=2
通常是合适的。参考:
[APS1995]Alefeld, G. E. 和 Potra, F. A. 和 Shi, Yixun,算法 748:封闭连续函数的零点,ACM Trans。数学。软件。第 221 卷(1995 年)doi = {10.1145/210089.210111}
例子:
>>> def f(x): ... return (x**3 - 1) # only one real root at x = 1
>>> from scipy import optimize >>> root, results = optimize.toms748(f, 0, 2, full_output=True) >>> root 1.0 >>> results converged: True flag: converged function_calls: 11 iterations: 5 root: 1.0 method: toms748
相关用法
- 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.linprog_verbose_callback用法及代码示例
- Python SciPy optimize.bracket用法及代码示例
- Python SciPy optimize.milp用法及代码示例
- Python SciPy optimize.diagbroyden用法及代码示例
- Python SciPy optimize.bisect用法及代码示例
- Python SciPy optimize.isotonic_regression用法及代码示例
- Python SciPy optimize.golden用法及代码示例
- Python SciPy optimize.brute用法及代码示例
- Python SciPy optimize.newton用法及代码示例
- Python SciPy optimize.fsolve用法及代码示例
- Python SciPy optimize.Bounds用法及代码示例
- Python SciPy optimize.fixed_point用法及代码示例
- Python SciPy optimize.rosen_hess用法及代码示例
- Python SciPy optimize.nnls用法及代码示例
- Python SciPy optimize.broyden1用法及代码示例
- Python SciPy optimize.broyden2用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.optimize.toms748。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。