scipy.integrate — Integrazione numerica

Il sottomodulo scipy.integrate fornisce routine di integrazione numerica per funzioni a valori reali di una sola variabile. Gli algoritmi non sono portati da scipy.integrate di CPython ma derivati dall’implementazione di riferimento disponibile su https://www.genivia.com/qthsh.html.

L’integrazione numerica funziona meglio con l’aritmetica float64 abilitata. Con l’aritmetica float32 le routine funzionano ancora, con precisione ridotta. La tolleranza di errore richiesta può essere specificata tramite l’argomento chiave eps; il valore predefinito è il valore etolerance in fase di compilazione (1e-14 per fp64, 1e-8 per fp32).

Funzioni

scipy.integrate.quad(f: Callable[[float], float], a: float, b: float, *, order: int = 5, eps: float = etolerance) tuple[float, float]

Integra f da a a b usando una quadratura adattiva di Gauss-Kronrod (G10, K21). Questo è l’integratore generico consigliato.

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

  • a – limite inferiore di integrazione.

  • b – limite superiore di integrazione.

  • order – ordine di integrazione (predefinito 5).

  • eps – tolleranza di errore (predefinito etolerance).

Ritorna:

una tupla di 2 elementi (result, error) di float che fornisce il valore dell’integrale e una stima dell’errore.

scipy.integrate.romberg(f: Callable[[float], float], a: float, b: float, *, steps: int = 100, eps: float = etolerance) float

Integra f da a a b usando il metodo di Romberg, una formula di Newton-Cotes che valuta l’integranda in punti equispaziati. È più adatto a integrande con derivate continue. Nota che scipy.integrate.romberg è deprecato in CPython a partire da SciPy 1.12.0; preferisci quad() per il nuovo codice.

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

  • a – limite inferiore di integrazione.

  • b – limite superiore di integrazione.

  • steps – numero di passi (predefinito 100).

  • eps – tolleranza di errore (predefinito etolerance).

Ritorna:

il valore dell’integrale come float.

scipy.integrate.simpson(f: Callable[[float], float], a: float, b: float, *, steps: int = 100, eps: float = etolerance) float

Integra f da a a b usando la regola di Simpson adattiva. A differenza di scipy.integrate.simpson di CPython, questa funzione accetta un callable e sceglie internamente la spaziatura dei campioni invece di accettare un array di valori di funzione precalcolati.

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

  • a – limite inferiore di integrazione.

  • b – limite superiore di integrazione.

  • steps – numero di passi (predefinito 100).

  • eps – tolleranza di errore (predefinito etolerance).

Ritorna:

il valore dell’integrale come float.

scipy.integrate.tanhsinh(f: Callable[[float], float], a: float, b: float, *, levels: int = 6, eps: float = etolerance) tuple[float, float]

Integra f da a a b usando la famiglia di quadrature Tanh-Sinh, Sinh-Sinh ed Exp-Sinh (doppio-esponenziale). Questa è la routine da usare quando l’integranda presenta singolarità o derivate infinite agli estremi, ed è l’unica routine di questo sottomodulo che accetta limiti di integrazione infiniti (ad esempio -np.inf, np.inf).

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

  • a – limite inferiore di integrazione; può essere -np.inf.

  • b – limite superiore di integrazione; può essere np.inf.

  • levels – numero di livelli di raffinamento (predefinito 6).

  • eps – tolleranza di errore (predefinito etolerance).

Ritorna:

una tupla di 2 elementi (result, error) di float che fornisce il valore dell’integrale e una stima dell’errore.