如何将表达式与sympy集成?

问题描述 投票:0回答:2

我在整合表达式时遇到问题:

我需要整合所有术语,而不考虑变量,

表达式:-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初学者...

谢谢!

python expression sympy integrate
2个回答
2
投票

如果检查结果,您将发现它与原始方程式相同,所以答案是正确的:

>>> 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的所有功能都并非正确。


-1
投票

问题是您没有通过任何积分限制(从和到),所以唯一可能的答案是积分公式。

例如,如果您想从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')。

© www.soinside.com 2019 - 2024. All rights reserved.