naginterfaces.library.roots.sys_​func_​aa

naginterfaces.library.roots.sys_func_aa(fcn, x, atol=1.0536712127723509e-08, rtol=1.0536712127723509e-08, m=0, cndtol=0.0, astart=0, data=None)[source]

sys_func_aa finds a solution of a system of nonlinear equations by fixed-point iteration using Anderson acceleration.

For full information please refer to the NAG Library document for c05mb

https://support.nag.com/numeric/nl/nagdoc_30.2/flhtml/c05/c05mbf.html

Parameters
fcncallable fvec = fcn(x, data=None)

must return the values of the functions at a point .

Parameters
xfloat, ndarray, shape

The components of the point at which the functions must be evaluated.

dataarbitrary, optional, modifiable in place

User-communication data for callback functions.

Returns
fvecfloat, array-like, shape

The function values .

xfloat, array-like, shape

An initial guess at the solution vector, .

atolfloat, optional

The absolute convergence criterion; see .

rtolfloat, optional

The relative convergence criterion. At each iteration is computed. The iteration is deemed to have converged if .

mint, optional

, the number of previous iterates to use in Anderson acceleration. If , Anderson acceleration is not used.

cndtolfloat, optional

The maximum allowable condition number for the triangular factor generated during Anderson acceleration. At each iteration, if the condition number exceeds , columns are deleted until it is sufficiently small.

If , no condition number tests are performed.

astartint, optional

The number of iterations by which to delay the start of Anderson acceleration.

dataarbitrary, optional

User-communication data for callback functions.

Returns
xfloat, ndarray, shape

The final estimate of the solution vector.

fvecfloat, ndarray, shape

The function values at the final point, .

Raises
NagValueError
(errno )

On entry, .

Constraint: .

(errno )

On entry, .

Constraint: .

(errno )

On entry, .

Constraint: .

(errno )

On entry, and .

Constraint: .

(errno )

On entry, .

Constraint: .

(errno )

On entry, .

Constraint: .

(errno )

An error occurred in evaluating the decomposition during Anderson acceleration. This may be due to slow convergence of the iteration. Try setting the value of . If condition number tests are already performed, try decreasing .

(errno )

The iteration has diverged and subsequent iterates are too large to be computed in floating-point arithmetic.

Warns
NagAlgorithmicWarning
(errno )

The iteration is not making good progress. This failure exit may indicate that the system does not have a zero, or that the solution is very close to the origin. Rerunning sys_func_aa from a different starting point may avoid the region of difficulty.

(errno )

There have been at least calls to . Consider restarting the calculation from the point held in .

NagCallbackTerminateWarning
(errno )

Termination requested in .

Notes

The system of equations is defined as:

This homogeneous system can readily be reformulated as

A standard fixed-point iteration approach is to start with an approximate solution and repeatedly apply the function until possible convergence; i.e., , until . Anderson acceleration uses up to previous values of to obtain an improved estimate . If a standard fixed-point iteration converges, Anderson acceleration usually results in convergence in far fewer iterations (therefore, using far fewer function evaluations).

Full details of Anderson acceleration are provided in Anderson (1965). In summary, the previous iterates are combined to form a succession of least squares problems. These are solved using a decomposition, which is updated at each iteration.

You are free to choose any value for , provided . A typical choice is .

Anderson acceleration is particularly useful if evaluating is very expensive, in which case functions such as sys_deriv_easy() or sys_func_easy(), which require the Jacobian or its approximation, may perform poorly.

References

Anderson, D G, 1965, Iterative Procedures for Nonlinear Integral Equations, J. Assoc. Comput. Mach. (12), 547–560