Re: FindMinimum
- To: mathgroup at smc.vnet.net
- Subject: [mg90565] Re: FindMinimum
- From: "David Park" <djmpark at comcast.net>
- Date: Sun, 13 Jul 2008 15:48:05 -0400 (EDT)
- References: <29862167.1215269377863.JavaMail.jakarta@nitrogen.mathforum.org> <g59tvj$ost$1@smc.vnet.net>
You could us the double underline (_ _ instead of _ but without an extra space) to indicate one or more arguments. For example: f[x__?NumberQ] will accept one or more numbers as arguments. And you could use g[{x__}] to indicate a List with one or more elements. You could use Apply (@@) to apply a function without a list to an indefinite list of arguments. f@@{x1, x2, ...} gives f[x1, x2,...] And if you define a function as f[x__] then internally you can use {x} to get the arguments back into a list. -- David Park djmpark at comcast.net http://home.comcast.net/~djmpark/ "pratip chakraborty" <pratip.official at gmail.com> wrote in message news:g59tvj$ost$1 at smc.vnet.net... > Hi, > I am new in Mathematica and have a problem with "FindMinimum". I want to > minimize a multi variable numerical function it looks like: > > MinFun[{a1,a2,...,ak}] > > I also have a code for the gradient computation so I want to use the > gradient option of FindMinimum and supply my gradient function which looks > like: > > GradFun[{a1,a2,...,ak}] > > Now my problem is in the fact that FindMinimum accepts the cost function > and > the supplied gradient if and only if they are of the form: > > MinFun[a1,a2,...,ak] > GradFun[a1,a2,...,ak] > > But I can not every time write a cost function like: > > MinFun[a1_?NumericQ,a2_?NumericQ,...,ak_?NumericQ] > GradFun[a1_?NumericQ,a2_?NumericQ,...,ak_?NumericQ] > > because my k can vary among the set of positive integers so I defined my > cost function with modified test for the argument as > > MinFun[a_?(VectorQ[#,NumericQ]&)] > GradFun[a_?(VectorQ[#,NumericQ]&)] > > But I dont know how to define a function > f[a1_?NumericQ,...,a2000_?NumericQ]:=Block[ > {..}, > ... > ] > other than writing so many arguments manualy. > I tried a wraper like > g[{a_}]:=f[a] > But an error occurs saying the shapes dont match. > Hope some one can help me. > > Pratip > >