Python 为什么';t简化导数的傅里叶变换?

Python 为什么';t简化导数的傅里叶变换?,python,sympy,continuous-fourier,Python,Sympy,Continuous Fourier,我们知道导数的傅里叶变换是 其中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

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

其中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πI的某些因数)

有没有一种方法可以告诉我,当x趋于无穷大时,f(x)->0是一种简化方法


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

Symphy不这么做的原因很简单。作为目前的解决办法,您可以手动将导数的
fourier变换
替换为乘法:

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不提供匹配任意数量参数的模式,因此不能有一个模式匹配
导数(f(x),x)
导数(f(x),x,x)
导数(f(x),x,x)
,等等。你可以通过使用函数形式
replace()
来解决这个问题,但是如果你知道你要处理的导数的阶数,那么像我在示例中所做的那样,只需显式地输入那么多
b
s可能会更简单。

谢谢你的回答!这是可行的,但有一点需要注意的是,replace不起作用,所以我需要一个额外的
G=…
(我花了比看起来更长的时间才弄清楚;)。感谢您指出它仍然需要实现,如果我最终在项目中使用它,我可能会提交一份PR来实现它。当然,我不想假设您是否希望将替换结果分配给
G
。对不起,我没有澄清。如果你能正确地实施衍生品的FTs,我相信Sympy社区会非常感激你——但我想,没有这样做的原因是它有点棘手!祝你好运;-)
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)
)