指数衰减的Sympy Fourier变换

时间:2014-11-17 05:54:12

标签: python transform fft sympy exponential

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确认

我尝试通过定义一个Piecewise函数对单边指数衰减做同样的事情,其中​​函数为x< 0返回0而exp(-abs(k0)x)为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&amp; \ text {for}:x&lt; 0 \ e ^ { - x \ left \ lvert {k {0}} \ right \ rvert}&amp; \ text {for}:x \ geq 0 \ end {cases} \ right] \ left(k \ right) $$

我已经在Python / Sympy中找到了这种FT的例子但没有找到任何东西。

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

建议表示赞赏。

俱乐部中的老家伙

1 个答案:

答案 0 :(得分:3)

使用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))