Re: FindMaximum query
- To: mathgroup at smc.vnet.net
- Subject: [mg85560] Re: [mg85530] FindMaximum query
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Wed, 13 Feb 2008 07:44:08 -0500 (EST)
- Reply-to: hanlonr at cox.net
Restrict fun to numeric arguments Clear[fun]; fun[x_?NumericQ] := Module[{y, sol}, sol = FindRoot[Sqrt[y] == Abs[x], {y, 0, 0.001}]; (*AppendTo[list,sol];*) -y /. sol[[1]]] FindMaximum[fun[x], {x, 1, 1.001}] {0., {x -> -1.7585932710058097*^-16}} Bob Hanlon ---- "E. Neely Atkinson" <eatkinso at mdanderson.org> wrote: > Consider the following function: > > fun[x_] := > Module[ > {y, sol}, > sol = FindRoot[Sqrt[y] == Abs[x], {y, 0, 0.001}]; > (* AppendTo[list, sol]; *) > -y /. sol[[1]] > ] > > Then Plot[fun[x], {x, -2, 2}] works fine, but > > FindMaximum[fun[x], {x, 1, 1.001}] > > fails. If I uncomment the debug line in fun and execute > > list = {}; > FindMaximum[fun[x], {x, 1, 1.001}] > > Then list contains > > {FindRoot[Sqrt[y$21471] == Abs[x], {y$21471, 0, 0.001}]} > > > So, FindRoot fails because x is passed through unevaluated, I think. > I would appreciate any advice on how to get FindMaximum (or NMaximize) > to work in this case. > > Mathematic 6.0.1.0 x86 32 bit > Mac OS X 10.4.11 > > Thanks very much, > > E. Neely Atkinson > Department of Biostatistics > M. D. Anderson Cancer Center > > neely at pdq.net >