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