Re: FindRoots?

*To*: mathgroup at smc.vnet.net*Subject*: [mg112229] Re: FindRoots?*From*: Andrzej Kozlowski <akozlowski at gmail.com>*Date*: Sun, 5 Sep 2010 07:08:35 -0400 (EDT)*References*: <201009040758.DAA25856@smc.vnet.net> <002501cb4cd7$50dc0ff0$f2942fd0$@dahl@telia.com>

On 5 Sep 2010, at 10:49, Ingolf Dahl wrote: > Andrzej, > I must ask some question related to your answer. Better to ask and appear > unwise than not to ask and remain unwise. > The questions are interlaced below. > >> -----Original Message----- >> From: Andrzej Kozlowski [mailto:akozlowski at gmail.com] >> Sent: den 4 september 2010 09:58 >> To: mathgroup at smc.vnet.net >> Subject: [mg112182] Re: FindRoots? >> >> (snipped) >> >> Reduce used exact methods so you have to rationalize the output or use > equivalent >> approaches and it works fine in such cases. You are right that you can't > use it with >> Interpolating functions since of course they are not analytic. > > I want to put a question mark on "of course". Say, an interpolation > polynomial of fifth degree - is that not "analytic"? Or a RBF (radial basis > function) interpolation, with a Gaussian radial basis function. And most > other interpolation methods (also those returned by NDSolve) are > differentiable any number of times everywhere except in isolated points or > along some lines. Then it should be a bookkeeping problem to analyze each > interval or region, one at a time? It should not be too difficult to > exchange the interpolation method, if that is preferred. Of course interpolating polynomials are analytic but if you use Reduce with an interpolating polynomial you will certainly not encounter the problems Gianluca referred to. As for the other types of interpolating functions: remember that for Reduce to work it needs to be a complex analytic function, i.e. differentiable when considered as a function of a complex variable (i.e. the Cauchy-Riemann equations have to be satisfied), and of course that is not true for a non-polynomial interpolating function. Remember that the purpose of Reduce is to return mathematically "provable" results (and, in those cases when it can only produce a partial result it will display a message to the effect that the methods available to it are not sufficient to obtain the complete solution and either display a partial solution or none). > > > Andrzej Kozlowski wrote: >> I concede that you make a reasonable case for this sort of capability. > However, >> computations of this kind with Interpolating functions are generally quite > unreliable, since >> the conditions required by FindRoot to work are often not satisfied. I > don't think this sort >> of hit or miss approach is appropriate for a mathematical solver. Perhaps > this sort of >> capabilities should be available in a package designed specifically for > dealing with >> interpolating functions (which I don't consider as "mathematical > objects"). > > What are interpolating functions then? Please elaborate in detail, because I > am curious! > > I think that different point sets in abstract vector spaces are important in > many places for our description of the world and of the universe of > thoughts. Interpolation functions make it possible to apply various > mathematical methods to these point sets. And I think that abstract point > set tools might become important in the further development of machine > intelligence. Well, I wrote that quickly and did not give it much thought. In fact, in a certain sense everything that Mathematica does can be given a rigorous mathematical description, and hence it is all "mathematical". However, some of the basic objects that Mathematica deals with not the kind of objects one deal with in "usual" mathematica yet in some sense they can be viewed as some sort of "simulations" of them. The main examples of such things are approximate numbers in Mathematica. One can certainly produce a rigorous mathematical theory of Mathematica's real or complex numbers but it will be in many ways different from what we mean by real and complex numbers in mathematics. As has been often mentioned on this forum, Mathematica's real numbers are really "fuzz balls", similar to intervals but not quite. The rules for working with them are perfectly mathematical but usually they are not known to the users (one can read about them in full detail in some technical publications but n o! t in the Mathematica documentation). So what users do is regard them as some sort of approximations to certain standard mathematical concepts. In practice this is almost always enough. The problem occurs of course when you try to apply mathematical theorems, proven for the "real things" to these approximations. In general you can't expect to get reliable results. The problem with (non-polynomial) interpolating functions is that they are constructed out of and applied to Mathematica's non-exact numbers. It seems clear that you can't expect to obtain mathematically valid results by applying to these entities theorems proved for the "standard" mathematica objects which they approximate of "simulate". For really reliable results you would need methods that fully took into account the actual "fuzzy" nature of these things. That is why functions like Reduce or Solve which rely on "standard mathematics" are not usually appropriate. This is, of course, not an argument against having in Mathematica the sort of capabilities that Gianluca wrote about. Rather, I don't think the existing RootSearch actually offers them, since I think it relies on the built in FindRoot function. Although FindRoot is indeed intended for solving numerical equations I do not think it can be reliably used with InterpolatingFunction objects that arise as solutions of differential equations. I say this on the basis of my own experience. There is often a way to avoid this by using the "EventLocator" value of the option Method in NDSolve. Andrzej Kozlowski

**References**:**Re: FindRoots?***From:*Andrzej Kozlowski <akozlowski@gmail.com>