我有一个实际功能列表:
T = {f1, f2, ..., fn};
(* For example it can be: *)
F[n_] := Function[x, Exp[-n Abs[x]]];
T = Table[F[n], {n, 10}];
,我想找到所有 的卷积。
Mathematica provides函数Convolve
,但这对两个函数有效,并且具有相当怪异的签名(它不以函数为输入,而是表达式和符号)。 ...
到目前为止,我尝试按以下方式使用Laplace变换:
ConvolveMany[lst_] := Function[t,
InverseLaplaceTransform[
Fold[Times,
Map[LaplaceTransform[#[x], x, y] &, lst]
],
y, t]
];
但是对它的求值时间很长,而且即使对于n=2
,结果也不完全符合真相:
ConvolveMany[T][y]
E^(-2 y) (-1 + E^y)
Convolve[Exp[-Abs[x]], Exp[-2 Abs[x]], x, y]
\[Piecewise]
-(2/3) E^y (E^y-2) y<=0
2/3 E^(-2 y) (2 E^y-1) True
我认为,使用折叠好的Convolve
进行直接计算可能会更好。