The IMSL_ZEROSYS function solves a system of n nonlinear equations, fi (x) = 0, using a modified Powell hybrid algorithm.
This routine requires an IDL Advanced Math and Stats license. For more information, contact your sales or technical support representative.
The IMSL_ZEROSYS function is based on the MINPACK subroutine HYBRDJ, which uses a modification of the hybrid algorithm due to M.J.D. Powell. This algorithm is a variation of Newton’s Method, which takes precautions to avoid undesirable large steps or increasing residuals. For further discussion, see Moré et al. (1980).
Example
The following 2 x 2 system of nonlinear equations is solved:
f(x) = x0 + x1 – 3
f(x) = x02 + x12 – 9
.RUN
FUNCTION f, x
RETURN, [x(0)+x(1)-3, x(0)^2+x(1)^2-9]
END
PM, IMSL_ZEROSYS('f', 2), $
Title = 'Solution of the system:', FORMAT = '(f10.5)'
0.00000
3.00000
Errors
Warning Errors
MATH_TOO_MANY_FCN_EVALS: Number of function evaluations has exceeded ITMAX. A new initial guess can be tried.
MATH_NO_BETTER_POINT: Keyword ERR_REL is too small. No further improvement in the approximate solution is possible.
MATH_NO_PROGRESS: Iteration has not made good progress. A new initial guess can be tried.
Syntax
Result = IMSL_ZEROSYS(F, N [, /DOUBLE] [, ERR_REL=value] [, FNORM=value] [, JACOBIAN=string] [, ITMAX=value] [, XGUESS=array])
Return Value
An array containing a solution of the system of equations.
Arguments
F
Scalar string specifying a user-supplied function to evaluate the system of equations to be solved. The f function accepts one parameter containing the point at which the functions are to be evaluated and returns the computed function values at the given point.
N
Number of equations to be solved and the number of unknowns.
Keywords
DOUBLE (optional)
If present and nonzero, then double precision is used.
ERR_REL (optional)
Stopping criterion. The root is accepted if the relative error between two successive approximations to this root is less than ERR_REL. Default: ERR_REL = SQRT(ε), where ε is the machine precision.
FNORM (optional)
Scalar with the value f 20 + ... + f 2n–1 at the point x.
JACOBIAN (optional)
Scalar string specifying a user-supplied function to evaluate the x n Jacobian. The function accepts as parameter the point at which the Jacobian is to be evaluated and returns a two-dimensional matrix defined by result (i, j) = ¶fi/¶xj
ITMAX (optional)
Maximum allowable number of iterations. Default: 200.
XGUESS (optional)
Array with N components containing the initial estimate of the root. Default: 0.
Version History