MATLAB Answers

0

Hessian in optimValues of fminunc

Asked by Alexander Andreychenko on 13 Feb 2016
Latest activity Commented on by Alan Weiss
on 16 Feb 2016
Hello everyone! I have the function which I minimize with fminunc. So far, no problems with that. I have the analytical expression of the Hessian for my function. I want to be able to plot the conditional number of Hessian during the course of the optimization. Is there any way to pass the Hessian/its conditional number to outputFcn (via optimValues)?

  0 Comments

Sign in to comment.

1 Answer

Answer by Alan Weiss
on 16 Feb 2016
 Accepted Answer

While I am not sure that I understand your question, it seems that you have an analytic expression for the Hessian you want to plot. The syntax of a cutom output function is
function stop = outfun(x,optimValues,state)
So you have the current point x available to your output function, meaning you can calculate the Hessian in your output function.
If I misunderstand what you are asking, please try again.
Alan Weiss
MATLAB mathematical toolbox documentation

  2 Comments

Thank you for the answer! This is exacly what I did recently. However, this leads to one additional computation of the function (together with the Hessian) which in my case is quite expensive. I was looking for some way to "send" the Hessian matrix via optimValues in the same fashion as it is done for gradient vector. But it seems like it is not possible (at least not by users :)).
Oh, I did not realize that what you were looking for was a way to avoid another calculation of the Hessian. It is possible that something along the lines of the nested function technique used in this documentation could save you from computing the Hessian twice.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation

Sign in to comment.