如何从 SymPy 分段对象中提取函数?



我正在尝试计算傅里叶积分系数的结果。当我使用 integrate(( 并打印结果时,我得到一个带有多个参数的 Piecewise 对象,其中一个是我正在寻找的答案。但是,我只需要该参数,并且找不到从分段函数中减去它的方法。

我读过分段对象的每个参数都是定义表达式和条件的 2 元组。我尝试使用项目编号,但得到:

类型错误:"分段"对象不可迭代

我也尝试将结果转换为列表并且它有效,但是我得到了一个带有整个分段函数的项目的列表,所以我遇到了同样的问题。

代码相当简单:

from sympy import *
x = Symbol('x')
w = Symbol('w')
func = exp(-abs(x))
a = integrate(func*cos(w*x), (x, -oo, oo))
print (a)

傅里叶系数的结果为 2/(w^2 +1(,但输出为:

Piecewise((2/(w**2 + 1(, Eq(2*Abs(arg(w((, 0((, (Integral(exp(-Abs(x((cos(wx(, (x, -oo, oo((, True((

如您所见,我正在寻找的函数在第一个参数中就在那里,但是我找不到一种方法来仅从对象中获取第一个参数并仅获取表达式。我对 python 没有经验,所以我认为我没有尝试过所有可能的解决方案,有什么想法吗?

使用 a.args[index] 将给出一个对应的元组 (expr, cond(, a.args[index][0] 将给出 expr,而 [1] 将给出 cond

最新更新