X-Git-Url: http://gitweb.michael.orlitzky.com/?p=octave.git;a=blobdiff_plain;f=optimization%2Fstep_length_positive_definite.m;h=b9fe48efa52144ab6c6fdb05f06cf3c5e8b6a9dd;hp=7e15a46513e7333a63f060385f353720745dbc29;hb=602624313348cec0073320c36849e16aba12b4cf;hpb=76a7395151d5d93c696bb350d32efd7e0ff28dd8 diff --git a/optimization/step_length_positive_definite.m b/optimization/step_length_positive_definite.m index 7e15a46..b9fe48e 100644 --- a/optimization/step_length_positive_definite.m +++ b/optimization/step_length_positive_definite.m @@ -34,11 +34,12 @@ function alpha = step_length_positive_definite(g, Q, p) % denom = (p' * Q * p); - 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