• Re: Risch integrator troubles

    From Sam Blake@21:1/5 to nob...@nowhere.invalid on Sun Feb 5 16:01:51 2023
    On Sunday, October 27, 2019 at 5:16:01 AM UTC+10, nob...@nowhere.invalid wrote:
    Albert Rich schrieb:

    On Tuesday, October 22, 2019 at 10:22:57 AM UTC-10, clicl...@freenet.de wrote:

    FriCAS 1.3.5 determines the algebraic integral:

    integrate((3*x + 2)/((9*x^2 + 52*x - 12)*(3*x^2 + 4)^(1/3)), x)

    to be non-elementary, even though it just equals:

    SUBST(INT(3/(t^3 + 196), t), t, (3*x - 10)/(3*x^2 + 4)^(1/3))


    I added this problem to Rubi's integration test-suite.

    Short of Risch, is there an algorithm a rule-based integrator could
    use to determine this substitution?

    That's the idea: nudging FriCAS to learn more about cube roots!

    I simply analyzed which integrands of the form (a1 + b1*x)/((c1 + d1*x
    + e1*x^2)*croc(x)) could be rationalized as 1/(alpha + beta*t^3) for
    t = (p + q*x)/croc(x), where croc(x) represents the cube root of any
    cubic whose roots are not too expensive to handle. This integrand form
    is invariant under Möbius transformations, whence the analysis can be simplified by specializing the radicand to a + c*x^2, say, and
    generalizing to (a + b*x)*(c + d*x + e*x^2) only afterwards. Quite obviously, such an ansatz leads to a system of polynomial equations
    among the coefficients.

    The solutions comprise some families of Goursat cases, which name I
    apply when -p/q is a radicand root, and one non-Goursat family, of
    which the integral mistreated by FriCAS is a member (the FriCAS failure appears to be systematic). Any Goursat or non-Goursat solution can be
    easily implemented as a Rubi rule, but the former cases are better
    handled through tests and substitutions equivalent to those in
    Goursat's 1887 paper for square roots of quartics, since that approach applies to arbitrary rational factors in the integrand and encompasses
    rules for the appropriate integrand splitting.

    Just in case, here's my explicit non-Goursat antiderivative:

    INT((3*x + 2)/((x + 6)*(9*x - 2)*(3*x^2 + 4)^(1/3)), x) =
    - 1/(28*14^(1/3))*(LN(14^2*(3*x^2 + 4) + (3*x - 10)^3)
    - 3*LN(14^(2/3)*(3*x^2 + 4)^(1/3) + 3*x - 10)
    + 2*SQRT(3)*ATAN(1/SQRT(3)*(1 + 2*(10 - 3*x)
    /(14^(2/3)*(3*x^2 + 4)^(1/3)))))

    Martin.

    Better late than never - Mathematica 13.2 gets this one out in under half a second:

    In[7146]:= $Version
    Out[7146]= "13.2.0 for Mac OS X x86 (64-bit) (November 18, 2022)"

    In[7147]:= Integrate[(2 + 3 x)/((4 + 3 x^2)^(1/3) (-12 + 52 x + 9 x^2)), x] // Timing

    Out[7147]= {0.495113, -(1/(28 14^(1/3)))(2 Sqrt[3]
    ArcTan[(10 14^(1/3) - 3 14^(1/3) x + 7 (4 + 3 x^2)^(1/3))/(
    7 Sqrt[3] (4 + 3 x^2)^(1/3))] -
    2 Log[-10 14^(1/3) + 3 14^(1/3) x + 14 (4 + 3 x^2)^(1/3)] +
    Log[100 14^(2/3) - 60 14^(2/3) x + 9 14^(2/3) x^2 +
    196 (4 + 3 x^2)^(2/3) + 14 (10 - 3 x) (56 + 42 x^2)^(1/3)])}

    and the general form of this integral in around 1 second:

    In[7156]:= Integrate[(3 a d - 2 b c x + a c x^2)/((d + c x^2)^(1/3) (b^3 + d e + 3 a b^2 x + 3 a^2 b x^2 + c e x^2 + a^3 x^3)), x] // Timing

    Out[7156]= {0.903716, (1/(2 e^(2/3)))(2 Sqrt[3] ArcTan[(Sqrt[3] e^(1/3) (d + c x^2)^(1/3))/(-2 b - 2 a x + e^(1/3) (d + c x^2)^(1/3))] +
    2 Log[b + a x + e^(1/3) (d + c x^2)^(1/3)] -
    Log[b^2 + 2 a b x + a^2 x^2 - e^(1/3) (b + a x) (d + c x^2)^(1/3) +e^(2/3) (d + c x^2)^(2/3)])}

    Sam

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)