Class ContinuedFraction


  • public abstract class ContinuedFraction
    extends Object
    Provides a generic means to evaluate continued fractions.

    The continued fraction uses the following form for the numerator (a) and denominator (b) coefficients:

                  a1
     b0 + ------------------
          b1 +      a2
               -------------
               b2 +    a3
                    --------
                    b3 + ...
     

    Subclasses must provide the a and b coefficients to evaluate the continued fraction.

    This class allows evaluation of the fraction for a specified evaluation point x; the point can be used to express the values of the coefficients. Evaluation of a continued fraction from a generator of the coefficients can be performed using GeneralizedContinuedFraction. This may be preferred if the coefficients can be computed with updates to the previous coefficients.

    • Method Detail

      • getA

        protected abstract double getA​(int n,
                                       double x)
        Defines the n-th "a" coefficient of the continued fraction.
        Parameters:
        n - Index of the coefficient to retrieve.
        x - Evaluation point.
        Returns:
        the coefficient an.
      • getB

        protected abstract double getB​(int n,
                                       double x)
        Defines the n-th "b" coefficient of the continued fraction.
        Parameters:
        n - Index of the coefficient to retrieve.
        x - Evaluation point.
        Returns:
        the coefficient bn.
      • evaluate

        public double evaluate​(double x,
                               double epsilon)
        Evaluates the continued fraction.
        Parameters:
        x - the evaluation point.
        epsilon - Maximum relative error allowed.
        Returns:
        the value of the continued fraction evaluated at x.
        Throws:
        ArithmeticException - if the algorithm fails to converge.
        ArithmeticException - if the maximal number of iterations is reached before the expected convergence is achieved.
        See Also:
        evaluate(double,double,int)
      • evaluate

        public double evaluate​(double x,
                               double epsilon,
                               int maxIterations)
        Evaluates the continued fraction.

        The implementation of this method is based on the modified Lentz algorithm as described on page 508 in:

        Parameters:
        x - Point at which to evaluate the continued fraction.
        epsilon - Maximum relative error allowed.
        maxIterations - Maximum number of iterations.
        Returns:
        the value of the continued fraction evaluated at x.
        Throws:
        ArithmeticException - if the algorithm fails to converge.
        ArithmeticException - if the maximal number of iterations is reached before the expected convergence is achieved.