scipy.optimize.

ridder#

scipy.optimize.ridder(f, a, b, args=(), xtol=2e-12, rtol=8.881784197001252e-16, maxiter=100, full_output=False, disp=True)[source]#

使用 Ridder 法在區間中尋找函數的根。

參數:
f函數

返回數值的 Python 函數。f 必須是連續函數,且 f(a) 和 f(b) 必須異號。

a純量

區間 [a,b] 的其中一端。

b純量

區間 [a,b] 的另一端。

xtol數值,選用

計算出的根 x0 將滿足 np.allclose(x, x0, atol=xtol, rtol=rtol),其中 x 是精確根。此參數必須為正數。

rtol數值,選用

計算出的根 x0 將滿足 np.allclose(x, x0, atol=xtol, rtol=rtol),其中 x 是精確根。此參數不能小於其預設值 4*np.finfo(float).eps

maxiter整數,選用

如果在 maxiter 次迭代中未達到收斂,則會引發錯誤。必須 >= 0。

args元組,選用

包含函數 f 的額外參數。fapply(f, (x)+args) 呼叫。

full_output布林值,選用

如果 full_output 為 False,則返回根。如果 full_output 為 True,則返回值為 (x, r),其中 x 是根,而 r 是一個 RootResults 物件。

disp布林值,選用

如果為 True,則在演算法未收斂時引發 RuntimeError。否則,收斂狀態會記錄在任何 RootResults 返回物件中。

返回:
root浮點數

fab 之間的根。

rRootResults (如果 full_output = True 則存在)

包含有關收斂資訊的物件。特別是,如果常式收斂,則 r.converged 為 True。

參見

brentq, brenth, bisect, newton

一維尋根

fixed_point

純量不動點尋找器

註解

使用 [Ridders1979] 方法在參數 ab 之間尋找函數 f 的根。Ridder 法比二分法快,但通常不如 Brent 常式快。[Ridders1979] 提供了該演算法的經典描述和來源。在任何最新版本的 Numerical Recipes 中也可以找到描述。

此處使用的常式與標準呈現方式略有不同,以便更仔細地處理容差。

參考文獻

[Ridders1979] (1,2)

Ridders, C. F. J. “A New Algorithm for Computing a Single Root of a Real Continuous Function.” IEEE Trans. Circuits Systems 26, 979-980, 1979.

範例

>>> def f(x):
...     return (x**2 - 1)
>>> from scipy import optimize
>>> root = optimize.ridder(f, 0, 2)
>>> root
1.0
>>> root = optimize.ridder(f, -2, 0)
>>> root
-1.0