Re: Another problem with FindMinimum
- To: mathgroup at smc.vnet.net
- Subject: [mg90615] Re: Another problem with FindMinimum
- From: dh <dh at metrohm.ch>
- Date: Wed, 16 Jul 2008 06:28:57 -0400 (EDT)
- References: <g5htg1$j8g$1@smc.vnet.net>
Hi, the gradient function must be a function that gets a vector of numbers and must return a vector of numbers. What you do inside the function is of no concern to FindMinimum. Therefore, your problem seems to be how to define the gradient function. To help you with this, you need to give more details. Daniel pratip wrote: > Hi All, > I am minimizing a function like > MinFun[a_?(VectorQ[#,NumericQ]&)] > and I am supplying a gradient like > GradFun[a_?(VectorQ[#,NumericQ]&)] > Hence a={a1,a2,..,ak} > but the code which is used to compute the gradient needs the value of a both symbolically (e.g in order to do some symbolic differentiation) as well as numerically. When I am calling this gradeint function with in FindMinimum it can not retrive the variables i.e a1,a2,..,ak symbolically only they are replaced by their numerical values. But the function GradFun needs "a" symbolically and its updated numerical values in each iteration to compute the derivative. > If I use GradFun[a_?VectorQ] then symbols are there but numerical values are gone. FindMinimum tells something like > > FindMinimum::nrgnum: "The gradient is not a vector of real numbers at {a,b} = {-2.1,2.}." > > Do I need to use Hold or something like that? > I hope this is very basic question and you guys will have a answer. > -- Daniel Huber Metrohm Ltd. Oberdorfstr. 68 CH-9100 Herisau Tel. +41 71 353 8585, Fax +41 71 353 8907 E-Mail:<mailto:dh at metrohm.com> Internet:<http://www.metrohm.com>