我正试图使用SymPy计算以下积分:
手算时,答案为-½ log(28)。
我的工作与SymPy的结果一致,直到我对x进行积分。
似乎SymPy无法处理
![$$ \int_{lower}^{0} $$](https://istack.dev59.com/O7r0Pm.webp)
我的工作与SymPy的结果一致,直到我对x进行积分。
x, y = sp.symbols('x y', real=True)
z = 1 / (sp.root(y, 3)*(x**3+1))
iz = z.integrate((y, -x**3, 0)) # integrate with respect to y
print(iz)
# -3*(-x**3)**(2/3)/(2*(x**3 + 1))
iiz = iz.integrate((x, 0, 3)) # integrate with respect to x
print(iiz)
# -3*Integral((-x**3)**(2/3)/(x**3 + 1), (x, 0, 3))/2
print(sp.N(iiz))
# 0.833051127543801 - 1.4428868782084*I
似乎SymPy无法处理
(-x**3)**(2/3)
。这应该简化为x**2
,但SymPy不认为如此。手动简化产生了与我手动获取的相同答案。print( sp.integrate(-3*x**2/(2*(x**3 + 1)), (x, 0, 3)) )
# -log(28)/2
有更好的方法来处理这个问题吗?
abs()
匹配。iiz
有一个(-1)**(2/3)
项,这使得结果变成了复数。 - hpauljabs()
的观察真的很有趣。这是否意味着-log(28)/2
和0.833051127543801 - 1.4428868782084*I
都是有效答案,因为它们在复平面上距离原点的距离相同? - nvi