scipy.optimize.
bisect#
- scipy.optimize.bisect(f, a, b, args=(), xtol=2e-12, rtol=8.881784197001252e-16, maxiter=100, full_output=False, disp=True)[source]#
使用二分法在區間內尋找函數的根。
基本二分法程序,用於尋找函數 f 在參數 a 和 b 之間的根。f(a) 和 f(b) 不能有相同的符號。 速度慢但可靠。
- 參數:
- 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 的額外參數。f 由
apply(f, (x)+args)
呼叫。- full_output布林值,可選
如果 full_output 為 False,則返回根。 如果 full_output 為 True,則傳回值為
(x, r)
,其中 x 是根,而 r 是一個RootResults
物件。- disp布林值,可選
如果為 True,則在演算法未收斂時引發 RuntimeError。 否則,收斂狀態會記錄在
RootResults
返回物件中。
- 返回:
- root浮點數
f 在 a 和 b 之間的根。
- r
RootResults
(如果full_output = True
則存在) 包含收斂資訊的物件。 特別是,如果常式收斂,則
r.converged
為 True。
範例
>>> def f(x): ... return (x**2 - 1)
>>> from scipy import optimize
>>> root = optimize.bisect(f, 0, 2) >>> root 1.0
>>> root = optimize.bisect(f, -2, 0) >>> root -1.0