function alpha = step_length_positive_definite(g, Q, p) ## ## Find the minimizer alpha of, ## ## phi(alpha) = f(x + alpha*p) ## ## where ``p`` is a descent direction, ## ## f(x) = (1/2) - ## ## and ``Q`` is positive-definite. ## ## The closed-form solution to this problem is given in Nocedal and ## Wright, (3.55). ## ## INPUT: ## ## - ``g`` -- The gradient of f. ## ## - ``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). ## ## OUTPUT: ## ## - ``alpha`` -- The value which causes ``f`` to decrease the ## most. ## ## NOTES: ## ## All vectors are assumed to be *column* vectors. ## alpha = -(g' * p)/(p' * Q * p); end