On 2015-03-10, Nils Bruin <[email protected]> wrote: > On Tuesday, March 10, 2015 at 9:04:14 AM UTC-7, Dima Pasechnik wrote: >> >> On 2015-03-10, M M <[email protected] <javascript:>> wrote: >> > I get different results from Sage when I try to get a numerical >> > approximation for an expression and if I use evaluate a preparse of the >> > string. I get different results on different versions of sage as well. >> Here >> > are samples: >> >> Integration is done by Maxima, and it is a bloody mess; e.g. >> > > It is, but I suspect that's not the cause here. I think it's just numerical > instability. > > sage: sage: integral(x/(x^3-x+1), x, 1, 2).n(100) > 0.56579991645642210974671290281 > sage: sage: integral(x/(x^3-x+1), x, 1, 2).simplify_full().n(100) > 0.56579991645643344322713389324
Indeed, the integers produced by Maxima in the exact answer are rather long. I tried this integral directly in Maxima, and taking bfloat of it outputs nonsense. It seems that Sage's .n(100) works better here. Interestingly, Axiom/FriCAS is able to compute the corresponding indefinite integral: http://axiom-wiki.newsynthesis.org/ExampleIntegration I wish there was a more accessible full implementation of Risch algorithm... > > i.e., approximating the exact result just needs some more digits to be > accurate. The default "n" only specifies the precision *used* using > evaluation, so the error in the numerical approximation isn't a priori > controlled and depends on the particular evaluation scheme chosen for the > expression (expect that to be just "left to right evaluate" as you would do > on a calculator). Specifying more digits to work with should give a better > result for well-behaved expressions. > > In principle, using the RealIntervalField you should get guaranteed digits: > > sage: I=integral(x/(x^3-x+1), x, 1, 2) > sage: RealIntervalField(53)(I) > [-infinity .. +infinity] > sage: RealIntervalField(60)(I) > 1.? > sage: RealIntervalField(70)(I) > 0.566? > sage: RealIntervalField(90)(I) > 0.565799917? > > Needless to say, probably numerical integration is the better way of > getting a numerical approximation. > -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sage-support. For more options, visit https://groups.google.com/d/optout.
