Class BaseAbstractUnivariateIntegrator

    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected BaseAbstractUnivariateIntegrator​(double relativeAccuracy, double absoluteAccuracy)
      Construct an integrator with given accuracies.
      protected BaseAbstractUnivariateIntegrator​(double relativeAccuracy, double absoluteAccuracy, int minimalIterationCount, int maximalIterationCount)
      Construct an integrator with given accuracies and iteration counts.
      protected BaseAbstractUnivariateIntegrator​(int minimalIterationCount, int maximalIterationCount)
      Construct an integrator with given iteration counts.
    • Method Summary

      Modifier and Type Method Description
      protected double computeObjectiveValue​(double point)
      Compute the objective function value.
      protected abstract double doIntegrate()
      Method for implementing actual integration algorithms in derived classes.
      double getAbsoluteAccuracy()
      Get the absolute accuracy.
      int getEvaluations()
      Get the number of function evaluations of the last run of the integrator.
      int getIterations()
      Get the number of iterations of the last run of the integrator.
      protected double getMax()  
      int getMaximalIterationCount()
      Get the upper limit for the number of iterations.
      protected double getMin()  
      int getMinimalIterationCount()
      Get the min limit for the number of iterations.
      double getRelativeAccuracy()
      Get the relative accuracy.
      double integrate​(int maxEval, UnivariateFunction f, double lower, double upper)
      Integrate the function in the given interval.
      protected void setup​(int maxEval, UnivariateFunction f, double lower, double upper)
      Prepare for computation.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DEFAULT_ABSOLUTE_ACCURACY

        public static final double DEFAULT_ABSOLUTE_ACCURACY
        Default absolute accuracy.
        See Also:
        Constant Field Values
      • DEFAULT_RELATIVE_ACCURACY

        public static final double DEFAULT_RELATIVE_ACCURACY
        Default relative accuracy.
        See Also:
        Constant Field Values
      • DEFAULT_MIN_ITERATIONS_COUNT

        public static final int DEFAULT_MIN_ITERATIONS_COUNT
        Default minimal iteration count.
        See Also:
        Constant Field Values
      • DEFAULT_MAX_ITERATIONS_COUNT

        public static final int DEFAULT_MAX_ITERATIONS_COUNT
        Default maximal iteration count.
        See Also:
        Constant Field Values
      • iterations

        protected final Incrementor iterations
        The iteration count.
    • Constructor Detail

      • BaseAbstractUnivariateIntegrator

        protected BaseAbstractUnivariateIntegrator​(double relativeAccuracy,
                                                   double absoluteAccuracy,
                                                   int minimalIterationCount,
                                                   int maximalIterationCount)
                                            throws NotStrictlyPositiveException,
                                                   NumberIsTooSmallException
        Construct an integrator with given accuracies and iteration counts.

        The meanings of the various parameters are:

        • relative accuracy: this is used to stop iterations if the absolute accuracy can't be achieved due to large values or short mantissa length. If this should be the primary criterion for convergence rather then a safety measure, set the absolute accuracy to a ridiculously small value, like Precision.SAFE_MIN.
        • absolute accuracy: The default is usually chosen so that results in the interval -10..-0.1 and +0.1..+10 can be found with a reasonable accuracy. If the expected absolute value of your results is of much smaller magnitude, set this to a smaller value.
        • minimum number of iterations: minimal iteration is needed to avoid false early convergence, e.g. the sample points happen to be zeroes of the function. Users can use the default value or choose one that they see as appropriate.
        • maximum number of iterations: usually a high iteration count indicates convergence problems. However, the "reasonable value" varies widely for different algorithms. Users are advised to use the default value supplied by the algorithm.
        Parameters:
        relativeAccuracy - relative accuracy of the result
        absoluteAccuracy - absolute accuracy of the result
        minimalIterationCount - minimum number of iterations
        maximalIterationCount - maximum number of iterations
        Throws:
        NotStrictlyPositiveException - if minimal number of iterations is not strictly positive
        NumberIsTooSmallException - if maximal number of iterations is lesser than or equal to the minimal number of iterations
      • BaseAbstractUnivariateIntegrator

        protected BaseAbstractUnivariateIntegrator​(double relativeAccuracy,
                                                   double absoluteAccuracy)
        Construct an integrator with given accuracies.
        Parameters:
        relativeAccuracy - relative accuracy of the result
        absoluteAccuracy - absolute accuracy of the result
      • BaseAbstractUnivariateIntegrator

        protected BaseAbstractUnivariateIntegrator​(int minimalIterationCount,
                                                   int maximalIterationCount)
                                            throws NotStrictlyPositiveException,
                                                   NumberIsTooSmallException
        Construct an integrator with given iteration counts.
        Parameters:
        minimalIterationCount - minimum number of iterations
        maximalIterationCount - maximum number of iterations
        Throws:
        NotStrictlyPositiveException - if minimal number of iterations is not strictly positive
        NumberIsTooSmallException - if maximal number of iterations is lesser than or equal to the minimal number of iterations