2014-11-17 199 views
2

Sympy正确地计算出一个双面指数衰减的FT:Sympy傅立叶变换

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

确认我试图通过定义一个分段函数,其中该函数对于x < 0和EXP(-abs(K0)x)的用于返回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 \ e^{-x \ left \ lvert {k {0}} \ right \ rvert} & \ text {for}:x \ geq 0 \ end {cases} \ right] \ left(k \ right) $$

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

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

建议感激。

老家伙在俱乐部

回答

3

使用Heaviside函数,而不是分段似乎是去这里的路:

>>> 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)) 
+0

非常感谢。我打算把这个标记为答案,但是我对你获得原始金融时报的能力很感兴趣。我在3个安装,Windows,Mac和Linux上尝试过。所有的都有最新的sympy AFAIK,并且都没有评估它! – OldGuyInTheClub

+0

我认为他的意思是git版本(或者你可以使用0.7.6.rc2候选版本,本周晚些时候将作为最终版本发布)。 – asmeurer

+0

好的,谢谢。领先的代码和git超出了我的能力!更新结束后我会再试一次。 – OldGuyInTheClub