email@example.com wrote: > > Waldek Hebisch schrieb: > > > > firstname.lastname@example.org wrote: > > > > > > I bumped into this and am surprised by 70% failures (and not just > > > timeouts) of the Axiom integrator on algebraic integrals possessing > > > logarithmic antiderivatives that involve the single simple radical > > > SQRT(x^3+1) or SQRT(x^4+1): > > > > > > <http://www.risc.jku.at/publications/download/risc_3427/Ka01.pdf> > > > > > > This must be where the missing computation of the "splitting field > > > of the Trager resultant" comes in. > > > > If one wants to describe the reason in one sentence, then yes. > > [...] > > > > FYI, FriCAS contans code which in many cases avoids both > > problems. Namely, FriCAS tries to split integral and > > integrate parts separately. This handles the sqrt(1 + x^4) > > cases. Currently in sqrt(1 + x^3) case FriCAS is unable > > to find working split and gives up. > >
A little correction (I wrote the above from memory): FriCAS has problems with (1 + x^3)^(1/3). The sqrt(1 + x^3) seem to work fine.
> Thanks for the explanation. > > If the failure to suitably split elementary integrals involving the > radical sqrt(1 + x^3) = sqrt((1 + x)*(1 - x + x^2)) is somehow caused by > the presence of an odd power in the radicand, the substitution t^2 = > 1 + x might help, which introduces the radical sqrt(3 - 3*t^2 + t^4) > where all powers of t are even. A better substitution would be t^2 = > (1 - x + x^2)/(1 + x), which introduces sqrt(-3 + 6*t^2 + t^4), because > here t remains real whenever the original radical is real.
Theoretically the sqrt(1 + x^3) is very easy. However, FriCAS does not take any advantage of this special form and in fact changes variables to produce IIRC square root of polynomial of degree 4. To give more details: Trager algorithm produces expression of form
where each u_i has simple poles with integer residues. For rational functions each u_i would produce a log term. In algebraic case sometimes u_i directly give log term (this is the case in Kauers examples) sometimes one must combine several terms into one. Trager gave a method do decide if a single u_i corresponds to a log. However, Trager test only works if u_i has no poles at infinity. So Trager must first change variables to remove poles at infinity. This changes u_i, in particular in Kauers case each u_i splits into two terms. Namely, one term corresponds to poles of the logand, another to zeros of the logand. Consequently, after change of variables single u_i _never_ gives a log. one must always combine them. FriCAS tries to find matching terms by looking at terms that have residue differning only by signs. This heuristic may fail if two logands have common pole (or zero). Kauers examples put poles at infinity, so there is common pole. In sqrt(x^4+1) there are two poles at infinity and this seem to be the reason that matching still works. In sqrt(x^3+1) Trager test for logs may be modified to handle pole at infinity, so there is no need to change variables and then logs would be directly visible without any need for matching. In (x^3+1)^3 case correct way of matching terms is "obvious" for humans, but not so easy to code in a general way.
Concerning you change of variables: it assumes knowledge of some root of x^3+1. However, for irreducible cubic root would introduce algebraic extension and that is _very_ expensive for FriCAS.