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 形式回傳的根位置。