SciPy: integra
Quando una funzione non può essere integrata analiticamente, o è molto difficile da integrare analiticamente, si ricorre generalmente a metodi di integrazione numerica. SciPy ha una serie di routine per eseguire l'integrazione numerica. La maggior parte di loro si trovano nello stessoscipy.integratebiblioteca. La tabella seguente elenca alcune funzioni di uso comune.
Sr No. | Descrizione della funzione |
---|---|
1 | quad Integrazione unica |
2 | dblquad Doppia integrazione |
3 | tplquad Tripla integrazione |
4 | nquad n -fold integrazione multipla |
5 | fixed_quad Quadratura gaussiana, ordine n |
6 | quadrature Quadratura gaussiana alla tolleranza |
7 | romberg Integrazione di Romberg |
8 | trapz Regola trapezoidale |
9 | cumtrapz Regola trapezoidale per calcolare cumulativamente l'integrale |
10 | simps La regola di Simpson |
11 | romb Integrazione di Romberg |
12 | polyint Integrazione polinomiale analitica (NumPy) |
13 | poly1d Funzione di supporto per polyint (NumPy) |
Integrali singoli
La funzione Quad è il cavallo di battaglia delle funzioni di integrazione di SciPy. A volte viene chiamata integrazione numericaquadrature, da qui il nome. Normalmente è la scelta predefinita per eseguire singoli integrali di una funzione f (x) su un dato intervallo fisso da a a b.
$$ \ int_ {a} ^ {b} f (x) dx $$
La forma generale del quad è scipy.integrate.quad(f, a, b), Dove 'f' è il nome della funzione da integrare. Mentre "a" e "b" sono rispettivamente i limiti inferiore e superiore. Vediamo un esempio della funzione gaussiana, integrata su un intervallo di 0 e 1.
Dobbiamo prima definire la funzione → $ f (x) = e ^ {- x ^ 2} $, questo può essere fatto usando un'espressione lambda e quindi chiamare il metodo quad su quella funzione.
import scipy.integrate
from numpy import exp
f= lambda x:exp(-x**2)
i = scipy.integrate.quad(f, 0, 1)
print i
Il programma precedente genererà il seguente output.
(0.7468241328124271, 8.291413475940725e-15)
La funzione quad restituisce i due valori, in cui il primo numero è il valore dell'integrale e il secondo valore è la stima dell'errore assoluto nel valore dell'integrale.
Note- Poiché quad richiede la funzione come primo argomento, non possiamo passare direttamente exp come argomento. La funzione Quad accetta l'infinito positivo e negativo come limiti. La funzione Quad può integrare funzioni NumPy standard predefinite di una singola variabile, come exp, sin e cos.
Integrali multipli
La meccanica per la doppia e tripla integrazione è stata racchiusa nelle funzioni dblquad, tplquad e nquad. Queste funzioni integrano rispettivamente quattro o sei argomenti. I limiti di tutti gli integrali interni devono essere definiti come funzioni.
Doppi integrali
La forma generale di dblquadè scipy.integrate.dblquad (func, a, b, gfun, hfun). Dove, func è il nome della funzione da integrare, 'a' e 'b' sono i limiti inferiore e superiore della variabile x, rispettivamente, mentre gfun e hfun sono i nomi delle funzioni che definiscono i limiti inferiore e superiore della variabile y.
Ad esempio, eseguiamo il metodo del doppio integrale.
$$ \ int_ {0} ^ {1/2} dy \ int_ {0} ^ {\ sqrt {1-4y ^ 2}} 16xy \: dx $$
Definiamo le funzioni f, g e h, utilizzando le espressioni lambda. Si noti che anche se g e h sono costanti, come possono essere in molti casi, devono essere definite come funzioni, come abbiamo fatto qui per il limite inferiore.
import scipy.integrate
from numpy import exp
from math import sqrt
f = lambda x, y : 16*x*y
g = lambda x : 0
h = lambda y : sqrt(1-4*y**2)
i = scipy.integrate.dblquad(f, 0, 0.5, g, h)
print i
Il programma precedente genererà il seguente output.
(0.5, 1.7092350012594845e-14)
Oltre alle routine descritte sopra, scipy.integrate ha una serie di altre routine di integrazione, incluso nquad, che esegue un'integrazione multipla n-fold, così come altre routine che implementano vari algoritmi di integrazione. Tuttavia, quad e dblquad soddisferanno la maggior parte delle nostre esigenze di integrazione numerica.