【问题标题】:SymPy integration with assumptionsSymPy 与假设的集成
【发布时间】:2019-12-06 20:21:42
【问题描述】:

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

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 的全局假设,我希望它只会给我第一个表达式。所以我有两个问题:

  1. 您如何正确定义假设,以便sp.integrate 不会忽略它们;
  2. 有没有办法从Piecewise 函数中访问(提取)第一个(或第二个)表达式?

提前致谢!

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

PPS。如果这很重要,我有python 3.8.0sympy 1.4

【问题讨论】:

    标签: python sympy symbolic-math


    【解决方案1】:

    没有办法给出特定值作为符号的假设,因此它可以在集成中使用。您可以做的最好的事情是指定正数、负数等...但是对于从分段提取所需的表达式,您可以将其作为特定参数获取,也可以输入 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
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    相关资源
    最近更新 更多