Re: FindRoots?

*To*: mathgroup at smc.vnet.net*Subject*: [mg112202] Re: FindRoots?*From*: Bob Hanlon <hanlonr at cox.net>*Date*: Sat, 4 Sep 2010 04:02:02 -0400 (EDT)

$Version 7.0 for Mac OS X x86 (64-bit) (February 19, 2009) Reduce[2 x + Log[-((-1 + 2 x)/(-1 + 2 x^2))] ==== 0 && -2 < x < -1/Sqrt[2], x, Reals] // N // ToRules {x->-0.861936} sol == x /. First@NDSolve[ {x'[t] ==== x[t] + 2, x[0] ==== -1}, x, {t, 0, 2}]; Minimize[{Abs[sol[t]], 0 < t < 2}, t][[2]] {t->0.693147} Bob Hanlon ---- Gianluca Gorni <gianluca.gorni at uniud.it> wrote: ========================== In my opinion Reduce can replace RootSearch in some cases but not in others. First of all, Reduce has bugs. Here is an analytic function that clearly has a real root: Plot[2 x + Log[-((-1 + 2 x)/(-1 + 2 x^2))], {x, -2, -1/Sqrt[2]}] Still, Reduce does not see it (as of version 7.0.1): Reduce[2 x + Log[-((-1 + 2 x)/(-1 + 2 x^2))] ======== 0 && -2 < x < -1/Sqrt[2], x, Reals] False (I reported this example to wolfram last year). Next, Reduce has problems with inexact input, and with InterpolatingFunction, so that it won't work with the output of NDSolve: sol ==== x /. First@NDSolve[{x'[t] ======== x[t] + 2, x[0] ======== -1}, x, {t, 0, 2}]; Reduce[sol[t] ======== 0 && 0 < t < 2, t] or, say, with functions obtained by interpolating between Locators. RootSearch works fine in these cases. I have made some interactive panels where I can change the Locators with the mouse and I get in real time the roots of the interpolating function as big Points in the plot: I can do this with RootSearch, but not with Reduce. Unfortunately, I can't give these panels to other users, because I can't assume that they have RootSearch installed. I endorse the wish that the functionality of RootSearch were available in the kernel. Best regards, Gianluca Gorni On 01/set/2010, at 12.28, Andrzej Kozlowski wrote: > > On 30 Aug 2010, at 12:19, David Park wrote: > >> I don't know why Wolfram doesn't acquire the rights to this package and >> incorporate it as part of regular Mathematica. Finding all the roots of = a >> real function on a 1-dimensional domain is the most common case of root >> finding, and it is the one thing regular Mathematica is very poor at. Te= d's >> package is quite robust and returns all the roots in order. > > > Mathematica's Reduce can do this (in the case of complex analytic functio= ns, which covers most important practical cases) since version 7. I have po= sted examples of this several times, but somehow nobody seems to notice and= we keep reading strange remarks like the above. Well, I don't want it to s= ound like I am trying to diminish Ted's achievement, but quite frankly, fro= m the mathematical point of view, the methods used in the RootSearch packag= e are rather primitive, relatively to the current state of knowledge in thi= s field, of course. Not only does Reduce solve most transcendental equation= s much faster but it also does not require setting the values of any option= s by hand, and, what I think is most important, the results thus obtained a= re provably correct, which is not the case with Ted's package. In fact, muc= h more general methods of solving transcendental equations exist (in genera= l the functions need not be analytic and can involve systems of n-real equa= tions in n-varia! ! b > l! > es with non-vanishing Jacobian). An example of such a method can be found= in one of my demonstrations on the demonstrations site (the algorithm can = easily be converted to a practical method for real life probl ems. > > In view of this, how could there be any justification for the suggestion = that Wolfram incorporates what is actually an impressive but amateurish pac= kage into what is supposed to be a sophisticated mathematical program? > Sometimes certain capabilities are missing from Mathematica simply becaus= e implementing "bleeding edge" algorithms in a way that is satisfactory for= a program that has the kind of aspirations that Mathematica obviously does = takes time. > > These sort of "helpful suggesting", particularly when coming from non-exp= == erts, have no chance whatever of being accepted and even can produce the im= == pression of an ulterior motive being involved. >