|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.commons.math.analysis.UnivariateRealSolverUtils
Utility routines for UnivariateRealSolver
objects.
Method Summary | |
static double[] |
bracket(UnivariateRealFunction function,
double initial,
double lowerBound,
double upperBound)
This method attempts to find two values a and b satisfying lowerBound <= a < initial < b <= upperBound
f(a) * f(b) < 0
If f is continuous on [a,b], this means that a
and b bracket a root of f. |
static double[] |
bracket(UnivariateRealFunction function,
double initial,
double lowerBound,
double upperBound,
int maximumIterations)
This method attempts to find two values a and b satisfying lowerBound <= a < initial < b <= upperBound
f(a) * f(b) < 0
If f is continuous on [a,b], this means that a
and b bracket a root of f. |
static double |
midpoint(double a,
double b)
Compute the midpoint of two values. |
static double |
solve(UnivariateRealFunction f,
double x0,
double x1)
Convenience method to find a zero of a univariate real function. |
static double |
solve(UnivariateRealFunction f,
double x0,
double x1,
double absoluteAccuracy)
Convenience method to find a zero of a univariate real function. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method Detail |
public static double solve(UnivariateRealFunction f, double x0, double x1) throws ConvergenceException, FunctionEvaluationException
f
- the function.x0
- the lower bound for the interval.x1
- the upper bound for the interval.
ConvergenceException
- if the iteration count was exceeded
FunctionEvaluationException
- if an error occurs evaluating
the function
IllegalArgumentException
- if f is null or the endpoints do not
specify a valid intervalpublic static double solve(UnivariateRealFunction f, double x0, double x1, double absoluteAccuracy) throws ConvergenceException, FunctionEvaluationException
f
- the functionx0
- the lower bound for the intervalx1
- the upper bound for the intervalabsoluteAccuracy
- the accuracy to be used by the solver
ConvergenceException
- if the iteration count is exceeded
FunctionEvaluationException
- if an error occurs evaluating the
function
IllegalArgumentException
- if f is null, the endpoints do not
specify a valid interval, or the absoluteAccuracy is not valid for the
default solverpublic static double[] bracket(UnivariateRealFunction function, double initial, double lowerBound, double upperBound) throws ConvergenceException, FunctionEvaluationException
lowerBound <= a < initial < b <= upperBound
f(a) * f(b) < 0
[a,b],
this means that a
and b
bracket a root of f.
The algorithm starts by setting
a := initial -1; b := initial +1,
examines the value of the
function at a
and b
and keeps moving
the endpoints out by one unit each time through a loop that terminates
when one of the following happens:
f(a) * f(b) < 0
-- success! a = lower
and b = upper
-- ConvergenceException Integer.MAX_VALUE
iterations elapse
-- ConvergenceException
Note: this method can take
Integer.MAX_VALUE
iterations to throw a
ConvergenceException.
Unless you are confident that there
is a root between lowerBound
and upperBound
near initial,
it is better to use
bracket(UnivariateRealFunction, double, double, double, int)
,
explicitly specifying the maximum number of iterations.
function
- the functioninitial
- initial midpoint of interval being expanded to
bracket a rootlowerBound
- lower bound (a is never lower than this value)upperBound
- upper bound (b never is greater than this
value)
ConvergenceException
- if a root can not be bracketted
FunctionEvaluationException
- if an error occurs evaluating the
function
IllegalArgumentException
- if function is null, maximumIterations
is not positive, or initial is not between lowerBound and upperBoundpublic static double[] bracket(UnivariateRealFunction function, double initial, double lowerBound, double upperBound, int maximumIterations) throws ConvergenceException, FunctionEvaluationException
lowerBound <= a < initial < b <= upperBound
f(a) * f(b) < 0
[a,b],
this means that a
and b
bracket a root of f.
The algorithm starts by setting
a := initial -1; b := initial +1,
examines the value of the
function at a
and b
and keeps moving
the endpoints out by one unit each time through a loop that terminates
when one of the following happens:
f(a) * f(b) < 0
-- success! a = lower
and b = upper
-- ConvergenceException maximumIterations
iterations elapse
-- ConvergenceException
function
- the functioninitial
- initial midpoint of interval being expanded to
bracket a rootlowerBound
- lower bound (a is never lower than this value)upperBound
- upper bound (b never is greater than this
value)maximumIterations
- maximum number of iterations to perform
ConvergenceException
- if the algorithm fails to find a and b
satisfying the desired conditions
FunctionEvaluationException
- if an error occurs evaluating the
function
IllegalArgumentException
- if function is null, maximumIterations
is not positive, or initial is not between lowerBound and upperBoundpublic static double midpoint(double a, double b)
a
- first value.b
- second value.
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |