卷积中乘法的辛代傅里叶变换

2024-09-28 01:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个通式,我试着把乘法的傅里叶变换(2个时域函数)变成它们之间的卷积

我想把下面表达式中的第一个元素改为n(t)和p(t)之间的卷积

G=FourierTransform(n(t)*p(t), t, k) - 2.0*I*k*FourierTransform(n(t), t)

卷积函数定义为:

def convolve(f, g, t, lower_limit=-oo, upper_limit=oo):
    tau = Symbol('__some_name__', real=True)
    return integrate(f.subs(t, tau) * g.subs(t, t - tau),
        (tau, lower_limit, upper_limit))

我试着:

a, b,c = symbols('a b C', cls=Wild)
G=G.replace(FourierTransform(a*d, b,c), convolve(FourierTransform(a, b,c),
    FourierTransform(d, b,c),t)

然而,python似乎不认识这种傅里叶变换模式,因为G保持完全相同

谢谢


Tags: 函数元素表达式upperlower卷积oosubs
1条回答
网友
1楼 · 发布于 2024-09-28 01:30:06

您正在模式中使用变量“d”,但未定义它。试试a, b, c, d = symbols('a b c d', cls=Wild)。那么,你的模式对我来说很有效:

print(
G.replace(
    FourierTransform(a*d, b, c), 
    convolve(
        FourierTransform(a, b,c),
        FourierTransform(d, b,c),t)))

给出:

-2.0*I*k*FourierTransform(n(t), t) +
oo*sign(FourierTransform(n(t), t, k)*FourierTransform(p(t), t, k))

相关问题 更多 >

    热门问题