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
; Define the system through the function f. 
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)'
; Compute the solution and output the results. Solution of the system:
  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


6.4

Introduced