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 TypeMethodDescriptiondouble
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 then
-th "a" coefficient of the continued fraction.protected abstract double
getB
(int n, double x) Defines then
-th "b" coefficient of the continued fraction.
-
Constructor Details
-
ContinuedFraction
public ContinuedFraction()
-
-
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.
-