我在整合表达式时遇到问题:
我需要整合所有术语,而不考虑变量,
表达式:-x + 2 *(x-1)
预期结果:-x ** 2/2 + 2 *((x-1)** 2)/ 2
我正在使用的代码:
from sympy import *
x = symbols('x')
expr = - x + factor(2 * (x - 1))
int_1 = integrate(expr)
print(int_1)
生成的结果:x ** 2/2-2 * x
我是python初学者...
谢谢!
如果检查结果,您将发现它与原始方程式相同,所以答案是正确的:
>>> eq = -x + factor(2 * (x - 1))
>>> integrate(eq).diff()
x - 2
>>> eq.expand()
x - 2
这意味着您得到的结果与预期结果相差一个常数,并且这种情况在不确定积分方面被认为是正确的。
似乎您已经了解了自动扩展(因此使用factor
防止2分发)。但是,您可能没有意识到,一旦将表达式传递给例程,就不需要将表达式保持为分解形式。您似乎希望x - 1
被当作x
处理。我们可以模拟为
>>> integrate(-x)+integrate(2*y).subs(y,x-1)
-x**2/2 + (x - 1)**2
在这种情况下,使用y
表示x - 1
是可以的,因为结果仅相差一个常数:
>>> (integrate(x-1) - integrate(y).subs(y ,x-1)).is_constant()
True
但是,x
的所有功能都并非正确。
问题是您没有通过任何积分限制(从和到),所以唯一可能的答案是积分公式。
例如,如果您想从0积分到inf,则需要传递此值
from sympy import *
x = symbols('x')
expr = - x + factor(2 * (x - 1))
int_1 = integrate(expr, (x,0, float('inf')))
print(int_1)
用您要求值的任何数字替换0和/或float('inf')。