Class ContinuedFraction

java.lang.Object
org.apache.commons.numbers.fraction.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.

  • Constructor Details

    • ContinuedFraction

      public ContinuedFraction()
  • Method Details

    • 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

      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.