基本上,我正在尝试运行以下代码。
import sympy as sp
alpha = sp.Symbol(r'\alpha')
x = sp.Symbol('x')
sp.Q.is_true(alpha != -1)
sp.integrate(x**alpha, x)
这将导致以下Piecewise
功能。
由于我指定了alpha != -1
的全局假设,所以我希望它只会给我第一个表达式。所以我有两个问题:
sp.integrate
不会忽略它们;Piecewise
函数访问(提取)第一个(或第二个)表达式?提前感谢!
PS。由于某些原因,在conds='separate'
中定义sp.integrate
仅返回第一个表达式。因此,如果我需要分段函数的第二部分,那么我将无法获得它。
PPS。如果这很重要,我有python 3.8.0
和sympy 1.4
。
无法给出特定值作为符号的假设,因此可以在积分中使用它。您可以做的最好的事情是将正,负等分开。但是,对于从逐段中提取所需的表达式,您既可以将其作为特定参数获取,也可以输入x的虚拟值来提取它。如下所示:
>> from sympy.abc import x
>> from sympy import Piecewise, Dummy
>> eq = Piecewise((x + 1, x < 0), (1/x, True))
>> eq.args[0]
(x + 1, x < 0)
>> _.args[0]
x + 1
>> d = Dummy(negative=True)
>> eq.subs(x, d)
d + 1
>> _.subs(d, x)
x + 1