tplquad#
- scipy.integrate.tplquad(func, a, b, gfun, hfun, qfun, rfun, args=(), epsabs=1.49e-08, epsrel=1.49e-08)[Quelle]#
Berechnet ein dreifaches (bestimmtes) Integral.
Gibt das dreifache Integral von
func(z, y, x)vonx = a..b,y = gfun(x)..hfun(x)undz = qfun(x,y)..rfun(x,y)zurück.- Parameter:
- funcFunktion
Eine Python-Funktion oder Methode mit mindestens drei Variablen in der Reihenfolge (z, y, x).
- a, bfloat
Die Integrationsgrenzen für x: a < b
- gfunFunktion oder float
Die untere Grenzlinie für y, die eine Funktion ist, die ein einzelnes Gleitkommaargument (x) nimmt und ein Gleitkommaergebnis zurückgibt, oder ein float, das eine konstante Grenzlinie angibt.
- hfunFunktion oder float
Die obere Grenzlinie für y (gleiche Anforderungen wie gfun).
- qfunFunktion oder float
Die untere Grenzfläche für z. Es muss eine Funktion sein, die zwei Floats in der Reihenfolge (x, y) nimmt und einen Float zurückgibt, oder ein Float, der eine konstante Grenzfläche angibt.
- rfunFunktion oder float
Die obere Grenzfläche für z. (Gleiche Anforderungen wie qfun.)
- argstuple, optional
Zusätzliche Argumente, die an func übergeben werden.
- epsabsfloat, optional
Absolute Toleranz, die direkt an die innerste 1-D-Quadraturintegration übergeben wird. Standard ist 1,49e-8.
- epsrelfloat, optional
Relative Toleranz der innersten 1-D-Integrale. Standard ist 1,49e-8.
- Rückgabe:
- yfloat
Das resultierende Integral.
- abserrfloat
Eine Schätzung des Fehlers.
Siehe auch
quadAdaptive Quadratur mit QUADPACK
fixed_quadGauß-Quadratur fester Ordnung
dblquadDoppelte Integrale
nquadN-dimensionale Integrale
rombIntegratoren für abgetastete Daten
simpsonIntegratoren für abgetastete Daten
scipy.specialFür Koeffizienten und Wurzeln orthogonaler Polynome
Hinweise
Für gültige Ergebnisse muss das Integral konvergieren; das Verhalten bei divergenten Integralen ist nicht garantiert.
Details zu den QUADPACK-Level-Routinen
quadruft Routinen aus der FORTRAN-Bibliothek QUADPACK auf. Dieser Abschnitt gibt Details zu den Bedingungen für den Aufruf jeder Routine und eine kurze Beschreibung jeder Routine. Für jede Integrationsebene wirdqagsefür endliche Grenzen oderqagieverwendet, wenn eine (oder beide!) Grenzen unendlich sind. Das Folgende liefert eine kurze Beschreibung aus [1] für jede Routine.- qagse
ist ein Integrator, der auf global adaptiver Intervallunterteilung in Verbindung mit Extrapolation basiert und die Effekte von Integranden-Singularitäten verschiedener Typen eliminiert. Die Integration wird mit einer 21-Punkt-Gauss-Kronrod-Quadratur innerhalb jedes Teilintervalls durchgeführt.
- qagie
behandelt die Integration über unendliche Intervalle. Der unendliche Bereich wird auf ein endliches Intervall abgebildet und anschließend wird die gleiche Strategie wie in
QAGSangewendet.
Referenzen
[1]Piessens, Robert; de Doncker-Kapenga, Elise; Überhuber, Christoph W.; Kahaner, David (1983). QUADPACK: A subroutine package for automatic integration. Springer-Verlag. ISBN 978-3-540-12553-2.
Beispiele
Berechnet das dreifache Integral von
x * y * z, wobeixvon 1 bis 2,yvon 2 bis 3 undzvon 0 bis 1 reicht. Das heißt, \(\int^{x=2}_{x=1} \int^{y=3}_{y=2} \int^{z=1}_{z=0} x y z \,dz \,dy \,dx\).>>> import numpy as np >>> from scipy import integrate >>> f = lambda z, y, x: x*y*z >>> integrate.tplquad(f, 1, 2, 2, 3, 0, 1) (1.8749999999999998, 3.3246447942574074e-14)
Berechnet \(\int^{x=1}_{x=0} \int^{y=1-2x}_{y=0} \int^{z=1-x-2y}_{z=0} x y z \,dz \,dy \,dx\). Hinweis: qfun/rfun nimmt Argumente in der Reihenfolge (x, y) entgegen, obwohl
fArgumente in der Reihenfolge (z, y, x) nimmt.>>> f = lambda z, y, x: x*y*z >>> integrate.tplquad(f, 0, 1, 0, lambda x: 1-2*x, 0, lambda x, y: 1-x-2*y) (0.05416666666666668, 2.1774196738157757e-14)
Berechnet \(\int^{x=1}_{x=0} \int^{y=1}_{y=0} \int^{z=1}_{z=0} a x y z \,dz \,dy \,dx\) für \(a=1, 3\).
>>> f = lambda z, y, x, a: a*x*y*z >>> integrate.tplquad(f, 0, 1, 0, 1, 0, 1, args=(1,)) (0.125, 5.527033708952211e-15) >>> integrate.tplquad(f, 0, 1, 0, 1, 0, 1, args=(3,)) (0.375, 1.6581101126856635e-14)
Berechnet das dreidimensionale Gaußsche Integral, das ist das Integral der Gaußschen Funktion \(f(x,y,z) = e^{-(x^{2} + y^{2} + z^{2})}\) über \((-\infty,+\infty)\). Das heißt, berechnet das Integral \(\iiint^{+\infty}_{-\infty} e^{-(x^{2} + y^{2} + z^{2})} \,dz \,dy\,dx\).
>>> f = lambda x, y, z: np.exp(-(x ** 2 + y ** 2 + z ** 2)) >>> integrate.tplquad(f, -np.inf, np.inf, -np.inf, np.inf, -np.inf, np.inf) (5.568327996830833, 4.4619078828029765e-08)