2014-11-17 201 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