SymPy 中是否有针对未计算积分的技巧和调整?

Are there tricks and tweaks for unevaluated integrals in SymPy?

我试图通过追溯它们的推导来验证一篇关于力学的论文中的一些公式,涉及一些像这样的积分:

原始消息来源表明解决方案是可能的,但它似乎很棘手。我尽力使用 SymPy(也使用 Maxima 和 Mathematica)摆弄不同的假设和简化,但没有成功:

import sympy as sp
from IPython.display import display, Math

x = sp.symbols('x', nonnegative=True, real=True, finite=True)
a = sp.symbols('a', positive=True, real=True, finite=True)
b = sp.symbols('b', positive=True, real=True, finite=True)
# print("assumptions for x:", x.assumptions0)
# print("assumptions for a, b:", r.assumptions0)

expr = x/(b + 2*(a-sp.sqrt(x)*sp.sqrt(2*a-x)))**3
expr = sp.expand(expr)
display(Math("e = "+sp.latex(expr)))

integ = sp.integrate(expr, (x, 0, a))
display(Math("integ = "+sp.latex(integ)))

SymPy returns 我的积分未计算。我可以尝试使用其他技巧和调整来获得解决方案吗?参数a和b是物理维度(有限正实数)。

使用Rubi找到的答案是

(a^2*(2*a + b)^4*(Sqrt[2*a - Sqrt[-4*a - b]*Sqrt[b]]*Sqrt[2*a + Sqrt[-4*a - b]*Sqrt[b]]*
    (Sqrt[b]*(-2*a + b)*Sqrt[-(4*a + b)^2] + 6*a*Sqrt[-4*a - b]*(2*a + b)*ArcTan[(2*a)/(Sqrt[b]*Sqrt[4*a + b])]) - 
   6*a*(2*a + b)^2*Sqrt[4*a + b]*ArcTanh[Sqrt[2*a - Sqrt[-4*a - b]*Sqrt[b]]/Sqrt[2*a + Sqrt[-4*a - b]*Sqrt[b]]] + 
   6*a*(2*a + b)^2*Sqrt[4*a + b]*ArcTanh[Sqrt[2*a + Sqrt[-4*a - b]*Sqrt[b]]/Sqrt[2*a - Sqrt[-4*a - b]*Sqrt[b]]]))/
 (2*(2*a - Sqrt[-4*a - b]*Sqrt[b])^(5/2)*(2*a + Sqrt[-4*a - b]*Sqrt[b])^(5/2)*Sqrt[-4*a - b]*b^(5/2)*(4*a + b)^(5