Свернуть много функций - PullRequest
       7

Свернуть много функций

0 голосов
/ 24 августа 2018

У меня есть список реальных функций:

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 может быть намного лучше.

...