我们知道导数的傅里叶变换是
其中 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/