Re: FindRoot in 5.0
- To: mathgroup at smc.vnet.net
- Subject: [mg42856] Re: [mg42819] FindRoot in 5.0
- From: Eric Mockensturm <emm10 at psu.edu>
- Date: Wed, 30 Jul 2003 19:31:12 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Oh... And using Developer`SetSystemOptions["EvaluateNumericalFunctionArgument" ->False] did not change the time it took in 5.0 to any significance. On Wednesday, July 30, 2003, at 09:38 AM, Richard Gass wrote: > > On Wednesday, July 30, 2003, at 04:07 AM, Eric Mockensturm wrote: > >> I realize that FindRoot has changed but there seems to be a >> fundamental difference in it between pre-5.0 versions and 5.0 that >> breaks most of my notebooks. Maybe I've been following bad >> 'programming' practices all these years, but.... >> >> Anyway, a simple illustration follows. >> >> In 4.2: >> >> In[7]:=func[x_]:=(y=x;NIntegrate[BesselY[1/2,s],{s,1/2,y}]) >> In[8]:=FindRoot[(Print[x];func[x]),{x,2,4}] >> Out[8]={x\[Rule]3.04729} >> >> In 5.0: >> >> In[1]:=func[x_]:=(y=x;NIntegrate[BesselY[1/2,s],{s,1/2,y}]) >> In[2]:=FindRoot[(Print[x];func[x]),{x,2,4}] >> Out[2]={x\[Rule]4.} >> >> with errors... >> >> NIntegrate::nlim: s = x is not a valid limit of integration >> >> It seems that 5.0 is trying to evaluate func[x] symbolically before >> start to search for a root. How do I make a global change to this >> behavior. Does it have something to do with the HoldAll attribute? >> FindRoot was been HoldAll in 4.2, too. >> >> >> >> > > This effects more than just FindRoot but you can restore the old > behavior by using > Developer`SetSystemOptions["EvaluateNumericalFunctionArgument" -> > False] . This restores the old behavior but you take a substantial > speed hit. In your case you can fix the problem (without the speed > hit) by using > >> func[x_?NumericQ]:=(y=x;NIntegrate[BesselY[1/2,s],{s,1/2,y}]) > > and then >> FindRoot[func[x],{x,2,4},EvaluationMonitor:>Print[x]] > or better yet > points={} > FindRoot[func[x],{x,2,4},EvaluationMonitor:>AppendTo[points,x]] > ListPlot[points] > > > Richard Gass > Department of Physics > University of Cincinnati >