3

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

导数的傅里叶变换

其中 k 是傅立叶变量。 在这里解释

我的问题是,为什么不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 趋于无穷大?

如果不是,那么进行替换的最干净的方法是什么?

4

1 回答 1

3

Sympy 不这样做的简单原因是它还没有实现。作为目前的解决方法,您可以手动将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像我在示例中所做的那样,明确地输入那么多 s 可能会更简单。

于 2017-01-09T21:02:22.603 回答