@menu
* Introduction to mnewton::
* Functions and Variables for mnewton::
@end menu

@c -----------------------------------------------------------------------------
@node Introduction to mnewton, Functions and Variables for mnewton, mnewton, mnewton
@section Introduction to mnewton
@c -----------------------------------------------------------------------------

@code{mnewton} is an implementation of Newton's method for solving nonlinear
equations in one or more variables.

@opencatbox
@category{Numerical methods} @category{Share packages} @category{Package mnewton}
@closecatbox

@c -----------------------------------------------------------------------------
@node Functions and Variables for mnewton,  , Introduction to mnewton, mnewton
@section Functions and Variables for mnewton
@c -----------------------------------------------------------------------------

@c -----------------------------------------------------------------------------
@anchor{newtonepsilon}
@defvr {Option variable} newtonepsilon
Default value: @code{10.0^(-fpprec/2)}

Precision to determine when the @code{mnewton} function has converged towards
the solution.  If @code{newtonepsilon} is a bigfloat, then @code{mnewton}
computations are done with bigfloats.  See also @code{mnewton}.

@opencatbox
@category{Package mnewton}
@closecatbox
@end defvr

@c -----------------------------------------------------------------------------
@anchor{newtonmaxiter}
@defvr {Option variable} newtonmaxiter
Default value: @code{50}

Maximum number of iterations to stop the @code{mnewton} function
if it does not converge or if it converges too slowly.

See also @code{mnewton}.

@opencatbox
@category{Package mnewton}
@closecatbox
@end defvr

@c -----------------------------------------------------------------------------
@anchor{function_mnewton}
@deffn {Function} mnewton (@var{FuncList},@var{VarList},@var{GuessList})

Multiple nonlinear functions solution using the Newton method.
@var{FuncList} is the list of functions to solve,
@var{VarList} is the list of variable names, and
@var{GuessList} is the list of initial approximations.

The solution is returned in the same format that @code{solve()} returns.
If the solution is not found, @code{[]} is returned.

This function is controlled by global variables @code{newtonepsilon} and
@code{newtonmaxiter}.

@example
(%i1) load("mnewton")$

(%i2) mnewton([x1+3*log(x1)-x2^2, 2*x1^2-x1*x2-5*x1+1],
              [x1, x2], [5, 5]);
(%o2) [[x1 = 3.756834008012769, x2 = 2.779849592817897]]
(%i3) mnewton([2*a^a-5],[a],[1]);
(%o3)             [[a = 1.70927556786144]]
(%i4) mnewton([2*3^u-v/u-5, u+2^v-4], [u, v], [2, 2]);
(%o4) [[u = 1.066618389595407, v = 1.552564766841786]]
@end example

The variable @code{newtonepsilon} controls the precision of the
approximations.  It also controls if computations are performed with
floats or bigfloats.

@example
(%i1) load(mnewton)$

(%i2) (fpprec : 25, newtonepsilon : bfloat(10^(-fpprec+5)))$

(%i3) mnewton([2*3^u-v/u-5, u+2^v-4], [u, v], [2, 2]);
(%o3) [[u = 1.066618389595406772591173b0, 
                               v = 1.552564766841786450100418b0]]
@end example

To use this function write first @code{load("mnewton")}.
See also @code{newtonepsilon} and @code{newtonmaxiter}.

@opencatbox
@category{Package mnewton}
@closecatbox
@end deffn

