In[]:=
CompoundExpression[
]
​​deploy
Sat 24 Jun 2023 18:21:31

Laplace Transform Tricks

Work around Mathematica inverse Laplace limitations (like here) by using Feynmann trick. Pattern matching only works for ArcTanh/Hypergeometric functions for now.
​
Fixing “s” and “t” variable names, run the following:
In[]:=
expr=ArcTan[Sqrt[s]]/Sqrt[s];​​ilaplaceMellin[expr]​​ilaplaceFeynmann[expr]​​
Out[]=
π
Erfc[
t
]
2
t
Out[]=
π
Erfc[
t
]
2
t
Background:
​
inverse Laplace of Hypergeometric post​
inverse Laplace using Mellin Transform post​
Inverse of atan post

Inversion code

Assume all formulas use:
t -- for time variable
s -- for Laplace domain variable
In[]:=
ilaplace[expr_]:=InverseLaplaceTransform[expr,s,t];​​ilaplace0[expr_]:=Block[{p=2,a=-2,b=1,d=100},InverseLaplaceTransform[expr,s,10.]];​​​​(*CustomLaplacetransformsfrom"Hypergeometric"
post
*)​​​​(*Mariuszsolutionfrom
https://mathematica.stackexchange.com/a/285338/217
*)​​augmentInv[expr_,var_]:=Module[{a1,a2,a3,a4,expra},​​expra=expr/.{​​ArcTan[a1_]->ArcTan[a1/var],​​Log[a1_]->Log[a1/var],​​Hypergeometric2F1[a1_,a2_,a3_,a4_]->Hypergeometric2F1[a1,a2,a3,a4/var]​​};​​If[MemberQ[Reduce`FreeVariables[expra],var],expra,expra/var]​​];​​​​ilaplaceMellin0[expr_]:=Block[{expra,mellin,ilap,imellin,s,t,a},​​expra=augmentInv[expr,a];​​mellin=FunctionExpand@MellinTransform[expra,a,q];​​ilap=InverseLaplaceTransform[mellin,s,t];​​imellin=InverseMellinTransform[ilap,q,a]/.a->1;​​FullSimplify@imellin​​];​​​​SetAttributes[ilaplaceMellin0,Listable];​​ilaplaceMellin[expr_]:=Block[{dummy},Distribute@dummy@Expand[expr]/.dummy->ilaplaceMellin0];​​​​(*https://zackyzz.github.io/feynman.html*)​​augment[expr_,var_]:=Module[{a1,a2,a3,a4,expra},​​expra=expr/.{​​ArcTan[a1_]->ArcTan[a1var],​​Log[a1_]->Log[a1var],​​Hypergeometric2F1[a1_,a2_,a3_,a4_]->Hypergeometric2F1[a1,a2,a3,a4var]​​};​​If[MemberQ[Reduce`FreeVariables[expra],var],expra,var*expra]​​];​​​​ilaplaceFeynmann0[expr_]:=Block[{repl,ilap,a1,a2,a3,a4,a},​​expra=augment[expr,a];​​ilap=InverseLaplaceTransform[D[expra,a]//Factor,s,t];​​Assuming[{t>0},Integrate[ilap,{a,0,1}]]​​];​​SetAttributes[ilaplaceFeynmann0,Listable];​​ilaplaceFeynmann[expr_]:=Block[{dummy},Distribute@dummy@Expand[expr]/.dummy->ilaplaceFeynmann0];

Evaluate

In[]:=
expr1=ArcTan[Sqrt[2]/Sqrt[s]]/(Sqrt[2]Sqrt[s]);​​expr2=Hypergeometric2F1[1,1/3,4/3,s];​​​​expr3=ArcTan[1/Sqrt[s]]/Sqrt[s];​​expr4=ArcTan[Sqrt[s]]/Sqrt[s];​​expr5=ArcTanh[Sqrt[s]]/Sqrt[s]​​​​exprs={expr1,expr2,expr3,expr4,expr5};​​methods={ilaplace,ilaplaceFeynmann,ilaplaceMellin};​​results=Outer[TimeConstrained[#1[#2],10]&,methods,exprs];​​​​TableForm[results,TableHeadings->{{"default","Feynmann","Mellin"},exprs}]​​
Out[]=
ArcTanh[
s
]
s
Out[]//TableForm=
ArcTan
2
s

2
s
Hypergeometric2F1
1
3
,1,
4
3
,s
ArcTan
1
s

s
ArcTan[
s
]
s
ArcTanh[
s
]
s
default
-πErf[
2
t
]-4tHypergeometricPFQ{1,1},
3
2
,2,-2t
2
2π
t
$Aborted
$Aborted
-1+
-t

+
1
2
-t

Log
1+s
4
+
1
2
-t

(Log[4]-Log[1+s])
2t
$Aborted
Feynmann
π
2
Erf[
2
t
]
2
t
$Aborted
π
Erf[
t
]
2
t
π
Erfc[
t
]
2
t
$Aborted
Mellin
π
2
Erf[
2
t
]
2
t
-
1
3
ExpIntegralE
1
3
,-t
π
Erf[
t
]
2
t
π
Erfc[
t
]
2
t
$Aborted

Special forms

TODO: need to apply Feynmann/Mellin tricks to AcTanh/ArcCoth
In[]:=
expr1=
ArcTanh
1
s

s
​​expr2=
ArcCoth[
s
]
s
;​​expr3=-
3-
s
+πCot
π
s

2
π
s
;​​expr4=
3
s
-πCot
π
s

2
π
s
;​​expr5=
ArcCoth[
s
]
s
;​​​​exprs={expr1,expr2,expr3,expr4,expr5};​​exprs={expr5};​​methods={ilaplace,ilaplaceFeynmann,ilaplaceMellin};​​results=Outer[TimeConstrained[#1[#2],10]&,methods,exprs];​​​​TableForm[results,TableHeadings->{{"default","Feynmann","Mellin"},exprs}]​​
Out[]=
ArcTanh
1
s

s
Out[]//TableForm=
ArcCoth[
s
]
s
default
$Aborted
Feynmann
$Aborted
Mellin
$Aborted

Sanity check