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

时间:2019-10-05 23:43:21

标签: python

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

我已经阅读到分段对象的每个参数都是一个2元组,用于定义表达式和条件。我尝试使用商品编号,但得到:

TypeError:“逐件”对象不可迭代

我也尝试过将结果转换为列表,并且可以正常工作,但是我得到了具有整个分段功能的一项的列表,所以我遇到了同样的问题。

代码非常简单:

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),但输出为:

分段((2 /(w ** 2 +1),Eq(2 * Abs(arg(w)),0)),(积分(exp(-Abs(x)) cos(w x),(x,-oo,oo)),True))

您可以看到我要查找的函数在第一个参数中,但是我找不到从对象中仅获取第一个参数和仅获取表达式的方法。我没有python的经验,所以我认为我没有尝试过所有可能的解决方案,任何想法吗?

1 个答案:

答案 0 :(得分:2)

使用a.args [index]将给出相应的元组(expr,cond), a.args [index] [0]将给出expr,[1]将cond