我最近用Python取代了Matlab,因为我是真的;对Sympy很感兴趣。
但现在我遇到了以下问题:
我需要一种用Python可靠地计算连续傅里叶变换的方法。 Sympy在解决方案方面存在问题,包括Diracs(Delta函数),因为它们例如出现在三角函数等中。
例如,如果我尝试
fourier_transform(cos(x),x,v)
输出为0
,它应基于Dirac delta函数
有没有人知道,如果Sympy的这一部分有待改进,或者是否有其他方法可以用Python分析性地找到傅里叶变换?
提前感谢您的答案或任何建议!
答案 0 :(得分:3)
据我所知,目前没有人正在研究这个问题,contributions are welcome。
我可以给出一些建议:
如果您在noconds=False
中设置fourier_transform()
,则其中包含0
为True的条件:
In [26]: fourier_transform(cos(t),t,x, noconds=False)
Out[26]:
⎛ │ ⎛ -ⅈ⋅π 2 ⎞│ │ ⎛ ⅈ⋅π 2 ⎞│ ⎞
⎝0, │periodic_argument⎝ℯ ⋅polar_lift (x), ∞⎠│ < π ∧ │periodic_argument⎝ℯ ⋅polar_lift (x), ∞⎠│ < π⎠
除非显示0并非完全错误,否则这些条件不是很有用。
您可以使用FourierTransform
来表示未评估的傅里叶变换。您可以在其上调用doit()
进行评估,或rewrite(Integral)
获取整数形式:
In [28]: FourierTransform(cos(t),t,x).rewrite(Integral)
Out[28]:
∞
⌠
⎮ -2⋅ⅈ⋅π⋅t⋅x
⎮ ℯ ⋅cos(t) dt
⌡
-∞
我现在最好的建议是通过操纵FourierTransform
对象或积分来进行SymPy目前无法手动完成的傅里叶变换。