-function alpha = step_length_positive_definite(g, Q, p)
+function alpha = step_length_positive_definite(g, Q)
%
% Find the minimizer alpha of,
%
% and ``Q`` is positive-definite.
%
% The closed-form solution to this problem is given in Nocedal and
- % Wright, (3.55).
+ % Wright, (3.55). The direction of steepest descent will always be
+ % the negative gradient direction; this simplified form is given in
+ % Guler.
%
% INPUT:
%
% - ``g`` -- The gradient of f at x.
%
% - ``Q`` -- The positive-definite matrix in the definition of
- % ``f`` above.
- %
- % - ``p`` -- The direction in which ``f`` decreases. The line
- % along which we minimize f(x + alpha*p).
+ % ``f`` above.
%
% OUTPUT:
%
- % - ``alpha`` -- The value which causes ``f`` to decrease the
- % most.
+ % - ``alpha`` -- The value which decreases ``f`` the most.
%
% NOTES:
%
% All vectors are assumed to be *column* vectors.
%
- denom = (p' * Q * p);
+ denom = (g' * Q * g);
- if (abs(denom) < eps)
+ % denom is non-negative, since it's a Q-norm. No need to abs() it.
+ if (denom < eps)
% Catch divide-by-zeros. If denom is effectively zero, set it to
% something tiny instead. This trick is also used in the PCGM.
- denom = sign(denom)*eps;
+ denom = eps;
end
- alpha = -(g' * p)/denom;
+ alpha = (g' * g)/denom;
end