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

时间:2016-05-04 04:19:14

标签: python sympy mathematical-expressions

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

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

这将失败并抛出例如:

ValueError: gamma function pole

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

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

2 个答案:

答案 0 :(得分:7)

我的猜测是1.5表达式被视为浮点,这是不精确的。您需要一个符号(精确)表示。 (我猜你是否在计算积分之后浮点可能没问题,一般来说,因为支持计算积分的数学库通常会使用积分近似方法来计算积分。)如果你需要做任意的理性指数,考虑使用sympy.RationalHere's StackOverflow上的相关答案似乎支持这一点。我认为sympy.Rational的文档是here。 您可以尝试修改后的代码here

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

答案 1 :(得分:2)

之前的答案是对的,我只是在这里发布我的最终结果

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