Multi-dimensional Root-finder - Two Nonlinear Equations in Two Unknowns

 

This page contains a utility that attempts to compute the roots of a system of two nonlinear equations in two unknowns.

References:

The utility posted on this page is a JavaScript translation of the FORTRAN routine SNSQE, by K. L. Hiebert (SNLA), which is posted on the SLATEC site as SNSQE.

Although all care has been taken to ensure that the sub-routines were translated accurately, some errors may have crept into the translation. These errors are mine; the original FORTRAN routines have been thoroughly tested and work properly. Please report any errors to the webmaster.


The program posted on this page attempts to compute the roots of a system of two nonlinear equations in two unknowns:

f1   =   0
f2   =   0

Specifically,

where the aij and ci are constant coefficients.

Values for all of these coefficients may not be necessary--in which case, make sure there is a "0" in the unused fields--but, by providing many fields, the intention is to make this program applicable to a wider range of problems.


HOW TO USE THIS UTILITY

Enter the appropriate values for the coefficients in the data fields below.
Also enter an initial estimate for the solution vector xo   =   (xo, yo)T.
(Note that numbers in scientific notation are NOT recognized)

Once you click the "Seek Solution" button, this utility will seek a solution vector x   =   (x, y)T that solves the system . This vector, and the values of f1 and f2 at that point, are output below.

IMPORTANT!    Note the error code.
There are systems for which solutions cannot be found. In these cases, the program terminates after a specific number of iterations; values for the latest iterate are output, but they are not necessarily a solution.

 
Coefficients:
a00 a01 a02 a03
a04 a05 a06 c1
 
a10 a11 a12 a13
a14 a15 a16 c2
 
 
Initial estimate of solution:
xo yo
 
   
Error Codes:
Error Code = 0: Input parameters or LR in err.
Error Code = 1: Success. Relative error between x and zero is at most tol ( = √ DBL_EPSILON.)
Error Code = 2: Number of function calls has exceeded 300.
Error Code = 3: tol is too small. No further improvement in the approximate solution x is possible.
Error Code = 4: Iteration is not making good progress, as measured by the improvement from the last five Jacobian evaluations. Maybe try another starting point.
Error Code = 5: Iteration is not making good progress, as measured by the improvement from the last ten iterations. Maybe try another starting point.
   

 

Return to Math Functions Page

AKiTi.ca Home