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

3
我正在尝试计算傅里叶积分系数的结果。使用integrate()并打印结果后,我得到了一个Piecewise对象,其中包含多个参数,其中一个是我要查找的答案。然而,我只需要该参数,却找不到从Piecewise函数中减去它的方法。
我已经阅读了每个Piecewise对象的参数都是一个二元组,定义了表达式和条件。我尝试使用项目编号,但遇到错误:
TypeError: 'Piecewise' object is not iterable 我也尝试将结果转换为列表,它可以工作,但我得到了一个包含整个Piecewise函数的单个项目列表,所以我仍然遇到同样的问题。
代码非常简单:
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编程经验,因此我不认为我已经尝试了所有可能的解决方案,请问您有什么建议吗?

可能是处理由Sympy integrate返回的分段方程的重复问题。 - undefined
请注意,与忽略收敛和将参数限制为实数值相关的重复答案中的提示,在这里同样适用。 - undefined
1个回答

8
使用 a.args[index] 将返回一个对应的元组 (expr, cond), a.args[index][0] 将返回 expr,[1] 则是 cond。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接