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.