我们知道衍生物的傅里叶变换是
其中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个因素)
FourierTransform(f(x), x, k) + k**2 FourierTransform(f(x), x, k)
有没有办法告诉sympy
它的保存是为了简化,因为我希望f(x) - > 0为x变为无穷大?
如果没有,那么最干净的替代方法是什么?
答案 0 :(得分:3)
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
就可能更简单了。明确地说,就像我在例子中所做的那样。