|
JMSLTM Numerical Library 4.0 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.imsl.math.ZeroSystem
Solves a system of n nonlinear equations f(x) = 0 using a modified Powell hybrid algorithm.
ZeroSystem
is based on the MINPACK subroutine
HYBRD1
, which uses a modification of M.J.D. Powell's hybrid
algorithm. This algorithm is a variation of Newton's method, which uses a
finite-difference approximation to the Jacobian and takes precautions to
avoid large step sizes or increasing residuals. For further description,
see More et al. (1980).
A finite-difference method is used to estimate the Jacobian. Whenever
the exact Jacobian can be easily provided, objectF
should
implement ZeroSystem.Jacobian
.
Nested Class Summary | |
static class |
ZeroSystem.DidNotConvergeException
The iteration did not converge. |
static interface |
ZeroSystem.Function
Public interface for user supplied function to ZeroSystem object. |
static interface |
ZeroSystem.Jacobian
Public interface for user supplied function to ZeroSystem object. |
static class |
ZeroSystem.ToleranceTooSmallException
Tolerance too small |
static class |
ZeroSystem.TooManyIterationsException
Too many iterations. |
Constructor Summary | |
ZeroSystem(int n)
Creates an object to find the zeros of a system of n equations. |
Method Summary | |
void |
setGuess(double[] xguess)
Sets the initial guess for the array x. |
void |
setMaxIterations(int maxIterations)
Sets the maximum number of iterations allowed. |
void |
setRelativeError(double errorRelative)
Sets the relative error tolerance. |
double[] |
solve(ZeroSystem.Function objectF)
Solve a system of nonlinear equations using the Levenberg-Marquardt algorithm |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public ZeroSystem(int n)
n
- is the number of equations that the solver
handlesMethod Detail |
public void setGuess(double[] xguess)
xguess
- a double
array containing the
initial guesspublic void setMaxIterations(int maxIterations)
maxIterations
- an int
specifying the maximum
number of iterations allowed
IllegalArgumentException
- is thrown if maxIterations
is less than or equal to zero.public void setRelativeError(double errorRelative)
errorRelative
- a double
specifying the
relative error tolerance
IllegalArgumentException
- is thrown if errorRelative
is less than 0 or greater than 1.public double[] solve(ZeroSystem.Function objectF) throws ZeroSystem.TooManyIterationsException, ZeroSystem.ToleranceTooSmallException, ZeroSystem.DidNotConvergeException
objectF
- defines the function whose zero is
to be found. If objectF implements a
Jacobian then its Jacobian
is used. Otherwise a finite difference
is computed.
double
array containing the solution
ZeroSystem.TooManyIterationsException
- is thrown if the
maximum number of iterations is exceeded
ZeroSystem.ToleranceTooSmallException
- is thrown if the error tolerance
is too small
ZeroSystem.DidNotConvergeException
- is thrown if the algorithm does
not convergeZeroSystem.Jacobian
|
JMSLTM Numerical Library 4.0 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |