傅立叶变换Sympy中的trig函数返回意外结果

时间:2014-01-18 09:18:13

标签: python integration sympy continuous-fourier

我认为Sympy在计算trig函数的Fourier transform时犯了一个错误。例如:

from sympy import fourier_transform, sin
from sympy.abc import x, k
print fourier_transform(sin(x), x, k)

预期答案via Mathematica

enter image description here

但是Sympy会返回0.有时候,由于fourier_transform(Heaviside(t)*cos(t),t,omega)fourier_transform(Heaviside(t)*sin(t),t,omega)返回正确的答案,因此该函数运行良好。我认为Sympy可能正在使用拉普拉斯变换来计算傅里叶变换。

2 个答案:

答案 0 :(得分:6)

SymPy通过字面计算积分来计算傅立叶变换。我认为这是一个错误,所以随意打开它an issue

答案 1 :(得分:3)

您可以将noconds=False添加到转换例程,以查找转换积分在哪些条件下收敛。正如asmeurer所说,我们实际上计算了定义积分,所以你永远不会看到delta函数出现。在cos的傅立叶变换的情况下,条件是一种说“永不”的复杂方式,不幸的是,同情不承认。 (即,算法说的是“如果等等,积分为零”,而且从不持有。)

对于阶梯函数的傅里叶变换,条件似乎是说如果z具有负参数(角度),这不会太大。请注意,这确实在变换积分收敛时(b / c需要在正实数上获得指数下降的指数)。在这种情况下,我没有时间考虑计算是否正确。