卷积许多功能

时间:2018-08-24 10:50:50

标签: functional-programming wolfram-mathematica

我有一个实际功能列表:

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进行直接计算可能会更好。

0 个答案:

没有答案