# Is there an option for InverseLaplaceTransform to make Mathematica use the convolution theorem when feasible?

By default, it appears that Mathematica won't use the convolution theorem to write an inverse Laplace transform in the form of a convolution of two functions.

For example, InverseLaplaceTransform[1/(s+1),s,t] is e^-t and InverseLaplaceTransform[LaplaceTransform[f[t],t,s],s,t] is f(t). So, InverseLaplaceTransform[1/(s+1)*LaplaceTransform[f[t],t,s],s,t] should be able to be written as the convolution of e^-t and f[t]. But, Mathematica doesn't do that automatically. Is there a way to set an option for InverseLaplaceTransform to tell it that I would like it to use the convolution theorem, if possible, to write its results in terms of convolutions of functions?

• There's no such option AFAIK. As a work-around, we can implement this property ourselves. I've tried coding this for FourierTransform here: mathematica.stackexchange.com/a/71393/1871 Implementing it for InverseLaplaceTransform should be similar. Commented Dec 8, 2023 at 2:34

I modified @xzczd's code and came up with the following wrapper for the inverse Laplace transform:

ilpt[(h : List | Plus | Equal)[a__], s_, t_] := ilpt[#, s, t] & /@ h[a]
ilpt[a_ b_, s_, t_] :=
Module[{w}, Convolve[ilpt[a, s, w], ilpt[b, s, w], w, t]]
ilpt[a_, s_, t_] := InverseLaplaceTransform[a, s, t]


I used the following code to test that it is working, although there may be edge cases that are not covered (I'm a computer scientist, not a mathematician, so Laplace transforms are a little outside my wheelhouse.):

ilpt[a*LaplaceTransform[f[t], t, s], s, t] // TraditionalForm
ilpt[LaplaceTransform[g[t], t, s]*b, s, t] // TraditionalForm
ilpt[1/(s + 1)*LaplaceTransform[f[t], t, s], s, t] // TraditionalForm
ilpt[LaplaceTransform[f[t], t, s]*LaplaceTransform[g[t], t, s], s,
ilpt[a*LaplaceTransform[f[t], t, s]*LaplaceTransform[g[t], t, s]*b, s,


with the following results:

a f(t)
b g(t)
Convolve[E^-w$$331676,f(w$$331676),w$$331676,t] Convolve[f(w$$331922),g(w$$331922),w$$331922,t]
a b Convolve[f(w$$331940),g(w$$331940),w\$331940,t]


I also made a wrapper for the forward Laplace transform that can convert convolutions back into products:

lpt[(h : List | Plus | Equal)[a__], t_, s_] := lpt[#, t, s] & /@ h[a]
lpt[a_ b_, t_, s_] /; FreeQ[b, Alternatives @@ t] := b lpt[a, t, s]
lpt[(h : Convolve)[a_, b_, w_, t_], t_, s_] :=
lpt[a, w, s]*lpt[b, w, s]
lpt[a_, t_, s_] := LaplaceTransform[a, t, s]


Below are some tests:

lpt[Convolve[1/w, g[w], w, t], t, s]
lpt[Convolve[Exp[-w], Convolve[f[u + 9], g[u], u, w], w, t], t, s]


And their results, respectively:

LaplaceTransform[1/w, w, s] LaplaceTransform[g[w], w, s]
(LaplaceTransform[f[9 + u], u, s] LaplaceTransform[g[u], u, s])/(1 + s
)