Class ContinuedFraction


  • public abstract class ContinuedFraction
    extends java.lang.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.

    • Constructor Summary

      Constructors 
      Constructor Description
      ContinuedFraction()
      Create an instance.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      double evaluate​(double x, double epsilon)
      Evaluates the continued fraction.
      double evaluate​(double x, double epsilon, int maxIterations)
      Evaluates the continued fraction.
      protected abstract double getA​(int n, double x)
      Defines the n-th "a" coefficient of the continued fraction.
      protected abstract double getB​(int n, double x)
      Defines the n-th "b" coefficient of the continued fraction.
      • Methods inherited from class java.lang.Object

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

      • ContinuedFraction

        public ContinuedFraction()
        Create an instance.
    • 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:
        java.lang.ArithmeticException - if the algorithm fails to converge.
        java.lang.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:
        java.lang.ArithmeticException - if the algorithm fails to converge.
        java.lang.ArithmeticException - if the maximal number of iterations is reached before the expected convergence is achieved.