9

我认为 Sympy 在计算三角函数的傅里叶变换时犯了一个错误。例如:

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

通过 Mathematica的预期答案是

在此处输入图像描述

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

4

2 回答 2

6

SymPy 通过逐字计算积分来计算傅立叶变换。我认为这是一个错误,所以请随时为它打开一个问题

于 2014-01-19T01:57:37.270 回答
3

您可以添加noconds=False到变换例程中以找出变换积分收敛的条件。正如 asmeurer 所说,我们从字面上计算定义积分,所以你永远不会看到 delta 函数出现。在 的傅里叶变换的情况下cos,条件是“从不”的一种令人费解的说法,不幸的是 sympy 无法识别。(即算法说“如果等等,积分为零”,而等等永远不会成立。)

对于阶跃函数的傅立叶变换,条件似乎是说如果 z 具有负参数(角度)而不是太大,则此方法有效。请注意,这确实是变换积分收敛的时候(b/c 你需要在正实数上选择一个下降的指数项)。在这种情况下,我没有时间考虑计算是否正确。

于 2014-01-19T15:12:44.453 回答