我认为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是
但是Sympy会返回0.有时候,由于fourier_transform(Heaviside(t)*cos(t),t,omega)
和fourier_transform(Heaviside(t)*sin(t),t,omega)
返回正确的答案,因此该函数运行良好。我认为Sympy可能正在使用拉普拉斯变换来计算傅里叶变换。
答案 0 :(得分:6)
SymPy通过字面计算积分来计算傅立叶变换。我认为这是一个错误,所以随意打开它an issue。
答案 1 :(得分:3)
您可以将noconds=False
添加到转换例程,以查找转换积分在哪些条件下收敛。正如asmeurer所说,我们实际上计算了定义积分,所以你永远不会看到delta函数出现。在cos
的傅立叶变换的情况下,条件是一种说“永不”的复杂方式,不幸的是,同情不承认。 (即,算法说的是“如果等等,积分为零”,而且从不持有。)
对于阶梯函数的傅里叶变换,条件似乎是说如果z具有负参数(角度),这不会太大。请注意,这确实在变换积分收敛时(b / c需要在正实数上获得指数下降的指数)。在这种情况下,我没有时间考虑计算是否正确。