首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指数衰减的Sympy Fourier变换

指数衰减的Sympy Fourier变换
EN

Stack Overflow用户
提问于 2014-11-17 05:54:11
回答 1查看 1.7K关注 0票数 2

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

代码语言:javascript
复制
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返回0,对x >=0返回exp(-abs(k0)x)。

代码语言:javascript
复制
f = exp(-abs(k0)*x)
ssexp = Piecewise( (0,x<0), (f, x>=0))
fourier_transform(ssexp, x, k)

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

代码语言:javascript
复制
Fx[{0 for x<0, e-x|k0| for x>=0](k)

输出的LaTeX代码是$$ \mathcal{F}{x}\左侧[\begin{cases}0&\text{}:x<0 \e^{- x\\l弗特{k{0}\右\rvert}&文本{ for }:X \geq 0\\end $$ }]\左(k\右)。

我在Python/Sympy中寻找过这类FT的例子,但没有发现任何东西。

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

感谢你的建议。

俱乐部里的老家伙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-17 12:02:59

使用Heaviside函数而不是Piecewise似乎是解决这个问题的方法:

代码语言:javascript
复制
>>> fourier_transform(f*Heaviside(x), x, k)
1/(2*I*pi*k + Abs(k0))

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

代码语言:javascript
复制
>>> fourier_transform(ssexp, x, k)
1/(2*I*pi*k + Abs(k0))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26966396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档