1
$\begingroup$

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?

$\endgroup$
1
  • 3
    $\begingroup$ 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. $\endgroup$
    – xzczd
    Commented Dec 8, 2023 at 2:34

1 Answer 1

2
$\begingroup$

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, 
  t] // TraditionalForm
ilpt[a*LaplaceTransform[f[t], t, s]*LaplaceTransform[g[t], t, s]*b, s,
   t] // TraditionalForm

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
 )
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.