SymPy集成假设

基本上,我正在尝试运行以下代码。

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函数。

SymPy集成假设

由于我指定了alpha != -1的全局假设,因此我希望它只会给我第一个表达式。所以我有两个问题:

  1. 您如何正确定义假设,以使sp.integrate不会忽略它们;
  2. 是否可以通过Piecewise函数访问(提取)第一个(或第二个)表达式?

谢谢!

PS。在conds='separate'中定义sp.integrate仅出于某种原因仅返回第一个表达式。因此,如果我需要分段函数的第二部分,那么我将无法获得它。

PPS。万一这很重要,我有python 3.8.0sympy 1.4

byqzhx 回答:SymPy集成假设

无法给出特定值作为符号的假设,因此可以在积分中使用它。您可以做的最好的事情是指定正数,负数等。但是对于从逐段提取所需的表达式,您既可以将其作为特定参数获取,也可以输入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
本文链接:https://www.f2er.com/2960259.html

大家都在问