variable metric method automatic gradient yields Indeterminate

*To*: mathgroup at smc.vnet.net*Subject*: [mg70397] variable metric method automatic gradient yields Indeterminate*From*: "Chris Chiasson" <chris at chiasson.name>*Date*: Sun, 15 Oct 2006 00:19:39 -0400 (EDT)

A user-defined augmented lagrange multiplier method for NMinimize drives a (user defined) variable metric method for FindMinimum. The NMinimize routine ends up creating penalty functions that have "discontinuous" first order derivatives due to the presence of functions like Max. At the points of discontinuity in the derivative, the Indeterminate result usually ends up multiplied by zero. The limit of the derivative exists. for example, the function passed to FindMinimum is func=Max[0,-X[1]]^2+Max[0,-1+X[1]+X[2]]^2+(-1+X[1])^2+(-1+X[2])^2 its derivative with respect to X[1] is 2*(-1+Max[0,-1+X[1]+X[2]]*Piecewise[{{1,X[1]+X[2]>1}},0]+ Max[0,-X[1]]*Piecewise[{{-1,X[1]<0},{0,X[1]>0}},Indeterminate]+X[1]) Notice that when X[1] is zero, the Piecewise returns Indeterminate, which is multiplied by zero from the nearby Max function. However, 0*Indeterminate is still Indeterminate in Mathematica. When the derivative is evaluated at X[1]=zero, the answer returned is Indeterminate. This totally messes up the numerical routine. the limit of D[func,X[1]] as X[1]->0 is Piecewise[{{-2,X[2]<1}},2*(-2 +X[2])] I am tempted to check the gradient vector for Indeterminate results, look up the "corresponding" variable (heh, how do I really know which one is responsible?), and take the limit as that variable approaches the value I wanted to evaluate at. I don't know how well that will work in practice. So, does anyone have any suggestions? -- http://chris.chiasson.name/

**Follow-Ups**:**Re: variable metric method automatic gradient yields Indeterminate***From:*Andrzej Kozlowski <akoz@mimuw.edu.pl>