scipy.integrate — Numerische Integration

Das Submodul scipy.integrate stellt Routinen zur numerischen Integration für reellwertige Funktionen einer Variablen bereit. Die Algorithmen sind nicht aus CPythons scipy.integrate portiert, sondern von der Referenzimplementierung unter https://www.genivia.com/qthsh.html abgeleitet.

Die numerische Integration funktioniert am besten mit aktivierter float64-Arithmetik. Mit float32-Arithmetik funktionieren die Routinen ebenfalls, jedoch mit reduzierter Genauigkeit. Die erforderliche Fehlertoleranz kann über das Schlüsselwortargument eps angegeben werden; der Standardwert ist der zur Compile-Zeit festgelegte etolerance-Wert (1e-14 für fp64, 1e-8 für fp32). Komplexe Zahlen werden nicht unterstützt.

Funktionen

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

Integriert f von a bis b mit einer adaptiven Gauß-Kronrod-Quadratur (G10, K21). Dies ist der empfohlene Allzweck-Integrator.

Parameter:
  • f – ein aufrufbares Objekt, das einen einzelnen float entgegennimmt und einen float zurückgibt.

  • a – untere Integrationsgrenze.

  • b – obere Integrationsgrenze.

  • order – Integrationsordnung (Standardwert 5).

  • eps – Fehlertoleranz (Standardwert etolerance).

Rückgabe:

ein 2-Tupel (result, error) aus floats, das den Wert des Integrals und eine Fehlerschätzung angibt.

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

Integriert f von a bis b mit dem Romberg-Verfahren, einer Newton-Cotes-Formel, die den Integranden an gleichmäßig verteilten Punkten auswertet. Am besten geeignet für Integranden mit stetigen Ableitungen. Beachten Sie, dass scipy.integrate.romberg in CPython seit SciPy 1.12.0 als veraltet gilt; bevorzugen Sie quad() für neuen Code.

Parameter:
  • f – ein aufrufbares Objekt, das einen einzelnen float entgegennimmt und einen float zurückgibt.

  • a – untere Integrationsgrenze.

  • b – obere Integrationsgrenze.

  • steps – Anzahl der Schritte (Standardwert 100).

  • eps – Fehlertoleranz (Standardwert etolerance).

Rückgabe:

der Wert des Integrals als float.

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

Integriert f von a bis b mit der adaptiven Simpson-Regel. Anders als CPythons scipy.integrate.simpson nimmt diese Funktion ein aufrufbares Objekt entgegen und wählt den Abtastabstand intern, statt ein Array vorab berechneter Funktionswerte zu erwarten.

Parameter:
  • f – ein aufrufbares Objekt, das einen einzelnen float entgegennimmt und einen float zurückgibt.

  • a – untere Integrationsgrenze.

  • b – obere Integrationsgrenze.

  • steps – Anzahl der Schritte (Standardwert 100).

  • eps – Fehlertoleranz (Standardwert etolerance).

Rückgabe:

der Wert des Integrals als float.

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

Integriert f von a bis b mit der Quadraturfamilie Tanh-Sinh, Sinh-Sinh und Exp-Sinh (doppelt-exponentiell). Dies ist die Routine, die zu verwenden ist, wenn der Integrand an den Endpunkten Singularitäten oder unendliche Ableitungen aufweist, und sie ist die einzige Routine in diesem Submodul, die unendliche Integrationsgrenzen akzeptiert (z. B. -np.inf, np.inf).

Parameter:
  • f – ein aufrufbares Objekt, das einen einzelnen float entgegennimmt und einen float zurückgibt.

  • a – untere Integrationsgrenze; darf -np.inf sein.

  • b – obere Integrationsgrenze; darf np.inf sein.

  • levels – Anzahl der Verfeinerungsstufen (Standardwert 6).

  • eps – Fehlertoleranz (Standardwert etolerance).

Rückgabe:

ein 2-Tupel (result, error) aus floats, das den Wert des Integrals und eine Fehlerschätzung angibt.