Re: FindRoots?
- To: mathgroup at smc.vnet.net
- Subject: [mg112195] Re: FindRoots?
- From: ADL <alberto.dilullo at tiscali.it>
- Date: Sat, 4 Sep 2010 04:00:46 -0400 (EDT)
- References: <i5qhi6$plh$1@smc.vnet.net>
In fact, I am a little surprised by the suggestions related to using Reduce for the purposes of soving numeric equations. First, it has been repeated in this Group several times (and also by Andrej) that doing so "can cause all sorts of weird problems". Second, the impossibility to deal with interpolations with Reduce is quite clear. Third, Reduce has been reported a number of times to have strange bugs, possibly due to its intrinsic complexity. For example, please, try the following consecutive inputs on a fresh kernel (I have 7.0.1) (* x is confined to be negative and the result is correct *) In[1]:= Reduce[2 x + Log[-((-1 + 2 x)/(-1 + 2 x^2))] == 0 && -2 < x < -1/Sqrt[2], x, Reals] Out[1]= x == Root[{Log[-((-1 + 2*#1)/(-1 + 2*#1^2))] + 2*#1 & , -0.86193624643066461859672257230652325788`20.308604836334762}] (* x can be negative and positive. The last root is lost *) In[2]:= Reduce[{2 x + Log[-((-1 + 2 x)/(-1 + 2 x^2))] == 0, -2 < x < 2}, x, Reals] Out[2]= x == Root[{Log[-((-1 + 2*#1)/(-1 + 2*#1^2))] + 2*#1 & , 0.56055055440035189796824605607850099728`20.301071037894882}] (* This is the first input. The root is lost and will be never recovered again *) In[3]:= Reduce[2 x + Log[-((-1 + 2 x)/(-1 + 2 x^2))] == 0 && -2 < x < -1/Sqrt[2], x, Reals] Out[3]= False So, my understanding is that the concept of Rationalizing results and applying N at the end to solve a numeric equation, which even Reduce does internally, appears contrary to the expressed opinion of several experts about Mathematica. The introduction of an "NReduce" function (just to make a hypothesis) could perhaps be more coherent. ADL