使用Python / Sympy进行连续傅里叶变换(分析解决方案)

时间:2015-10-19 07:21:51

标签: python sympy continuous-fourier

我最近用Python取代了Matlab,因为我是真的;对Sympy很感兴趣。

但现在我遇到了以下问题:

我需要一种用Python可靠地计算连续傅里叶变换的方法。 Sympy在解决方案方面存在问题,包括Diracs(Delta函数),因为它们例如出现在三角函数等中。

例如,如果我尝试

fourier_transform(cos(x),x,v)

输出为0,它应基于Dirac delta函数

有没有人知道,如果Sympy的这一部分有待改进,或者是否有其他方法可以用Python分析性地找到傅里叶变换?

提前感谢您的答案或任何建议!

1 个答案:

答案 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目前无法手动完成的傅里叶变换。