python - 为什么 sympy 不简化导数的傅里叶变换?

标签 python sympy continuous-fourier

我们知道导数的傅里叶变换是

Fourier transform of a derivative

其中 k 是傅立叶变量。 Explanation here

我的问题是,为什么 sympy 不使用这些知识?例如:

from sympy import Function, symbols, fourier_transform, Derivative

f = Function('f')
x, k= symbols('x, k')

G = fourier_transform(Derivative(f(x), x, x) + f(x), x, k)
print(G)

这打印

FourierTransform(f(x), x, k) + FourierTransform(Derivative(f(x), x, x), x, k)

但我希望它能打印(最多 2 pi i 的某些因数)

FourierTransform(f(x), x, k) + k**2 FourierTransform(f(x), x, k)

有没有办法告诉 sympy 不必进行这种简化,因为我期望 f(x) -> 0 随着 x 趋于无穷大?

如果不是,最干净的替代方法是什么?

最佳答案

Sympy 不这样做的简单原因是 it's not implemented yet .作为目前的解决方法,您可以手动将导数的 FourierTransform 替换为乘法:

from sympy import Wild, FourierTransform, Derivative
a, b, c = symbols('a b c', cls=Wild)
G.replace(
    FourierTransform(Derivative(a, b, b), b, c),
    c**2 * FourierTransform(a, b, c)
)

据我所知,Sympy 不提供匹配任意数量参数的模式,因此您不能拥有匹配 Derivative(f(x), x)Derivative(f(x), x, x)Derivative(f(x), x, x, x) 等。您可以通过使用 replace() 的函数-函数形式来解决这个问题,但是如果您知道您正在处理的导数的顺序,那么只输入那么多 可能会更简单b 是明确的,就像我在示例中所做的那样。

关于python - 为什么 sympy 不简化导数的傅里叶变换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41555718/

相关文章:

java - 如何解析 tensorflow 模型的字符串输出

python - bool 选择和屏蔽赋值

python - 将 n 个可区分的元素放入 k 个不可区分的盒子中

python - 参数比例及数学表达式

python - 保存具有特定分辨率/像素密度的 Python SymPy 图形

python - 将数据表示为傅里叶变换或高次多项式?

python - 使用 Numpy 进行傅立叶变换

python - 窗口管理器应该如何处理 ConfigureRequestEvent?

python - 使用python3将numpy整数类型插入到sqlite中

r - 解释每周和每年季节性的先知输出