Class ContinuedFraction
java.lang.Object
org.apache.commons.numbers.fraction.ContinuedFraction
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 -
Method Summary
Modifier and TypeMethodDescriptiondoubleevaluate(double x, double epsilon) Evaluates the continued fraction.doubleevaluate(double x, double epsilon, int maxIterations) Evaluates the continued fraction.protected abstract doublegetA(int n, double x) Defines then-th "a" coefficient of the continued fraction.protected abstract doublegetB(int n, double x) Defines then-th "b" coefficient of the continued fraction.
-
Constructor Details
-
ContinuedFraction
public ContinuedFraction()Create an instance.
-
-
Method Details
-
getA
protected abstract double getA(int n, double x) Defines then-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 then-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:
- I. J. Thompson, A. R. Barnett (1986). "Coulomb and Bessel Functions of Complex Arguments and Order." Journal of Computational Physics 64, 490-509. https://www.fresco.org.uk/papers/Thompson-JCP64p490.pdf
- 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.
-