【问题标题】:Sympy Fourier Transform of exponential decay指数衰减的 Sympy Fourier 变换
【发布时间】:2014-11-17 05:54:11
【问题描述】:

Sympy 正确计算了双边指数衰减的 FT:

x, k, k0 = symbols('x k k0')
fourier_transform(exp(-k0 * abs(x)), x, k)  

--> 2k0 / (4pi^2k^2 + k0^2)

预计手工计算并由http://www.thefouriertransform.com/pairs/decayingexponential.php确认

我试图通过定义一个分段函数来对单边指数衰减做同样的事情,其中​​函数返回 0 表示 x=0

f = exp(-abs(k0)*x)
ssexp = Piecewise( (0,x<0), (f, x>=0))
fourier_transform(ssexp, x, k)

输出(我不知道如何插入格式化方程式)只是返回:

Fx[{0 for x<0, e-x|k0| for x>=0](k)

输出的 LaTeX 代码是 $$ \mathcal{F}{x}\left[\begin{cases} 0 & \text{for}: x {0}} \right\rvert} & \text{for}: x \geq 0 \end{cases}\right]\left(k\right) $$

我已经在 Python/Sympy 中寻找过这种 FT 的示例,但没有找到任何东西。

高斯的解析 FT 也可以正常工作。也许 Piecewise 不是解决此问题的正确工具,或者我犯了其他一些新手错误。

建议表示赞赏。

俱乐部里的老家伙

【问题讨论】:

    标签: python transform fft sympy exponential


    【解决方案1】:

    使用 Heaviside 函数而不是 Piecewise 似乎是这里的方法:

    >>> fourier_transform(f*Heaviside(x), x, k)
    1/(2*I*pi*k + Abs(k0))
    

    但在最新版本的 SymPy 中,您给出的表达式也适用于我:

    >>> fourier_transform(ssexp, x, k)
    1/(2*I*pi*k + Abs(k0))
    

    【讨论】:

    • 非常感谢。我将把它标记为已回答,但我对你让原始 FT 正常工作的能力很感兴趣。我在 Windows、Mac 和 Linux 的 3 个安装上进行了尝试。所有人都有最近的 sympy AFAIK,但都没有评估它!
    • 我认为他的意思是 git 版本(或者您可以使用 0.7.6.rc2 候选版本,它将在本周晚些时候作为最终版本发布)。
    • 好的,谢谢。前沿的代码和 git 超出了我的能力范围!等更新出来我再试试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 2020-08-09
    • 2021-07-17
    • 1970-01-01
    相关资源
    最近更新 更多