Re: Detecting unsuccessful computations

*To*: mathgroup at smc.vnet.net*Subject*: [mg39426] Re: Detecting unsuccessful computations*From*: Omega Consulting <info at omegaconsultinggroup.com>*Date*: Fri, 14 Feb 2003 03:24:31 -0500 (EST)*References*: <b2fqoj$k9d$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

At 05:04 AM 2/13/2003, Uri Zwick wrote: >Hi, > >In a previous post I claimed: > >>If we write >>sol = LinearSolve[...] ; >>If[ SameQ[Head[sol],LinearSolve] , ... , ... ] >>then in case of failure, the failed calculation will be >>attempted again!) > >This is indeed not true, as pointed out by "Omega Consulting". >I stand corrected. > >BUT, my claim is true if FindMinimum is used instead of LinearSolve. >In fact, the situation is even worse than I thought. The failed >computation will be performed THREE times! > >Try the following: > >In[1]:= FindMinimum[x^2, {x, 1, 1/2, 3/2}] > >You will get one error message: >FindMinimum::regex: Reached the point {...} which is outside ... > >Now try > >In[2]:= sol = FindMinimum[x^2, {x, 1, 1/2, 3/2}] > >You will get TWO error messages: >FindMinimum::regex: Reached the point {...} which is outside ... >FindMinimum::regex: Reached the point {...} which is outside ... > >The failed computation was performed twice! > >Finally, > >In[3]:= Head[sol] > >Another error message is printed: >FindMinimum::regex: Reached the point {...} which is outside ... > >before giving the answer > >FindMinimum > >The failed computation was performed again! > >I suspect the same would happen with other functions, >not just with FindMinimum. > >Would you consider that reasonable? > >It is possible to detect failed calculations using >techniques posted as replies to my original posting. >(Thank you all for the solutions.) But, I still feel >that Mathematica should provide a cleaner and more >convenient solution to the problem. > >Uri > >--------------------------------------------------------------------- >| Prof. Uri Zwick | http://www.cs.tau.ac.il/~zwick | >| Dept. of Computer Science | zwick at post.tau.ac.il | >| Tel Aviv University | | >| Tel Aviv 69978 | PHONE: +972 3 6409610 | >| ISRAEL | FAX: +972 3 6409357 | >--------------------------------------------------------------------- In this case, you can hold evaluation to avoid the repeats. In[2]:= sol = Hold @@ {FindMinimum[x^2, {x, 1, 1/2, 3/2}]}; (1 message) In[3]:= MatchQ[sol, Hold[_FindMinimum]] Out[3]= True Is that clean or convenient? I guess that's a matter of opinion. Personally, I don't see why these things return unevaluated at all. It's much easier to handle functions that indicate error by returning $Failed. -------------------------------------------------------------- Omega Consulting "The final answer to your Mathematica needs" http://omegaconsultinggroup.com