当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy optimize.toms748用法及代码示例


本文简要介绍 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必须是连续的。算法 748k=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

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.optimize.toms748。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。