where

which can also be rewritten

[*J*(*a*^{(k)})^{T} *J*(*a*^{(k)}) + *B*(*a*^{(k)})] *d*^{(k)} = -*J*(*a*^{(k)}) *r*(*a*^{(k)}) .

Neglecting the second derivatives matrix

This so-called Gauss-Newton method is intended for problems where is small. If the Jacobian

The algorithm implemented here is a modification
of that Gauss-Newton method, that allows convergence even for
rank deficient Jacobians or for large residuals. The Gauss-Newton
direction is computed in
,
the invariant space corresponding to the non-null eigenvalues.
A correction is taken in *V*_{2}, the orthogonal of *V*_{1},
according to the second derivatives if
the decrease of the objective function at the last
iteration is considered too small.
The Hessian matrix is estimated using finite
differences of the gradient.

This method requires the availability of the derivatives and as
the number of gradient evaluations is almost *p* at each iteration, it
is recommended for problems with a small number of parameters,
let us say