为什么 sympy 不能计算像 (6-x*x)**(1.5) 这样的分数幂公式?

Why sympy cannot calculate fraction power formula like (6-x*x)**(1.5)?

我使用 sympy 计算了一些积分,如下所示。

#Calculate Calculus
import sympy
x = sympy.Symbol('x')
f = (6-x*x)**(1.5)
f.integrate()

这将失败并抛出异常:

ValueError: gamma function pole

如果我只使用整数作为幂 num

就可以正常工作
f = (6-x*x)**(2)
#result: x**5/5 - 4*x**3 + 36*x

我的猜测是 1.5 表达式被视为浮点数,这是不精确的。相反,您需要一个符号(精确)表示。 (我想如果你在计算积分之后,浮点数可能没问题,一般来说,因为支持计算积分的数学库通常会使用积分近似方法来计算积分。)如果你需要做任意有理指数,考虑使用 sympy.RationalHere's a relevant answer on Whosebug that seems to support this. I think the documentation for sympy.Rational is here。 您可以试试这个修改后的代码 here:

#Calculate Calculus
import sympy
frac = sympy.Rational
x = sympy.Symbol('x')
f = (6-x*x)**(frac('1.5'))
f.integrate() 

前面的回答是正确的,我只是在这里发布我的最终结果

import sympy
frac = sympy.Rational
x = sympy.symbols('x')
f1 = (x+3)/(6-x**2)**(frac('1.5'))
f1.integrate()