scipy.optimize — Ricerca di radici e minimizzazione

Il sottomodulo scipy.optimize fornisce semplici routine per trovare radici e minimi di funzioni scalari definite dall’utente. Poiché ogni iterazione deve richiamare il callable Python fornito dall’utente, il guadagno di velocità rispetto a un’implementazione in puro Python è modesto (tipicamente circa 2x).

Funzioni

scipy.optimize.bisect(f: Callable[[float], float], a: float, b: float, *, xtol: float = xtolerance, maxiter: int = 100) float

Trova una radice di f nell’intervallo [a, b] usando il metodo di bisezione. f deve cambiare segno sull’intervallo.

Parametri:
  • f – callable che accetta un singolo float e restituisce un float.

  • a – estremo sinistro dell’intervallo.

  • b – estremo destro dell’intervallo.

  • xtol – tolleranza assoluta sulla posizione della radice (predefinito xtolerance).

  • maxiter – numero massimo di bisezioni (predefinito 100).

Ritorna:

la posizione della radice come float.

Solleva:

ValueError – se 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

Stub per il fitting di curve ai minimi quadrati non lineari (Levenberg-Marquardt). Presente nella tabella del modulo per compatibilità delle API ma attualmente un segnaposto: accetta e convalida i suoi argomenti ma restituisce sempre None. Preferisci fmin() o librerie esterne finché questa routine non sarà implementata.

Parametri:
  • f – callable del modello f(x, *params) -> float.

  • xdata – array-like 1-D di valori indipendenti.

  • ydata – array-like 1-D di valori dipendenti, della stessa lunghezza di xdata.

  • p0 – array-like 1-D di stime iniziali dei parametri.

scipy.optimize.fmin(f: Callable[[float], float], x0: float, *, xatol: float = xtolerance, fatol: float = xtolerance, maxiter: int = 200) float

Trova la posizione di un minimo locale della funzione scalare f usando il metodo del simplesso discendente (Nelder-Mead).

Parametri:
  • f – callable che accetta un singolo float e restituisce un float.

  • x0 – stima iniziale.

  • xatol – tolleranza assoluta sulla posizione (predefinito xtolerance).

  • fatol – tolleranza assoluta sul valore della funzione (predefinito xtolerance).

  • maxiter – numero massimo di iterazioni (predefinito 200).

Ritorna:

la posizione del minimo come float.

scipy.optimize.newton(f: Callable[[float], float], x0: float, *, tol: float = xtolerance, rtol: float = rtolerance, maxiter: int = 50) float

Trova uno zero della funzione scalare a valori reali f con il metodo di Newton-Raphson (delle secanti).

Parametri:
  • f – callable che accetta un singolo float e restituisce un float.

  • x0 – stima iniziale.

  • tol – tolleranza assoluta sulla radice (predefinito xtolerance).

  • rtol – tolleranza relativa sulla radice (predefinito rtolerance).

  • maxiter – numero massimo di iterazioni (predefinito 50).

Ritorna:

la posizione della radice come float.