naginterfaces.library.opt.lsq_check_deriv¶
- naginterfaces.library.opt.lsq_check_deriv(m, lsqfun, x, data=None, spiked_sorder='C')[source]¶
lsq_check_deriv
checks that a user-supplied function for evaluating a vector of functions and the matrix of their first derivatives produces derivative values which are consistent with the function values calculated.For full information please refer to the NAG Library document for e04ya
https://www.nag.com/numeric/nl/nagdoc_29.2/flhtml/e04/e04yaf.html
- Parameters
- mint
The number of residuals, , and the number of variables, .
- lsqfuncallable (iflag, fvec, fjac) = lsqfun(iflag, m, xc, data=None)
must calculate the vector of values and their first derivatives at any point . (The minimization functions mentioned in Notes give you the option of resetting an argument to terminate immediately.
lsq_check_deriv
will also terminate immediately, without finishing the checking process, if the argument in question is reset.)- Parameters
- iflagint
To , will be set to .
- mint
The numbers of residuals.
- xcfloat, ndarray, shape
, the point at which the values of the and the are required.
- dataarbitrary, optional, modifiable in place
User-communication data for callback functions.
- Returns
- iflagint
If you reset to some negative number in and return control to
lsq_check_deriv
, the function will terminate immediately with set to your setting of .- fvecfloat, array-like, shape
Unless is reset to a negative number, must contain the value of at the point , for .
- fjacfloat, array-like, shape
Unless is reset to a negative number, must contain the value of at the point , for , for .
- xfloat, array-like, shape
, for , must be set to the coordinates of a suitable point at which to check the derivatives calculated by . ‘Obvious’ settings, such as or , should not be used since, at such particular points, incorrect terms may take correct values (particularly zero), so that errors can go undetected. For a similar reason, it is preferable that no two elements of should have the same value.
- dataarbitrary, optional
User-communication data for callback functions.
- spiked_sorderstr, optional
If in is spiked (i.e., has unit extent in all but one dimension, or has size ), selects the storage order to associate with it in the NAG Engine:
- spiked_sorder =
row-major storage will be used;
- spiked_sorder =
column-major storage will be used.
- Returns
- fvecfloat, ndarray, shape
Unless you set negative in the first call of , contains the value of at the point supplied by you in , for .
- fjacfloat, ndarray, shape
Unless you set negative in the first call of , contains the value of the first derivative at the point given in , as calculated by , for , for .
- Raises
- NagValueError
- (errno )
On entry, .
Constraint: .
- (errno )
On entry, and .
Constraint: .
- Warns
- NagAlgorithmicWarning
- (errno )
User requested termination by setting negative in .
- (errno )
It is very likely that you have made an error in forming the derivatives in .
- Notes
In the NAG Library the traditional C interface for this routine uses a different algorithmic base. Please contact NAG if you have any questions about compatibility.
Functions for minimizing a sum of squares of nonlinear functions (or ‘residuals’), , for and , may require you to supply a function to evaluate the and their first derivatives.
lsq_check_deriv
checks the derivatives calculated by such functions, e.g., functions of the form required forlsq_uncon_quasi_deriv_comp()
,lsq_uncon_mod_deriv_comp()
andlsq_uncon_mod_deriv2_comp()
. As well as the function to be checked (), you must supply a point at which the check will be made.lsq_check_deriv
is essentially identical to CHKLSJ in the NPL Algorithms Library.lsq_check_deriv
first calls to evaluate the and their first derivatives, and uses these to calculate the sum of squares , and its first derivatives , for . The components of along two orthogonal directions (defined by unit vectors and , say) are then calculated; these will be and respectively. The same components are also estimated by finite differences, giving quantitieswhere is a small positive scalar. If the relative difference between and or between and is judged too large, an error indicator is set.