Re: FindMinimum
- To: mathgroup at smc.vnet.net
- Subject: [mg22734] Re: FindMinimum
- From: Matthias Weber <weber at math.uni-bonn.de>
- Date: Fri, 24 Mar 2000 03:27:21 -0500 (EST)
- Organization: RHRZ - University of Bonn (Germany)
- References: <8aqrrd$a9p@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
In article <8aqrrd$a9p at smc.vnet.net>, "Johannes Ludsteck" <ludsteck at zew.de> wrote: > Dear Mathgroup members > I have some problems with the sparse documentation of the > FindMinimum Procedures. > > 1) To the best of my knowledge the Newton and QuasiNewton > methods use the gradient and the hessian of the minimand or an > approximation to them. Mathematica, however allows me only to > supply an analytical gradient, but not the hessian. Why? (I think > that it would speed up the minimization considerably if an > analytical hessian could be used. > > 2) I suspect that Mathematica uses a secant method if it cannot > compute analytical gradients. In my application it would be efficient > to compute a numerical gradient (an hessian) and to use the > gradient or quasi-newton method, since my minimand is smooth > and globally convex, but not differentiable analytically. Can I force > Mathematica to use this strategy? > > Thank you, > Johannes Ludsteck To find a minimum, two steps are involved: 1) Get close to a minimum 2) If you are close to it, find it For the first step, higher order approximations based on local (or even infinitesimal) behaviour do not help very much (unless you know a lot about your function, say like it being a polynomial). For the second step, higher order approximations might be helpful, depending how expensive your function is. For high dimensional problems with complicated function evaluations, the computation of gradients and hessians can become very slow. I suppose you mean 'symbolic' instead of 'analytic'. For your second question, you can define an arbitrary function (not necessarily symbolic) and supply it as the gradient of your function to the FindMinimum routine. As an alternative to Mathematica's FindMinimum, I found the classical Simplex method (see Recipes in C) quite useful in some case. Hope that helps. Matthias