Use elliptical trust region in DoglegStrategy.
In the Levenberg-Marquardt algorithm, the diagonal of J^T J is used to
regularize the problem. This corresponds to an elliptical trust region
|| D step || <= r, where D = sqrt(diag(J^T J)).
This commit adds the same elliptical trust region to the dogleg
strategy. The trust region problem becomes
min. x^T H x + g^T x
s.t. || D x || <= r
By substituting y = D x, it becomes
min. y^T D^-1 H D^-1 y + g^T D^-1 y
s.t. || y || <= r
which is the traditional spherical trust region problem.
This commit changes the DoglegStrategy so that the Gauss-Newton point,
the gradient, and the Cauchy point are scaled correctly (without
modifying the Jacobian directly). Then the dogleg step is computed the
same way as before, and finally the step is rescaled to obtain
x = D^-1 y.
Change-Id: Iea25a9113ecba911b746e269bc6e6fe51cb59003
2 files changed