scipy.optimize --- 求根與最小化¶
scipy.optimize 子模組提供簡單的常式,用以尋找使用者定義純量函式的根與極小值。由於每次迭代都必須回呼使用者提供的 Python 可呼叫物件,相較於純 Python 實作的速度提升幅度有限(通常約 2 倍)。
函式¶
- scipy.optimize.bisect(f: Callable[[float], float], a: float, b: float, *, xtol: float = xtolerance, maxiter: int = 100) float¶
使用二分法在區間
[a, b]中尋找 f 的根。f 在該區間上必須變號。- 參數:
f -- 可呼叫物件,接受單一
float並回傳float。a -- 區間的左端點。
b -- 區間的右端點。
xtol -- 根位置的絕對容限(預設
xtolerance)。maxiter -- 最大二分次數(預設
100)。
- 回傳:
以
float形式回傳的根位置。- 引發:
ValueError -- 若
f(a) * f(b) > 0。
- scipy.optimize.curve_fit(f: Callable[..., float], xdata: ndarray | list | tuple, ydata: ndarray | list | tuple, p0: ndarray | list | tuple, *, xatol: float = xtolerance, fatol: float = xtolerance, maxiter: int | None = None) None¶
非線性最小平方曲線擬合(Levenberg-Marquardt)的占位實作。為了 API 相容性而列於模組表中,但目前僅為占位符:它會接受並驗證引數,卻一律回傳
None。在此常式實作完成之前,請改用fmin()或外部函式庫。- 參數:
f -- 模型可呼叫物件
f(x, *params) -> float。xdata -- 由自變數值組成的一維類陣列。
ydata -- 由因變數值組成的一維類陣列,長度與 xdata 相同。
p0 -- 由初始參數估計值組成的一維類陣列。
- scipy.optimize.fmin(f: Callable[[float], float], x0: float, *, xatol: float = xtolerance, fatol: float = xtolerance, maxiter: int = 200) float¶
使用下坡單純形(Nelder-Mead)法尋找純量函式 f 局部極小值的位置。
- 參數:
f -- 可呼叫物件,接受單一
float並回傳float。x0 -- 初始猜測值。
xatol -- 位置的絕對容限(預設
xtolerance)。fatol -- 函式值的絕對容限(預設
xtolerance)。maxiter -- 最大迭代次數(預設
200)。
- 回傳:
以
float形式回傳的極小值位置。
- scipy.optimize.newton(f: Callable[[float], float], x0: float, *, tol: float = xtolerance, rtol: float = rtolerance, maxiter: int = 50) float¶
以 Newton-Raphson(割線)法尋找實值純量函式 f 的零點。
- 參數:
f -- 可呼叫物件,接受單一
float並回傳float。x0 -- 初始猜測值。
tol -- 根的絕對容限(預設
xtolerance)。rtol -- 根的相對容限(預設
rtolerance)。maxiter -- 最大迭代次數(預設
50)。
- 回傳:
以
float形式回傳的根位置。