當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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