本文簡要介紹 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。