Re: FindRoots?

*To*: mathgroup at smc.vnet.net*Subject*: [mg112274] Re: FindRoots?*From*: "Ingolf Dahl" <ingolf.dahl at telia.com>*Date*: Tue, 7 Sep 2010 06:07:19 -0400 (EDT)

Andrzej states that a non-polynomial interpolating function cannot be analytic, and therefore cannot be used together with Reduce. I had asked about RBF interpolation with a Gaussian radial basis function. As I understand it, such an interpolation is a sum of Gaussians, centered around different points, and this sum can be written in such a way that it is analytic (The exponent of the Gaussian should then contain x squared, and not x times the conjugate of x.) Such interpolation functions cannot in general be handled by Reduce, but this is not related to being analytic or not, they are simply too complicated. Reduce can handle the following function with simple coefficients and three terms, if given some time: Reduce[0.3 E^(-(1/2) (-2.23 + x)^2) - 0.7 E^(-(1/2) (-1.45 + x)^2) + 1.1 E^(-(1/2) (0.` + x)^2) == 0, {x}, Reals] but does not seem to get ready with this, not within my patience: Reduce[-16.367079553136787` E^(-(1/2) (-2.33` + x)^2) + 20.460124007820784` E^(-(1/2) (-2.23` + x)^2) - 5.524386343053091` E^(-(1/2) (-1.45` + x)^2) + 2.4125732736976717` E^(-(1/2) (0.` + x)^2) == 0, {x}, Reals] , both expressions equally analytic. The roots of this second equation are not in any way problematic, and are robust to the "fuzziness" of the real numbers in Mathematica. But to me it seems as if Reduce does inadequate things in this case. Maybe I am generalizing from too few examples. Please correct me if that is the case! But anyway, I consider it as snobbery to say that Reduce is superior to RootSearch. They do not play in the same division, and perform different tasks. Best regards Ingolf Dahl > -----Original Message----- > From: Andrzej Kozlowski [mailto:akozlowski at gmail.com] > Sent: den 5 september 2010 13:09 > To: mathgroup at smc.vnet.net > Subject: [mg112229] Re: FindRoots? > > > 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 > no! > 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