我的目标是使用 MuPAD 计算函数 rho(eta) 的 n 倍自卷积,其中 eta > 0。(背景是由许多相同子系统组成的系统的能量密度。)我试图从一个简单的案例开始,但我已经陷入困境:
对于 eta > 0,我将 rho(eta) 定义为恒定为 1,因此它是一个 Heaviside 函数:
rho := eta -> heaviside(eta)
我使用双积分和 Dirac delta 函数实现了 2 倍自卷积:
int(int(rho(etaA) * rho(etaB) * dirac(etaA + etaB - energy), etaB = 0..infinity), etaA=0..infinity)
结果
因此 MuPAD 甚至无法简化对 delta 函数的积分并获得正常的卷积表达式;不知道这里的限制是怎么回事。
如果我直接用自身输入函数的正常卷积表达式
int(rho(etaA) * rho(energy - etaA), etaA = 0..infinity)
我明白了
再次有一个限制(可以简化为 0,或者不能吗?)。第二项实际上接近正确答案,heaviside
只是解释了energy
可能是否定的可能性。好的,所以我告诉 MuPAD 这energy
是肯定的:
int(rho(etaA) * rho(energy - etaA), etaA = 0..infinity) assuming energy > 0
现在 MuPAD 只是给了我原来不变的积分:
好吧,也许使用heaviside
是问题所在,而且无论如何都不是绝对必要的,因为我通过积分限制实现了 eta > 0 的约束。所以我重新定义
rho := eta -> 1
并将公式与 delta 函数一起使用,再加上energy
积极的信息:
int(int(rho(etaA) * rho(etaB) * dirac(etaA + etaB - energy), etaB = 0..infinity), etaA=0..infinity) assuming energy > 0
你猜怎么着?现在 MuPAD自己返回一个重载:
这是正确的——但它为什么不评估这个积分呢?这并不难,不是吗?
所以请任何人告诉我:为什么会发生这一切?我怎样才能让它发挥作用?