Class AdaptiveQuadrature
java.lang.Object
de.tu_bs.isbs.util.math.quadrature.AdaptiveQuadrature
public class AdaptiveQuadrature
extends java.lang.Object
Zugriff auf die QUADPACK-Funktion dqage.
ACHTUNG: Nicht thread-safe! Eine Instanz von AdaptiveQuadrature darf zu einer Zeit nur von einem Thread verwendet werden. Die Integration darf außerdem nicht rekursiv aufgerufen werden: Dies betrifft z.B. Fälle, in denen die zu integrierende Funktion ihrerseits eine Integralberechnung enthält. In solchen Fällen müssen verschiedene Instanzen von AdaptiveQuadrature verwendet werden. (Es wird geprüft, ob bereits ein Aufruf der Funktion vorliegt. In diesem Fall wird eine RuntimeException ausgelöst.)
- Author:
- Stefan
-
Field Summary
Fields Modifier and Type Field Description static double
DEFAULT_EPSABS
static double
DEFAULT_EPSREL
static int
DEFAULT_KEY
static int
DEFAULT_MAX_EVAL
-
Constructor Summary
Constructors Constructor Description AdaptiveQuadrature()
-
Method Summary
Modifier and Type Method Description int
getLimit(int maxEval)
Berechnet die Anzahl der erlaubten Unterteilungen (limit) aus einer Angabe der maximal erlaubten Funktionsauswertungen (maxEval).AdaptiveQuadratureResult
integrate(UnivariateDoubleFunction fun, double a, double b)
Adaptive Integration mit QUADPACK-Funktion dqage.void
setEpsabs(double epsabs)
void
setEpsrel(double epsrel)
void
setKey(int key)
void
setMaxEval(int maxEval)
-
Field Details
-
DEFAULT_KEY
public static final int DEFAULT_KEY- See Also:
- Constant Field Values
-
DEFAULT_MAX_EVAL
public static final int DEFAULT_MAX_EVAL- See Also:
- Constant Field Values
-
DEFAULT_EPSABS
public static final double DEFAULT_EPSABS- See Also:
- Constant Field Values
-
DEFAULT_EPSREL
public static final double DEFAULT_EPSREL- See Also:
- Constant Field Values
-
-
Constructor Details
-
AdaptiveQuadrature
public AdaptiveQuadrature()
-
-
Method Details
-
setEpsabs
public void setEpsabs(double epsabs) -
setEpsrel
public void setEpsrel(double epsrel) -
setKey
public void setKey(int key) -
setMaxEval
public void setMaxEval(int maxEval) -
integrate
public AdaptiveQuadratureResult integrate(UnivariateDoubleFunction fun, double a, double b) throws FunctionValue.FunctionEvaluationExceptionAdaptive Integration mit QUADPACK-Funktion dqage.- Parameters:
fun
- Integrand.a
- untere Integrationsgrenze.b
- obere Integrationsgrenze.- Returns:
- AdaptiveQuadratureResult mit Integralwert und Fehlerstatus.
- Throws:
FunctionValue.FunctionEvaluationException
- bei Problemen mit der Auswertung des Integranden.java.lang.RuntimeException
- wenn ein rekursiver Aufruf erfolgt. (Schützt in gewissen Grenzen auch vor einem versehentlichen nebenläufigen Aufruf, was jedoch nicht garantiert wird.)
-
getLimit
public int getLimit(int maxEval)Berechnet die Anzahl der erlaubten Unterteilungen (limit) aus einer Angabe der maximal erlaubten Funktionsauswertungen (maxEval).Erklärung: DQAGE macht maximal A = (2*limit-1)*N Auswertungen. (N=Anzahl Auswertungen eines Aufrufs der Funktion 'dqkN')
- Parameters:
maxEval
-- Returns:
- Parameter limit für die dqage-Funktion.
-