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

问题描述 投票:0回答:2

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

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

通过 Mathematica 的预期答案是

enter image description here

但是 Sympy 返回 0。有时该函数运行得很好,因为

fourier_transform(Heaviside(t)*cos(t),t,omega)

fourier_transform(Heaviside(t)*sin(t),t,omega)
 返回正确的答案。我认为 Sympy 可能使用拉普拉斯变换来计算傅里叶变换。 

python sympy continuous-fourier symbolic-integration
2个回答
6
投票
SymPy 通过字面上计算积分来计算傅里叶变换。我认为这是一个错误,所以请随意为其打开“问题”。

您可以将

3
投票
添加到变换例程中以查找变换积分在哪些条件下收敛。正如 asmeurer 所说,我们实际上是计算定义积分,所以你永远不会看到 delta 函数出现。在

cos

 的傅立叶变换的情况下,条件是一种复杂的“从不”方式,不幸的是 sympy 无法识别。 (即算法说的是“如果 blah 则积分为零”,而 blah 永远不成立。)
对于阶跃函数的傅立叶变换,条件似乎是说,如果 z 具有负参数(角度)且不太大,则此方法有效。请注意,这确实是变换积分收敛的时候(b/c 您需要在正实数上选取下降指数项)。我没有时间去思考这种情况下的计算是否正确。

© www.soinside.com 2019 - 2024. All rights reserved.