gpt4 book ai didi

python - 傅立叶变换 Sympy 什么都不做?

转载 作者:行者123 更新时间:2023-12-04 03:52:42 25 4
gpt4 key购买 nike

sympy 能够快速计算傅立叶变换还是我需要其他软件?因为我尝试了很多东西。不过,我对 python 和 Sympy 缺乏经验。有没有更快的方法用 python 进行这些傅立叶变换?

  1. (a +j\omega)/(4a^2 + (a+j\omega)^2) )我这样试过
    from sympy import poly, pi, I, pow
from sympy.abc import a,f, n, k
n = poly(a**2 + t**2)
k = t / n
fourier_transform(k , t, 2*pi*f)

我收到这条消息: enter image description here

另一个来自 Python 3.9 shell 的例子: enter image description here那么实际结果呢?

最佳答案

1

目前,如果傅立叶变换返回一个 PieceWise 表达式,它会大惊小怪,只会返回一个未计算的表达式。所以 SymPy 可以进行积分,只是形式不是很好。这是手动集成后的结果。

enter image description here

如果你想要这样的答案,你可以自己使用这个函数来获得这个结果。

def my_fourier_transform(f, t, s):
return integrate(f*exp(-2*S.Pi*I*t*s), (t, -oo, oo)).simplify()

可以看到长条件有 arg(a)arg(s) 应该是 sign(a)sign(s) 分别(假设它们是实值)。在 Wolfram Alpha 中做了类似的事情后,我认为这是一个正确的结果。这不是一个很好的。

但我发现了一个有用的技巧。如果 SymPy 难以简化某些事情,如果您的主要目标只是获得答案,通常给它更强的假设是可行的方法。很多时候,即使假设不成立,答案仍然是正确的。所以我们让变量为正。

请注意,如以下评论所述,SymPy 对 Wolfram Alpha 的转换方式不同。这就是为什么我的第三个论点不同。

from sympy import *
a, s, t = symbols('a s t', positive=True)
f = t / (a**2 + t**2)
# Wolfram computes integral(f(t)*exp(I*t*w))
# SymPy computes integral(f(t)*exp(-2*pi*I*s*t))
# So w = -2*pi*s
print(fourier_transform(f, t, -s))
# I*pi*exp(-2*pi*a*s)

2

如果我错了,请纠正我,但根据维基百科:

enter image description here

所以 Dirac Delta 的傅立叶变换为 1。

3

使用上面定义的my_fourier_transfrom,我们得到

enter image description here

第一个条件始终为假。这可能是 SymPy 的失败,因为这个积分发散了。我认为这是因为它无法确定它是 oo-oo 还是 zoo

关于python - 傅立叶变换 Sympy 什么都不做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64248629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com