我认为Sympy在计算三角函数的傅里叶变换时存在误差。例如:
from sympy import fourier_transform, sin
from sympy.abc import x, k
print fourier_transform(sin(x), x, k)
期望的答案通过Mathematica计算为
fourier_transform(Heaviside(t)*cos(t),t,omega)
和fourier_transform(Heaviside(t)*sin(t),t,omega)
会返回正确的答案。我认为Sympy可能使用拉普拉斯变换来计算傅里叶变换。
sin
的傅里叶变换是一系列的delta函数之和。可能Sympy在表示delta函数时会有困难。还要注意,对于我来说,sympy.fourier_transform('Heaviside(t)', 't', 'omega')
得到的是-I/(2*pi*omega)
,而在Mathematica中,FourierTransform[HeavisideTheta[t], t, w]
得到的是I/(Sqrt[2 \[Pi]] w) + Sqrt[\[Pi]/2] DiracDelta[w]
(所以sympy也在这里丢失了一个delta函数)。 - senshinDiracDelta
。 - Kattern