Next: Nonlinear Least-Squares High Level Driver, Previous: Nonlinear Least-Squares Iteration, Up: Nonlinear Least-Squares Fitting [Index]

A minimization procedure should stop when one of the following conditions is true:

- A minimum has been found to within the user-specified precision.
- A user-specified maximum number of iterations has been reached.
- An error has occurred.

The handling of these conditions is under user control. The functions below allow the user to test the current estimate of the best-fit parameters in several standard ways.

- Function:
*int***gsl_multifit_nlinear_test***(const double*`xtol`, const double`gtol`, const double`ftol`, int *`info`, const gsl_multifit_nlinear_workspace *`w`) - Function:
*int***gsl_multilarge_nlinear_test***(const double*`xtol`, const double`gtol`, const double`ftol`, int *`info`, const gsl_multilarge_nlinear_workspace *`w`) These functions test for convergence of the minimization method using the following criteria:

- Testing for a small step size relative to the current parameter vector
|\delta_i| <= xtol (|x_i| + xtol)

for each

*0 <= i < p*. Each element of the step vector*\delta*is tested individually in case the different parameters have widely different scales. Adding`xtol`to*|x_i|*helps the test avoid breaking down in situations where the true solution value*x_i = 0*. If this test succeeds,`info`is set to 1 and the function returns`GSL_SUCCESS`

.A general guideline for selecting the step tolerance is to choose

*xtol = 10^{-d}*where*d*is the number of accurate decimal digits desired in the solution*x*. See Dennis and Schnabel for more information. - Testing for a small gradient (
*g = \nabla \Phi(x) = J^T f*) indicating a local function minimum:||g||_inf <= gtol

This expression tests whether the ratio

*(\nabla \Phi)_i x_i / \Phi*is small. Testing this scaled gradient is a better than*\nabla \Phi*alone since it is a dimensionless quantity and so independent of the scale of the problem. The`max`

arguments help ensure the test doesn’t break down in regions where*x_i*or*\Phi(x)*are close to 0. If this test succeeds,`info`is set to 2 and the function returns`GSL_SUCCESS`

.A general guideline for choosing the gradient tolerance is to set

`gtol = GSL_DBL_EPSILON^(1/3)`

. See Dennis and Schnabel for more information.

If none of the tests succeed,

`info`is set to 0 and the function returns`GSL_CONTINUE`

, indicating further iterations are required.- Testing for a small step size relative to the current parameter vector