У меня есть список реальных функций:
T = {f1, f2, ..., fn};
(* For example it can be: *)
F[n_] := Function[x, Exp[-n Abs[x]]];
T = Table[F[n], {n, 10}];
, и я хотел бы найти свертку из всех из них .
Mathematica предоставляет function Convolve
, но это работает для двух функций и имеет довольно странную сигнатуру (она не принимает функции в качестве входных данных, но выражений и символов) делает сложное сложнее ...
До сих пор я пытался использовать преобразование Лапласа следующим образом:
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
может быть намного лучше.