home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-07-29 | 49.3 KB | 1,312 lines |
-
- (*:Mathematica Version: 2.0 *)
-
- (*:Context: Calculus` *)
-
- (*:Title: LaplaceTransform *)
-
- (*:Author: Eran Yehudai & E.C.Martin *)
-
- (*:Summary: Implements Laplace and inverse Laplace transforms.
- *)
-
- (*:Keywords: Laplace, transform, differential equations
- *)
-
- (*:Requirements: none. *)
-
- (*:Sources:
- Fritz Oberhettinger and Larry Badii, Tables of Laplace
- Transforms, New-York: Springer-Verlag, 1973.
- *)
-
- (*:History:
- Version 1.1 by Eran Yehudai, October, 1990.
- Extensively modified by ECM (Wolfram Research), Jan., Nov. 1991.
- Modified to use UnitStep and DiracDelta, ECM (WRI) Jan.1992.
- *)
-
- BeginPackage["Calculus`LaplaceTransform`", "Calculus`DiracDelta`",
- "Calculus`Common`Support`"]
-
- LaplaceTransform::usage =
- "LaplaceTransform[expr, t, s, opts] gives a function of s, which is the Laplace
- transform of expr, a function of t. It is defined by
- LaplaceTransform[expr, t, s] = Integrate[Exp[-s t] expr, {t, 0, Infinity}]."
- Options[LaplaceTransform] = {ZeroLimit->Automatic}
- SetAttributes[LaplaceTransform, Listable]
-
- InverseLaplaceTransform::usage =
- "InverseLaplaceTransform[expr, s, t, opts] gives a function of t, the Laplace
- transform of which is expr, a function of s."
- Options[InverseLaplaceTransform] = Options[LaplaceTransform]
- SetAttributes[InverseLaplaceTransform, Listable]
-
- (* The option ZeroLimit determines how to treat the limit t->0, Direction->1
- in the case of symbolic functions. *)
-
-
- (************************************************************************)
- Begin["`Private`"]
- (************************************************************************)
-
- DI[f_, _, _, _, 0] := f
-
- DI[f_, s_, ss_Symbol, Infinity, n_Integer?Positive] :=
- Module[{v = If[SameQ[Head[s],Symbol], Unique[ToString[s]], Unique[]]},
- Integrate[Collect[
- DI[f /. ss->v, s, v, Infinity, n-1],
- DiracDelta], {v, ss, Infinity}]
- ]
-
- DI[f_, t_, 0, tt_Symbol, n_Integer?Positive] :=
- Module[{v = If[SameQ[Head[t],Symbol], Unique[ToString[t]], Unique[]]},
- Integrate[Collect[
- DI[f /. tt->v, t, 0, v, n-1],
- DiracDelta], {v, 0, tt}]
- ]
-
-
-
- (*****************************************************************************)
- (* Laplace Transform *)
- (*****************************************************************************)
-
- (* ============================ Numeric Value ============================== *)
-
- N[LaplaceTransform[f_, t_Symbol, s_?NumberQ, ___]] := NIntegrate[Exp[-s t]f,
- {t,0,Infinity}]
-
- N[LaplaceTransform[f_, t_Symbol, s_?NumberQ, ___], d_] :=
- NIntegrate[Exp[-s t]f, {t, 0, Infinity}, WorkingPrecision->d]
-
-
- (* ============================== UnitStep ================================= *)
-
- LaplaceTransform[f_. UnitStep[t_, r___Rule], t_Symbol, s_, opt___] :=
- LaplaceTransform[f, t, s, opt]
-
- LaplaceTransform[UnitStep[a_. t_ + b_., r___Rule], t_Symbol, s_, opt___] :=
- Exp[s b/a]/s /; positive[a]
-
- LaplaceTransform[f_. UnitStep[a_?negative t_ + b_?negative, r___Rule],
- t_Symbol, s_, opt___] := 0
-
- LaplaceTransform[f_. UnitStep[a_?negative t_ + b_., r___Rule],
- t_Symbol, s_, opt___] :=
- Module[{result = LaplaceTransform[f, t, s, opt] -
- LaplaceTransform[f UnitStep[t + b/a, r], t, s, opt]},
- result /; FreeQ[result, LaplaceTransform]
- ] /; positive[b]
-
- (* ============================= Using Apart =============================== *)
-
- LaplaceTransform[f:Power[x_, n_?Negative], t_Symbol, s_, opt___] :=
- Module[{ff = Chop[Apart[Factor[f], t]]},
- LaplaceTransform[ff, t, s, opt] /; ((SameQ[Head[ff],Plus] ||
- (SameQ[Head[ff],Power] && ff[[2]] != n)) &&
- FreeQ[LaplaceTransform[ff, t, s, opt], LaplaceTransform])
- ] /; !FreeQ[x, t] && FreeQ[s,t]
-
- LaplaceTransform[f:Times[c__, Power[x_, n_?Negative]], t_Symbol, s_, opt___] :=
- Module[{ff = Chop[Apart[Factor[f], t]]},
- LaplaceTransform[ff, t, s, opt] /; ((SameQ[Head[ff],Plus] ||
- (SameQ[Head[Denominator[ff]],Power] && Denominator[ff][[2]] != -n)) &&
- FreeQ[LaplaceTransform[ff, t, s, opt], LaplaceTransform])
- ] /; !FreeQ[{c}, t] && !FreeQ[x, t] && FreeQ[s,t]
-
-
- (* ============================== Linearity ================================ *)
-
- LaplaceTransform[c_, t_Symbol, s_, opt___] := c/s /; FreeQ[{c, s}, t]
-
- LaplaceTransform[c_ f_, t_Symbol, s_, opt___] :=
- c LaplaceTransform[f, t, s, opt] /; FreeQ[{c, s}, t]
-
- LaplaceTransform[x_Plus, t_Symbol, s_, opt___] :=
- (LaplaceTransform[#, t, s, opt]& /@ x) /; FreeQ[s,t]
-
- LaplaceTransform[x_Plus f_, t_Symbol, s_, opt___] :=
- LaplaceTransform[Expand[x f], t, s, opt] /; FreeQ[s,t]
-
- LaplaceTransform[Sum[f_, {i_, i1_, i2_}], t_Symbol, s_, opt___] :=
- Sum[LaplaceTransform[f,t,s,opt],{i,i1,i2}] /; FreeQ[{i,i1,i2,s},t] &&
- FreeQ[i,s]
-
- LaplaceTransform[f_Equal, t_Symbol, s_, opt___] :=
- LaplaceTransform[#, t, s, opt]& /@ f /; FreeQ[s,t]
-
- LaplaceTransform[f:Power[x_Plus, _Integer?Positive], t_Symbol, s_, opt___] :=
- Module[{ff = Expand[f]},
- LaplaceTransform[ff, t, s, opt]
- ] /; !FreeQ[x, t] && FreeQ[s,t]
-
-
- (* ========================= Other Rational Functions ====================== *)
-
- LaplaceTransform[(c_ + b_.)^n_, t_Symbol, s_, ___] :=
- Module[{a},
- ( (Exp[b s/a]/a ( Gamma[n+1] (s/a)^(-n-1) -
- b^(1+n) Hypergeometric1F1[1+n,2+n,-b s/a]/(1+n) )
- // PowerExpand // Factor)
- ) /; FreeQ[a = Factor[c]/t, t] && positive[a]
- ] /; FreeQ[{b,n,s},t] && !FreeQ[c,t] && -1<n<0
-
- LaplaceTransform[(c_ + b_)^n_Integer?Negative, t_Symbol, s_, ___] :=
- Module[{k, a},
- ( s^(-n-1) Exp[b s/a]ExpIntegralEi[-b s/a] / ((-n-1)! (-a)^(-n)) +
- Sum[ (-1)^(k+n) (a^(k+n+1)/b^(k+1)) (k!/(-n-1)!) s^(-n-2-k), {k,0,-n-2}]
- ) /; FreeQ[a = Factor[c]/t, t] && positive[a]
- ] /; FreeQ[{b,s},t] && !FreeQ[c,t]
-
- LaplaceTransform[1 /(d1_ + c1_), t_Symbol, s_, ___] :=
- Module[{d, c},
- ( c = Sqrt[If[SameQ[Head[c1], Plus], Map[-#&,c1], -c1] / d];
- ExpIntegralEi[-c s]Exp[c s]/(2c d) - ExpIntegralEi[c s]Exp[-c s]/(2c d)
- ) /; FreeQ[d = Factor[d1]/t^2, t] && positive[d]
- ] /; FreeQ[{c1,s},t] && !FreeQ[d1,t] &&
- (MatchQ[c1, a_?Negative b_. /; FreeQ[{a, b}, t]] ||
- (SameQ[Head[c1], Plus] &&
- Apply[And, Map[MatchQ[#, a_?Negative b_. /; FreeQ[{a, b}, t]]&,
- Apply[List, c1]]]))
-
- LaplaceTransform[(a_. t_+b_.)/(f_. t_^2+c_?Negative d_.), t_Symbol, s_, ___] :=
- With[{e = Sqrt[-c d/f]},
- -ExpIntegralEi[-e s]Exp[e s](a-b/e)/(2f) -
- ExpIntegralEi[e s]Exp[-e s](a+b/e)/(2f)
- ] /; FreeQ[{a,b,c,d,f,s},t] && positive[f]
-
- LaplaceTransform[1/(d_ + c_), t_Symbol, s_, ___] :=
- Module[{a},
- ( CosIntegral[Sqrt[c/a] s] Sin[Sqrt[c/a]s]/(Sqrt[a c]) +
- (Pi/2-SinIntegral[Sqrt[c/a] s]) Cos[Sqrt[c/a]s]/(Sqrt[a c])
- ) /; FreeQ[a = Factor[d]/t^2, t] && positive[a]
- ] /; FreeQ[{c,s},t] && !FreeQ[d,t]
-
- LaplaceTransform[(a_. t_+b_.)/(d_. t_^2+c_), t_Symbol, s_, ___] :=
- -CosIntegral[Sqrt[c/d] s]((a/d) Cos[Sqrt[c/d]s] -
- (b/Sqrt[c d])Sin[Sqrt[c/d]s]) +
- (Pi/2-SinIntegral[Sqrt[c/d] s]) *
- ((a/d) Sin[Sqrt[c/d]s]+(b/Sqrt[c d])Cos[Sqrt[c/d]s]) /;
- FreeQ[{a, b, c, d, s}, t] && positive[d]
-
-
- (* ============================= Exponentials ============================== *)
-
- LaplaceTransform[a_. Power[E, (b_.+ c_)], t_Symbol, s_, opt___] :=
- Module[{d},
- LaplaceTransform[a Exp[b], t, s-d, opt]
- /; FreeQ[d = Factor[c]/t, t]
- ] /; !FreeQ[c,t] && FreeQ[{b, s}, t]
-
- LaplaceTransform[Exp[d_], t_Symbol, s_, ___] :=
- Module[{c, c1},
- ( c1 = Expand[-c];
- 2Sqrt[c1/s] BesselK[1, 2Sqrt[c1 s]]
- ) /; FreeQ[c = Expand[d t], t] &&
- (MatchQ[c, a_?Negative b_. /; FreeQ[{a, b}, t]] ||
- (SameQ[Head[c], Plus] &&
- Apply[And, Map[MatchQ[#, a_?Negative b_. /; FreeQ[{a, b}, t]]&,
- Apply[List, c]]]))
- ] /; FreeQ[s, t] && !FreeQ[d, t]
-
- LaplaceTransform[t_^n_. Exp[a_?Negative b_. / t_], t_Symbol, s_, ___] :=
- With[{c = -a b},
- 2(c/s)^((n+1)/2) BesselK[n+1, 2 Sqrt[c s]]
- ] /; FreeQ[{a,b,n,s},t]
-
- LaplaceTransform[Exp[d_], t_Symbol, s_, ___] :=
- Module[{c, c1},
- ( c1 = Expand[-c];
- Collect[
- s^(-1)Exp[c1^2/(8s)]ParabolicCylinderD[-2, c1/Sqrt[2s]] // PowerExpand,
- {Gamma[-1/2, 0, c1^2/(4 s^2)], Exp[c1^2/(8s)], Sqrt[Pi]} ]
- ) /; (MatchQ[c = Factor[d]/Sqrt[t], a_?Negative b_. /; FreeQ[{a,b},t]] ||
- (SameQ[Head[c], Plus] &&
- Apply[And, Map[MatchQ[#, a_?Negative b_. /; FreeQ[{a, b}, t]]&,
- Apply[List, c]]]))
- ] /; !FreeQ[d,t] && FreeQ[s,t]
-
- LaplaceTransform[t_^n_. Exp[a_?Negative b_. Sqrt[t_]], t_Symbol, s_, ___] :=
- With[{c = -a b},
- Collect[
- 2(2s)^(-n-1)Gamma[2(n+1)] Exp[c^2/(8s)] *
- ParabolicCylinderD[-2(n+1), c/Sqrt[2s]] // PowerExpand,
- {Exp[c^2/(8s)], Sqrt[Pi]}
- ]
- ] /; FreeQ[{a,b,n,s},t]
-
- LaplaceTransform[Exp[a_?Negative b_. t_^2], t_Symbol, s_, ___] :=
- With[{c = -a b},
- (2 c)^(-1/2)Exp[s^2/(8c)] * ParabolicCylinderD[-1, s/Sqrt[2c]]
- ] /; FreeQ[{a,b,s},t]
-
- LaplaceTransform[t_^n_. Exp[a_?Negative b_. t_^2], t_Symbol, s_, ___] :=
- Module[{c = -a b},
- Collect[
- (2 c)^(-(n+1)/2)Gamma[n+1] Exp[s^2/(8c)] *
- ParabolicCylinderD[-(n+1), s/Sqrt[2c]] // PowerExpand // Expand,
- {Exp[s^2/(8c)], Gamma[1/2,0,s^2/(4 c)], Sqrt[Pi]}
- ]
- ] /; FreeQ[{a,b,n,s},t]
-
- LaplaceTransform[Exp[d_], t_Symbol, s_, ___] :=
- Module[{c, c1},
- ( c1 = Expand[-c];
- (c1)^s Gamma[-s, c1]
- ) /; (MatchQ[c = Factor[d]/Exp[t], a_?Negative b_. /; FreeQ[{a,b},t]] ||
- (SameQ[Head[c], Plus] &&
- Apply[And, Map[MatchQ[#, a_?Negative b_. /; FreeQ[{a, b}, t]]&,
- Apply[List, c]]]))
- ] /; !FreeQ[d,t] && FreeQ[s,t]
-
-
- (* ========================= Logarithmic Functions ========================= *)
-
- LaplaceTransform[Log[t_], t_Symbol, s_, ___] :=
- -(EulerGamma+Log[s])/s /; FreeQ[s,t]
-
- LaplaceTransform[Log[a_+c_], t_Symbol, s_, ___] :=
- Module[{b},
- (Log[a]-Exp[a s/b]ExpIntegralEi[-a s/b])/s
- /; FreeQ[b = Factor[c]/t, t]
- ] /; !FreeQ[c,t] && FreeQ[{a,s},t]
-
- LaplaceTransform[Log[t_]^2, t_Symbol, s_, ___] :=
- (Pi^2/6+(EulerGamma+Log[s])^2)/s /; FreeQ[s,t]
-
- LaplaceTransform[Log[a_+t_^2], t_Symbol, s_, ___] :=
- With[{aa = Sqrt[a]},
- (2/s)(Log[aa]-CosIntegral[aa s]Cos[aa s]-
- (SinIntegral[aa s]-Pi/2)Sin[aa s])
- ] /; FreeQ[{a,s},t]
-
- LaplaceTransform[t_^n_. Log[t_], t_Symbol, s_, ___] :=
- Gamma[n+1]s^(-n-1)(PolyGamma[n+1]-Log[s]) /; FreeQ[{n,s},t]
-
- LaplaceTransform[t_^n_. Log[t_]^2, t_Symbol, s_, ___] :=
- Gamma[n+1]s^(-n-1)((PolyGamma[n+1]-Log[s])^2+PolyGamma[1,n+1]) /;
- FreeQ[{n,s},t]
-
-
-
- (* ====================== Products Involving Powers ======================= *)
-
-
- LaplaceTransform[a_ t_^n_., t_Symbol, s_, opt___] :=
- Module[{ss},
- ((-1)^n D[LaplaceTransform[a, t, ss, opt], {ss, n}] /. ss->s)
- ] /; IntegerQ[n] && n > 0 && FreeQ[s,t]
-
- LaplaceTransform[a_ t_^(n_Integer?Negative), t_Symbol, s_, opt___] :=
- Module[{ss},
- DI[LaplaceTransform[a,t,ss,opt], s, ss, Infinity, -n] /. ss->s
- ] /; FreeQ[s,t]
-
-
- (* ======================= Trigonometric Functions ======================= *)
-
- LaplaceTransform[Sin[c_ + b_.], t_Symbol, s_, ___] :=
- Module[{a},
- (Cos[b] a + Sin[b] s)/(a^2+s^2) /; FreeQ[a = Factor[c]/t, t]
- ] /; FreeQ[{b,s},t] && !FreeQ[c,t]
-
- LaplaceTransform[Cos[c_ + b_.], t_Symbol, s_, ___] :=
- Module[{a},
- (Cos[b] s - Sin[b] a)/(a^2+s^2) /; FreeQ[a = Factor[c]/t, t]
- ] /; FreeQ[{b,s},t] && !FreeQ[c,t]
-
- (* ==================== Inverse Trigonometric Functions ==================== *)
-
- LaplaceTransform[ArcTan[c_], t_Symbol, s_, ___] :=
- Module[{a},
- (CosIntegral[s/a]Sin[s/a]- (SinIntegral[s/a]-Pi/2)Cos[s/a])/s
- /; FreeQ[a = Factor[c]/t, t]
- ] /; FreeQ[s,t] && !FreeQ[c,t]
-
- LaplaceTransform[ArcCot[c_], t_Symbol, s_, ___] :=
- Module[{a},
- ((Pi/2-CosIntegral[s/a])Sin[s/a] - (SinIntegral[s/a]-Pi/2)Cos[s/a])/s
- /; FreeQ[a = Factor[c]/t, t]
- ] /; FreeQ[s,t] && !FreeQ[c,t]
-
- (* ======================== Hyperbolic Functions =========================== *)
-
- LaplaceTransform[Sinh[c_ + b_.], t_Symbol, s_, ___] :=
- Module[{a},
- (Cosh[b] a + Sinh[b] s)/(s^2 - a^2) /; FreeQ[a = Factor[c]/t, t]
- ] /; FreeQ[{b,s},t] && !FreeQ[c,t]
-
- LaplaceTransform[Cosh[c_ + b_.], t_Symbol, s_, ___] :=
- Module[{a},
- (Cosh[b] s + Sin[b] a)/(s^2 - a^2) /; FreeQ[a = Factor[c]/t, t]
- ] /; FreeQ[{b,s},t] && !FreeQ[c,t]
-
- LaplaceTransform[Tanh[c_], t_Symbol, s_, ___] :=
- Module[{a},
- (PolyGamma[1/2+s/(4a)]-PolyGamma[s/(4a)])/(2a) - 1/s
- /; FreeQ[a = Factor[c]/t, t]
- ] /; FreeQ[s,t] && !FreeQ[c,t]
-
-
- (* ====================== Derivatives and Integrals ======================== *)
-
- LaplaceTransform[Derivative[n_Integer?Positive][f_][t_],
- t_Symbol, s_, opt___] :=
- Module[{zerolimit = ZeroLimit /. {opt} /. Options[LaplaceTransform], init},
- (init = Limit[ Sum[s^i D[f[t], {t, n-1-i}], {i, 0, n-1}], t->0,
- Direction->1];
- If[zerolimit===Automatic && !FreeQ[init,Limit],
- init = Sum[s^i (D[f[t], {t, n-1-i}] /. t->0), {i, 0, n-1}]
- ];
- s^n LaplaceTransform[f[t], t, s, opt] - init
- ) /; (zerolimit===Automatic || zerolimit===All)
- ] /; FreeQ[s,t]
-
- LaplaceTransform[
- Derivative[0, 0, n_Integer?Positive, ___]
- [InverseLaplaceTransform][f_,s1_Symbol,t_Symbol,opt1___],
- t_Symbol,s2_,opt2___] :=
- Module[{zerolimit = ZeroLimit /. {opt2} /. Options[LaplaceTransform], init},
- (init = Limit[ Sum[ (s1^i /. s1->s2) *
- D[InverseLaplaceTransform[f,s1,t,opt1], {t, n-1-i}],
- {i, 0, n-1}], t->0, Direction->1];
- If[zerolimit===Automatic && !FreeQ[init,Limit],
- init = Sum[ (s1^i /. s1->s2) *
- (D[InverseLaplaceTransform[f,s1,t,opt1], {t, n-1-i}] /. t->0),
- {i, 0, n-1}]
- ];
- ((s1^n f) /. s1->s2) - init
- ) /; (zerolimit===Automatic || zerolimit===All)
- ] /; FreeQ[{f,s1,s2},t]
-
- LaplaceTransform[Integrate[f_, {tt_Symbol, 0, t_}], t_Symbol, s_, opt___] :=
- LaplaceTransform[f /. tt->t, t, s, opt] / s /; FreeQ[s,t]
-
-
- (* =============== LaplaceTransform of InverseLaplaceTransform ============= *)
-
- LaplaceTransform[InverseLaplaceTransform[f_, s_Symbol, t_, ___],
- t_Symbol, s1_, ___] :=
- (f /. s->s1) /; FreeQ[s1,t]
-
- (* ======================== Composed Function Case ========================= *)
-
- LaplaceTransform[f_, t_Symbol, s_, opt___] :=
- Module[{g = ComposedFunctionQ[f, t]},
- With[{a = g[[1]]/t},
- LaplaceTransform[f /. g[[1]]->t, t, s/a, opt] / a
- ] /; (SameQ @@ g && MatchQ[g[[1]], _Times])
- ] /; FreeQ[s,t] &&
- !Apply[Or, Map[(MatchQ[#[[1]], c1_. + c2_. t /; negative[c2]])&,
- Cases[f, UnitStep[_, ___Rule], Infinity] ]]
-
- LaplaceTransform[f_ UnitStep[t_ + b_, r___Rule], t_Symbol, s_, opt___] :=
- Module[{g1 = ComposedFunctionQ[f, t], g, f1, tau},
- With[{a = g[[1]] - t},
- LaplaceTransform[(f1 /. tau -> t), t, s, opt] Exp[b s]
- ] /; g1 =!= False &&
- (g1 = Union[g1, {t+b}];
- g = Select[g1, Head[#] === Plus&];
- g =!= {} && SameQ @@ g) &&
- FreeQ[f1 = (f /. {t+b :> tau, -(t+b) :> -tau}), t]
- ] /; FreeQ[{b, s}, t] && FreeQ[f, UnitStep]
-
- LaplaceTransform[f_, t_Symbol, s_, opt___] :=
- Module[{g1 = ComposedFunctionQ[f, t],
- g, f1, tau, integrand, term, z, cases, k},
- With[{a = g[[1]] - t},
- f1 = f1 //. tau -> t;
- integrand = (f1 Exp[-s t]) (* //. {Exp[x_] :> Exp[Collect[x, t]] /;
- PolynomialQ[x, t]} *);
- term = LaplaceTransform[f1, t, s, opt] +
- (Integrate[integrand, {t, a, 0}] //. {Power[y_, n_?EvenQ] :> z
- /; !FreeQ[y^n, Complex] && FreeQ[z = Factor[y^n], Complex]});
- term = term //.
- {(d_ + c1_?ComplexQ)^n_. (d_ + c2_?ComplexQ)^n_. :>
- ((d + Re[c1])^2 + Im[c1]^2)^n /;
- c1 == Conjugate[c2] && FreeQ[d, Complex],
- (d_ + c1_?ComplexQ)^n_. (-d_ + c2_?ComplexQ)^n_. :>
- -((d + Re[c1])^2 + Im[c1]^2)^n /;
- c1 == Conjugate[-c2] && FreeQ[d, Complex]};
-
- term = term //.
- {e1_. (c_. + d1_)^n_Integer?Negative +
- e2_. (c_. + d2_)^n_Integer?Negative :> 0 /;
- Together[e1(c+d1)^n + e2(c+d2)^n] == 0};
-
- If[Length[cases = Cases[term, Exp[_], Infinity]] > 1 && SameQ @@ cases,
- term = Collect[term, cases[[1]]]];
- If[Length[cases = Cases[term, Power[_, _?Negative], Infinity]] > 1 &&
- SameQ @@ cases,
- term = Factor[term //. {cases[[1]] :> k}] //. {k :> cases[[1]]}];
- ( Exp[a s] term ) //. {Exp[x_] :> Exp[Simplify[x]]}
- ] /; g1 =!= False &&
- (g = Select[g1, Head[#] === Plus&]; g =!= {} && SameQ @@ g) &&
- FreeQ[f1 = (f /. {g[[1]] -> tau}), t]
- ] /; FreeQ[s,t] && FreeQ[f, UnitStep] && FreeQ[f, DiracDelta]
-
-
- (* ======================== Using the Definition ========================== *)
-
- LaplaceTransform[f_, t_Symbol, s_, opt___] :=
- Module[{transform =
- (If[!SameQ[Head[s], DirectedInfinity],
- If[!FreeQ[f, DiracDelta],
- Module[{indefint = Integrate[Exp[-s t] f, t], defint},
- If[!FreeQ[indefint, Integrate],
- $Failed,
- If[!FreeQ[(defint = Limit[indefint, t->Infinity] -
- Limit[indefint, t->0, Direction->1]), Limit],
- $Failed,
- defint]
- ]
- ],
- Integrate[Exp[-s t] f, {t,0,Infinity}]
- ],
- Indeterminate])},
- transform /; Apply[And, Map[FreeQ[transform,#]&,
- {$Failed,Integrate,Infinity,Indeterminate}]]
- ] /; FreeQ[s,t] && FreeQ[Map[Context,
- Select[Variables[s], MatchQ[Head[#], Symbol]&]],
- "Integrate`"]
-
-
- (* ================== Derivative of LaplaceTransform ======================= *)
-
- Unprotect[D, Derivative]
-
- (*** Derivative of LaplaceTransform, Linearity ***)
-
- Literal[D[x_Plus,y_Symbol]] := Map[D[#,y]&,x] /; !FreeQ[x,LaplaceTransform]
-
- Literal[D[x_Plus,{y_Symbol,n_Integer?Positive}]] := Map[D[#,{y,n}]&,x] /;
- !FreeQ[x,LaplaceTransform]
-
- Literal[D[x_Times,y_Symbol]] :=
- Module[{e = Expand[x]},
- D[e,y] /; !SameQ[x,e]
- ] /; !FreeQ[x,LaplaceTransform]
-
- Literal[D[x_Times,{y_Symbol,n_Integer?Positive}]] :=
- Module[{e = Expand[x]},
- D[e,{y,n}] /; !SameQ[x,e]
- ] /; !FreeQ[x,LaplaceTransform]
-
- Derivative[0,0,m_Integer?Positive][LaplaceTransform][f_, t_Symbol, s_] :=
- Module[{laplace, s1},
- (D[laplace, {s1, m}] /. s1->s)
- /; FreeQ[laplace = LaplaceTransform[f, t, s1], LaplaceTransform]
- ] /; FreeQ[s, t]
-
- Derivative[0,0,m_Integer?Positive,z:(0)..][LaplaceTransform][f_,
- t_Symbol,s_,opt__] :=
- Module[{laplace, s1},
- (D[laplace, {s1, m}] /. s1->s)
- /; FreeQ[laplace = LaplaceTransform[f, t, s1], LaplaceTransform]
- ] /; ((Length[{z}] == Length[{opt}]) && FreeQ[s,t])
-
-
- (*** Derivative of LaplaceTransform wrt s ***)
-
- Literal[D[LaplaceTransform[f_,t_Symbol,s_,opt__],s_Symbol]] :=
- Apply[Derivative,Join[{0,0,1},
- Table[0,{Length[{opt}]}]]][LaplaceTransform][f,t,s,opt] /; FreeQ[s,t]
-
- Literal[D[LaplaceTransform[f_,t_Symbol,s_,opt__],
- {s_Symbol,n_Integer?Positive}]] :=
- Apply[Derivative,Join[{0,0,n},
- Table[0,{Length[{opt}]}]]][LaplaceTransform][f,t,s,opt] /; FreeQ[s,t]
-
-
- (*** Derivative of LaplaceTransform wrt t ***)
-
- Literal[D[u_. LaplaceTransform[f_,t_Symbol,s_,opt___],t_]] :=
- D[u,t] LaplaceTransform[f,t,s,opt] /; FreeQ[u,LaplaceTransform] &&
- FreeQ[s,t]
-
- Literal[D[u_. LaplaceTransform[f_,t_Symbol,s_,opt___],
- {t_,n_Integer?Positive}]] :=
- D[u,{t,n}] LaplaceTransform[f,t,s,opt] /; FreeQ[u,LaplaceTransform] &&
- FreeQ[s,t]
-
- (*** Derivative of LaplaceTransform wrt x (!=t, !=s) ***)
-
- Literal[D[u_. LaplaceTransform[f_,t_Symbol,s_,opt___],x_Symbol]] :=
- u LaplaceTransform[D[f,x] - f D[s,x] t,t,s,opt] +
- D[u,x] LaplaceTransform[f,t,s,opt] /; FreeQ[u,LaplaceTransform] &&
- !(SameQ[x,t] || SameQ[x,s]) && FreeQ[s,t]
-
- Literal[D[u_. LaplaceTransform[f_,t_Symbol,s_,opt___],
- {x_Symbol,n_Integer?Positive}]] :=
- Nest[D[#,x]&, u LaplaceTransform[f,t,s,opt], n] /;
- !(SameQ[x,t] || SameQ[x,s]) && FreeQ[s,t]
-
- (*** Derivative of Derivative of Laplace wrt s (with options) ***)
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive,z:(0)..][LaplaceTransform][f_,
- t_Symbol,s_Symbol,opt__],
- s_]] :=
- u Derivative[0,0,m+1,z][LaplaceTransform][f,t,s,opt] +
- D[u,s] Derivative[0,0,m,z][LaplaceTransform][f,t,s,opt] /;
- (Length[{z}] == Length[{opt}]) && FreeQ[u,LaplaceTransform] && FreeQ[s,t]
-
- Literal[D[Derivative[0,0,m1_Integer?Positive,z1:(0)..][LaplaceTransform][f1_,
- t1_Symbol,s_Symbol,opt1__] *
- Derivative[0,0,m2_Integer?Positive,z2:(0)..][LaplaceTransform][f2_,
- t2_Symbol,s_Symbol,opt2__],
- s_]] :=
- Derivative[0,0,m1,z1][LaplaceTransform][f1,t1,s,opt] *
- Derivative[0,0,m2+1,z2][LaplaceTransform][f2,t2,s,opt] +
- Derivative[0,0,m1+1,z1][LaplaceTransform][f1,t1,s,opt] *
- Derivative[0,0,m2,z2][LaplaceTransform][f2,t2,s,opt] /;
- (Length[{z1}] == Length[{opt1}]) && (Length[{z2}] == Length[{opt2}]) &&
- FreeQ[s,t1] && FreeQ[s,t2]
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive,z:(0)..][LaplaceTransform][f_,
- t_Symbol,s_Symbol,opt__],
- {s_,n_Integer?Positive}]] :=
- Nest[D[#,s]&, u Derivative[0,0,m,z][LaplaceTransform][f,t,s,opt], n] /;
- (Length[{z}] == Length[{opt}]) && FreeQ[s,t]
-
- (*** Derivative of Derivative of Laplace wrt t ***)
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive][LaplaceTransform][f_,
- t_Symbol,s_],
- t_]] := D[u,t] Derivative[0,0,m][LaplaceTransform][f,t,s] /;
- FreeQ[u,LaplaceTransform] && FreeQ[s,t]
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive][LaplaceTransform][f_,
- t_Symbol,s_],
- {t_,n_Integer?Positive}]] :=
- Nest[D[#,t]&, u Derivative[0,0,m][LaplaceTransform][f,t,s], n] /;
- FreeQ[s,t]
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive,z:(0)..][LaplaceTransform][f_,
- t_Symbol,s_,opt__],
- t_]] := D[u,t] Derivative[0,0,m,z][LaplaceTransform][f,t,s,opt] /;
- (Length[{z}] == Length[{opt}]) && FreeQ[u,LaplaceTransform] && FreeQ[s,t]
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive,z:(0)..][LaplaceTransform][f_,
- t_Symbol,s_,opt__],
- {t_,n_Integer?Positive}]] :=
- Nest[D[#,t]&, u Derivative[0,0,m,z][LaplaceTransform][f,t,s,opt], n] /;
- (Length[{z}] == Length[{opt}]) && FreeQ[s,t]
-
- (*** Derivative of Derivative of Laplace wrt x (!=t, !=s) ***)
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive,z:(0)..][LaplaceTransform][f_,
- t_Symbol,s_,opt__],
- x_Symbol]] := D[u,x] Derivative[0,0,m,z][LaplaceTransform][f,t,s,opt] +
- u (Derivative[0,0,m,z][LaplaceTransform][D[f,x],t,s,opt] +
- D[s,x] Derivative[0,0,m+1,z][LaplaceTransform][f,t,s,opt]) /;
- (Length[{z}] == Length[{opt}]) && FreeQ[u,LaplaceTransform] &&
- !(SameQ[x,t] || SameQ[x,s]) && FreeQ[s,t]
-
- Literal[D[Derivative[0,0,m1_Integer?Positive,z1:(0)..][LaplaceTransform][f1_,
- t1_Symbol,s1_,opt1__] *
- Derivative[0,0,m2_Integer?Positive,z2:(0)..][LaplaceTransform][f2_,
- t2_Symbol,s2_,opt2__],
- x_Symbol]] :=
- (Derivative[0,0,m1,z1][LaplaceTransform][D[f1,x],t1,s1,opt] +
- D[s1,x] * Derivative[0,0,m1+1,z1][LaplaceTransform][f1,t1,s1,opt])*
- Derivative[0,0,m2,z2][LaplaceTransform][f2,t2,s2,opt] +
- (Derivative[0,0,m2,z2][LaplaceTransform][D[f2,x],t2,s2,opt] +
- D[s2,x] * Derivative[0,0,m1+1,z2][LaplaceTransform][f2,t2,s2,opt])*
- Derivative[0,0,m1,z1][LaplaceTransform][f1,t1,s1,opt] /;
- (Length[{z1}] == Length[{opt1}]) && (Length[{z2}] == Length[{opt2}]) &&
- !(SameQ[x,t1] || SameQ[x,t2] || SameQ[x,s1] || SameQ[x,s2]) &&
- FreeQ[s1,t1] && FreeQ[s2,t2]
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive,z:(0)..][LaplaceTransform][f_,
- t_Symbol,s_,opt__],
- {x_Symbol,n_Integer?Positive}]] :=
- Nest[D[#,x]&, u Derivative[0,0,m,z][LaplaceTransform][f,t,s,opt], n] /;
- (Length[{z}] == Length[{opt}]) && !(SameQ[x,t] || SameQ[x,s]) && FreeQ[s,t]
-
- Protect[D, Derivative]
-
-
- (************************************************************************)
- (* Inverse Laplace Transform *)
- (************************************************************************)
-
- (* =========================== Using Apart =============================== *)
-
- InverseLaplaceTransform[f:Power[x_, n_?Negative], s_Symbol, t_, opt___] :=
- Module[{ff = Chop[Apart[Factor[f], s]]},
- InverseLaplaceTransform[ff, s, t, opt] /; SameQ[Head[ff],Plus] ||
- (SameQ[Head[ff],Power] && ff[[2]] != n)
- ] /; !FreeQ[x, s] && FreeQ[t,s]
-
- InverseLaplaceTransform[f:Times[c__, Power[x_, n_?Negative]],
- s_Symbol, t_, opt___] :=
- Module[{ff = Chop[Apart[Factor[f], s]]},
- InverseLaplaceTransform[ff, s, t, opt] /; SameQ[Head[ff],Plus] ||
- (SameQ[Head[Denominator[ff]],Power] && Denominator[ff][[2]] != -n)
- ] /; !FreeQ[{c},s] && !FreeQ[x, s] && FreeQ[t,s]
-
- InverseLaplaceTransform[f_, s_Symbol, t_, opt___] :=
- Module[{num = Numerator[f], den = Denominator[f],
- ff = Chop[Apart[Factor[f, GaussianIntegers->True],s]]},
- ((InverseLaplaceTransform[ff,s,t,opt] // Expand) //. ExpRules2) /;
- (!FreeQ[den,s] && PolynomialQ[num,s] && PolynomialQ[den,s] &&
- Exponent[den,s]>0 && !(Exponent[num,s]<Exponent[den,s]<3) &&
- (SameQ[Head[ff],Plus] || (SameQ[Head[Denominator[ff]],Power] &&
- Denominator[ff][[2]] != den[[2]])) )
- ] /; !FreeQ[f,s] &&
- (SameQ[Head[f],Times] || SameQ[Head[f],Power]) && FreeQ[t,s]
-
- (* ============================ Linearity ================================ *)
-
- InverseLaplaceTransform[c_, s_Symbol, t_, opt___] := c DiracDelta[t] /;
- FreeQ[{c,t}, s]
-
- InverseLaplaceTransform[c_ f_, s_Symbol, t_, opt___] :=
- c InverseLaplaceTransform[f, s, t, opt] /; FreeQ[{c,t}, s]
-
- InverseLaplaceTransform[x_Plus, s_Symbol, t_, opt___] :=
- InverseLaplaceTransform[#, s, t, opt]& /@ x /; FreeQ[t,s]
-
- InverseLaplaceTransform[a_Plus b_, s_Symbol, t_, opt___] :=
- InverseLaplaceTransform[Expand[a b], s, t, opt] /; FreeQ[t,s]
-
- InverseLaplaceTransform[Sum[f_,{i_,i1_,i2_}], s_Symbol, t_, opt___] :=
- Sum[InverseLaplaceTransform[f,s,t,opt],
- {i,i1,i2}] /; FreeQ[{i,i1,i2,t},s] && FreeQ[i,t]
-
- InverseLaplaceTransform[f_Equal,s_Symbol,t_,opt___] :=
- InverseLaplaceTransform[#, s, t, opt]& /@ f /; FreeQ[t,s]
-
- InverseLaplaceTransform[f:Power[x_Plus, _Integer?Positive],
- s_Symbol, t_, opt___] :=
- Module[{ff = Expand[f]},
- InverseLaplaceTransform[ff, s, t, opt]
- ] /; !FreeQ[x, s] && FreeQ[t,s]
-
- (* ======================= Other Rational Functions ======================= *)
-
- InverseLaplaceTransform[s_^n_., s_Symbol, t_, opt___] :=
- Module[{tt},
- D[DiracDelta[tt],{tt,n}] /. tt->t
- ] /; IntegerQ[n] && Positive[n] && FreeQ[t,s]
-
- InverseLaplaceTransform[s_^c1_, s_Symbol, t_, opt___] :=
- With[{p = If[SameQ[Head[c1],Plus], Map[-#&,c1], -c1]},
- (t^(p-1) / Gamma[p])
- ] /; FreeQ[{c1, t}, s] &&
- (MatchQ[c1, n1_?Negative n2_. /; FreeQ[{n1,n2},s]] ||
- (SameQ[Head[c1],Plus] &&
- Apply[And, Map[MatchQ[#, n1_?Negative n2_. /; FreeQ[{n1,n2},s]]&,
- Apply[List,c1]]]))
-
- SqrtRule = {
- Sqrt[x_?Negative] :> I Sqrt[-x],
- 1/Sqrt[x_?Negative] :> -I / Sqrt[-x]
- }
-
- ExpRules1 = {
- Exp[x_. + Complex[r_, i_] y_.] :>
- Expand[Exp[x + r y](Cos[i y] + I Sin[i y])],
- Exp[x_] :>
- Exp[Expand[x]] /; !SameQ[x,Expand[x]]
- }
-
- ExpRules2 = {
- a1_. Exp[Complex[r_,i1_] t_.] + a2_. Exp[Complex[r_,i2_] t_.] :>
- 2 a1 I Sin[i1 t] Exp[r t] /; a1+a2==0 && i1+i2==0 && i1>0,
- a_. Exp[Complex[r_,i1_] t_.] + a_. Exp[Complex[r_,i2_] t_.] :>
- 2 a Cos[i1 t] Exp[r t] /; i1+i2==0,
- a1_. Exp[(-1)^b1_Rational t_.] + a2_. Exp[(-1)^b2_Rational t_.] :>
- 2 a1 I Sin[Sin[b1 Pi] t] Exp[Cos[b1 Pi] t] /;
- a1+a2==0 && Mod[b1+b2,2]==0 && Mod[b1,2]<1,
- a_. Exp[(-1)^b1_Rational t_.] + a_. Exp[(-1)^b2_Rational t_.] :>
- 2 a Cos[Sin[b1 Pi] t] Exp[Cos[b1 Pi] t] /; Mod[b1+b2,2]==0,
- a1_. Exp[b1_. t_.] + a2_. Exp[b2_. t_.] :>
- 2 a1 Sinh[b1 t] /;
- NumberQ[b1] && NumberQ[b2] && a1+a2==0 && b1+b2==0 &&
- FreeQ[{b1,b2},Complex] && b1>0,
- a_. Exp[b1_] + a_. Exp[b2_] :>
- 2 a Cosh[b1] /; b1+b2==0 && FreeQ[{b1,b2},Complex],
- a_. Complex[re1_,im1_] Exp[(-1)^b1_Rational t_.] +
- a_. Complex[re2_,im2_] Exp[(-1)^b2_Rational t_.] :>
- a(re1 Exp[(-1)^b1 t] + re2 Exp[(-1)^b2 t]) +
- a I(im1 Exp[(-1)^b1 t] + im2 Exp[(-1)^b2 t]) /;
- ((Abs[re1] == Abs[re2] == Abs[im1] == Abs[im2]) &&
- Mod[b1+b2,2]==0)
- }
-
- InverseLaplaceTransform[1/(a1_ + b1_ + c_.), s_Symbol, t_, opt___] :=
- Module[{x, a, b, re, im},
- ( v = ((x /. Solve[a x^2+b x+c==0, x]) /. SqrtRule);
- ExpandAll[
- If[SameQ @@ v,
- t Exp[v[[1]] t],
- If[SameQ[Head[v[[1]]],Complex],
- {re,im} = {Re[v[[1]]],Im[v[[1]]]};
- Exp[re t] Sin[im t]/im,
- (Exp[v[[1]] t]-Exp[v[[2]] t])/(a (v[[1]]-v[[2]]))
- ]
- ] /. Exp[xx:Times[_Plus, __]] :> Exp[Expand[xx]] //. ExpRules1
- ]
- ) /; FreeQ[a = Factor[a1]/s^2, s] && FreeQ[b = Factor[b1]/s, s]
- ] /; FreeQ[{c,t},s] && !FreeQ[a1,s] && !FreeQ[b1,s]
-
- InverseLaplaceTransform[1/(s_^2+c_?Negative b_.), s_Symbol, t_, opt___] :=
- With[{a = Sqrt[-b c]},
- Sinh[a t]/a
- ] /; FreeQ[{b,c,t},s]
-
- InverseLaplaceTransform[1/(s_^2+b_), s_Symbol, t_, opt___] :=
- Module[{a = Sqrt[b]},
- Sin[a t]/a
- ] /; FreeQ[{b,t},s]
-
- InverseLaplaceTransform[1/(d_ + b_), s_Symbol, t_, opt___] :=
- Module[{k, a, c, temp, n = Exponent[d,s]},
- a = Coefficient[d, s, n];
- c = b/a;
- temp = Expand[
- (-1/(b n)) Sum[
- Module[{z = If[TrueQ[c<0],
- (-c)^(1/n) Exp[I Pi 2k/n],
- (c)^(1/n) Exp[I Pi (2k+1)/n]]},
- z Exp[z t]
- ], {k,0,n-1}] //. ExpRules1
- ];
- temp //. ExpRules2
- ] /; FreeQ[{b,t},s] && !FreeQ[d,s] &&
- MatchQ[Factor[d], a_. s^n_Integer?Positive /; FreeQ[a,s]]
-
- InverseLaplaceTransform[Sqrt[s_+b_.]/(s_+a_.), s_Symbol, t_, opt___] :=
- Exp[-b t]/Sqrt[Pi t] + Sqrt[b-a] Exp[-a t] Erf[Sqrt[(b-a)t]] /;
- FreeQ[{a, b, t}, s]
-
- InverseLaplaceTransform[1/Sqrt[s_+a_.]/Sqrt[s_+b_.], s_Symbol, t_, opt___] :=
- Exp[-(a+b)t/2] BesselI[0, (a-b)t/2] /; FreeQ[{a,b,t},s]
-
- InverseLaplaceTransform[(s_+a_.)^(-1/2)(s_+b_.)^(-3/2),
- s_Symbol, t_, opt___] :=
- t Exp[-(a+b)t/2] (BesselI[0, (a-b)t/2] +
- BesselI[1, (a-b)t/2]) /; FreeQ[{a,b,t},s]
-
- InverseLaplaceTransform[Sqrt[s_+a_.]/(s_+b_.)^(3/2), s_Symbol, t_, opt___] :=
- Exp[-(a+b)t/2]((1+(a-b)t)BesselI[0, (a-b)t/2] +
- (a-b)t BesselI[1, (a-b)t/2]) /; FreeQ[{a,b,t},s]
-
- InverseLaplaceTransform[(a1_+b1_+c_.)^Rational[k_Integer?Negative, 2],
- s_Symbol,t_,opt___] :=
- Module[{a, b},
- ( InverseLaplaceTransform[
- ((s + b / (2 a))^2 + (4 a c - b^2) / (4 a))^(k/2),
- s, t, opt] / a
- ) /; FreeQ[a = Factor[a1]/s^2, s] && FreeQ[b = Factor[b1]/s, s]
- ] /; FreeQ[{c,t},s] && !FreeQ[a1,s] && !FreeQ[b1,s]
-
- InverseLaplaceTransform[(d1_ + b1_)^Rational[k_Integer?Negative, 2],
- s_Symbol,t_,opt___] :=
- Module[{n = -k/2-1/2, d, a},
- ( a = Sqrt[-b1/d];
- t^n BesselI[n, a t]/(If[n==0, 1, (2n-1)!!] a^n d)
- ) /; FreeQ[d = Factor[d1]/s^2, s]
- ] /; FreeQ[{b1, t}, s] && !FreeQ[d1, s] &&
- (MatchQ[b1, b_?Negative c_. /; FreeQ[{b,c}, s]] ||
- (SameQ[Head[b1], Plus] &&
- Apply[And, Map[MatchQ[#, b_?Negative c_. /; FreeQ[{b,c}, s]]&,
- Apply[List, b1]]]))
-
- InverseLaplaceTransform[(d1_ + c_)^Rational[k_Integer?Negative, 2],
- s_Symbol, t_, opt___] :=
- Module[{n = -k/2-1/2, d, a},
- ( a = Sqrt[c/d];
- t^n BesselJ[n, a t]/(If[n==0, 1, (2n-1)!!] a^n d)
- ) /; FreeQ[d = Factor[d1]/s^2, s]
- ] /; FreeQ[{c, t}, s] && !FreeQ[d1, s]
-
- InverseLaplaceTransform[
- (a1_ + b1_)^n_., s_Symbol, t_, opt___] :=
- Module[{a, c, b, d},
- (a^n) InverseLaplaceTransform[(s + (b Sqrt[c] / a) Sqrt[s^2 + d/c])^n,
- s, t, opt]
- /; (FreeQ[a = Factor[a1]/s, s] &&
- MatchQ[Factor[b1], b2_. Sqrt[c1_ + d2_] /; (FreeQ[b = b2, s] &&
- FreeQ[d = d2, s] && FreeQ[c = Factor[c1]/s^2, s] &&
- (a =!= 1 || c =!= 1))] )
- ] /; FreeQ[{n, t}, s]
-
- InverseLaplaceTransform[
- (s_ - Sqrt[s_^2 + c1_?Negative c2_.])^n_., s_Symbol, t_, opt___] :=
- (n/t) Sqrt[-c1 c2]^n BesselI[n, Sqrt[-c1 c2] t] /; FreeQ[{c1, c2, n, t}, s]
-
- InverseLaplaceTransform[(s_ - Sqrt[s_^2 + c_])^n_., s_Symbol, t_, opt___] :=
- (-1)^n (n/t) Sqrt[c]^n BesselJ[n, Sqrt[c] t] /; FreeQ[{c, n, t}, s]
-
- InverseLaplaceTransform[(c1_ + b3_)^(n3_), s_Symbol, t_, opt___] :=
- Module[{c, a, n = -n3},
- ( a = PowerExpand[Sqrt[Expand[-b3]/c]];
- Collect[
- (Sqrt[Pi] (2a)^(1/2-n) / Gamma[n] t^(n-1/2) BesselI[n-1/2, a t] / c^n)
- // PowerExpand // Expand,
- {Cosh[a t], Sinh[a t]}
- ] ) /; FreeQ[c = Factor[c1]/s^2, s] && positive[c]
- ] /; FreeQ[{b3, n3, t}, s] && !FreeQ[c1, s] &&
- (MatchQ[b3, b1_?Negative b2_.] || (SameQ[Head[b3], Plus] &&
- Apply[And, Map[MatchQ[#, b1_?Negative b2_.]&, Apply[List, b3]]])) &&
- (MatchQ[n3, n1_?Negative n2_.] || (SameQ[Head[n3], Plus] &&
- Apply[And, Map[MatchQ[#, n1_?Negative n2_.]&, Apply[List, n3]]]))
-
- InverseLaplaceTransform[(c1_ + b_)^(n3_), s_Symbol, t_, opt___] :=
- Module[{c, a, n = -n3},
- ( a = PowerExpand[Sqrt[b/c]];
- Collect[
- (Sqrt[Pi] (2a)^(1/2-n) / Gamma[n] t^(n-1/2) BesselJ[n-1/2, a t] / c^n)
- // PowerExpand // Expand,
- {Cos[a t], Sin[a t]}
- ]
- ) /; FreeQ[c = Factor[c1]/s^2, s]
- ] /; FreeQ[{b, n3, t}, s] && !FreeQ[c1, s] &&
- (MatchQ[n3, n1_?Negative n2_.] || (SameQ[Head[n3], Plus] &&
- Apply[And, Map[MatchQ[#, n1_?Negative n2_.]&, Apply[List, n3]]]))
-
-
- (* ============================== Exponentials ============================== *)
-
- InverseLaplaceTransform[f_. Exp[c_ + b_.], s_Symbol, t_, opt___] :=
- Module[{a},
- Exp[b] (InverseLaplaceTransform[f, s, t, opt] /. t -> t+a) UnitStep[t+a]
- /; FreeQ[a = Factor[c]/s, s]
- ] /; FreeQ[{b,t}, s] && !FreeQ[c,s]
-
- InverseLaplaceTransform[Exp[a3_ + b_.], s_Symbol, t_, opt___] :=
- Module[{a, a4},
- ( a = -a4;
- Expand[Exp[b] (DiracDelta[t] - Sqrt[a/t] BesselJ[1, 2 Sqrt[a t]])]
- ) /; FreeQ[a4 = Factor[a3] s, s] &&
- (MatchQ[a4, a1_?Negative a2_.] || (SameQ[Head[a4], Plus] &&
- Apply[And, Map[MatchQ[#, n1_?Negative n2_.]&, Apply[List, a4]]]))
- ] /; FreeQ[{b, t}, s] && !FreeQ[a3, s]
-
- InverseLaplaceTransform[Exp[a1_ + b_.], s_Symbol, t_, opt___] :=
- Module[{a},
- Exp[b] (Sqrt[a/t] BesselI[1, 2 Sqrt[a t]] + DiracDelta[t])
- /; FreeQ[a = Factor[a1] s, s]
- ] /; FreeQ[{b, t}, s]
-
- InverseLaplaceTransform[s_^(n3_) Exp[a3_ + b_.], s_Symbol, t_, opt___] :=
- Module[{n = -n3 - 1, a, a4},
- ( a = -a4;
- Exp[b] (t/a)^(n/2) BesselJ[n, 2Sqrt[a t]]
- ) /; FreeQ[a4 = Factor[a3] s, s] &&
- (MatchQ[a4, a1_?Negative a2_.] || (SameQ[Head[a4], Plus] &&
- Apply[And, Map[MatchQ[#, a1_?Negative a2_.]&, Apply[List, a4]]]))
- ] /; FreeQ[{n3, b, t}, s] && !FreeQ[a3, s]
- (MatchQ[n3, n1_?Negative n2_.] || (SameQ[Head[n3], Plus] &&
- Apply[And, Map[MatchQ[#, n1_?Negative n2_.]&, Apply[List, n3]]]))
-
- InverseLaplaceTransform[s_^(n3_) Exp[a3_ + b_], s_Symbol, t_, opt___] :=
- Module[{a, n = -n3 - 1},
- Exp[b] (t/a)^(n/2) BesselI[n, 2Sqrt[a t]]
- /; FreeQ[a = Factor[a3] s, s]
- ] /; FreeQ[{n3, b, t}, s] && !FreeQ[a3, s]
- (MatchQ[n3, n1_?Negative n2_.] || (SameQ[Head[n3], Plus] &&
- Apply[And, Map[MatchQ[#, n1_?Negative n2_.]&, Apply[List, n3]]]))
-
- InverseLaplaceTransform[Exp[a3_ + b_.], s_Symbol, t_, opt___] :=
- Module[{a, a4},
- ( a = -a4;
- Exp[b - a^2/(4t)] a/(2 Sqrt[Pi t^3])
- ) /; FreeQ[a4 = Factor[a3]/Sqrt[s], s] &&
- (MatchQ[a4, a1_?Negative a2_.] || (SameQ[Head[a4], Plus] &&
- Apply[And, Map[MatchQ[#, a1_?Negative a2_.]&, Apply[List, a4]]]))
- ] /; FreeQ[{b, t}, s] && !FreeQ[a3, s]
-
- InverseLaplaceTransform[s_^n_. Exp[a3_ + b_.], s_Symbol, t_, opt___] :=
- Module[{a, a4},
- ( a = -a4;
- Exp[b] 2^(-n-1/2) Pi^(-1/2) t^(-n-1) Exp[-a^2/(8t)] *
- ParabolicCylinderD[2n+1, a/Sqrt[2t]]
- ) /; FreeQ[a4 = Factor[a3]/Sqrt[s], s] &&
- (MatchQ[a4, a1_?Negative a2_.] || (SameQ[Head[a4], Plus] &&
- Apply[And, Map[MatchQ[#, a1_?Negative a2_.]&, Apply[List, a4]]]))
- ] /; FreeQ[{b, n, t}, s] && !FreeQ[a3, s]
-
-
- (* ======================== Logarithmic Functions ========================== *)
-
- InverseLaplaceTransform[Log[s_] s_^(n3_), s_Symbol, t_, opt___] :=
- t^(-n3-1)(PolyGamma[-n3]-Log[t])/Gamma[-n3] /;
- FreeQ[{n3, t}, s] &&
- (MatchQ[n3, n1_?Negative n2_.] || (SameQ[Head[n3], Plus] &&
- Apply[And, Map[MatchQ[#, n1_?Negative n2_.]&, Apply[List, n3]]]))
-
- InverseLaplaceTransform[Log[a1_ + b_] s_^(n_Integer?Negative),
- s_Symbol, t_, opt___] :=
- Module[{a, tt},
- (DI[Log[b] - ExpIntegralEi[-b tt/a], t, 0, tt, -1-n] /. tt->t)
- /; FreeQ[a = Factor[a1]/s, s]
- ] /; FreeQ[{b, t}, s] && !FreeQ[a1, s]
-
- InverseLaplaceTransform[Log[e_. + f_], s_Symbol, t_, opt___] :=
- Module[{a, b, c, d, f1},
- Log[e + a/c] DiracDelta[t] + (-Exp[(d e + b) t/(c e + a)] + Exp[d t/c])/t
- /; (f1 = Together[f];
- MatchQ[Collect[Numerator[f1], s]/Collect[Denominator[f1], s],
- (a1_. s + b1_.)/(c1_. s + d1_.) /;
- FreeQ[{a, b, c, d} = {a1, b1, c1, d1}, s]])
- ] /; FreeQ[{e, t}, s] &&
- If[Head[f]===Plus, Apply[And, Map[!FreeQ[#, s]&, Apply[List, f]]],
- !FreeQ[f, s]]
-
- InverseLaplaceTransform[Log[e_. + f_], s_Symbol, t_, opt___] :=
- Module[{b, c, d, f1},
- Log[e] DiracDelta[t] + (-Exp[(d e + b) t/(c e)] + Exp[d t/c])/t
- /; (f1 = Together[f];
- MatchQ[Numerator[f1]/Collect[Denominator[f1], s],
- b1_. / (c1_. s + d1_.) /; FreeQ[{b, c, d} = {b1, c1, d1}, s]])
- ] /; FreeQ[{e, t}, s] &&
- If[Head[f]===Plus, Apply[And, Map[!FreeQ[#, s]&, Apply[List, f]]],
- !FreeQ[f, s]]
-
- InverseLaplaceTransform[s_^(n3_) Log[s_]^2, s_Symbol, t_, opt___] :=
- With[{n = -n3},
- t^(n-1)((PolyGamma[n]-Log[t])^2 - PolyGamma[1, n]) / Gamma[n]
- ] /; FreeQ[{n3, t}, s] &&
- (MatchQ[n3, n1_?Negative n2_.] || (SameQ[Head[n3], Plus] &&
- Apply[And, Map[MatchQ[#, n1_?Negative n2_.]&, Apply[List, n3]]]))
-
- ilLog[a_, b_, c_, d_, t_] :=
- (2/t)(Cos[Sqrt[-c^2/4+d]t]Exp[-c t/2]-Cos[Sqrt[-a^2/4+b]t]Exp[-a t/2]) //.
- {
- Cos[Complex[aa_, bb_] cc_.] :>
- Cos[aa cc]Cosh[bb cc] - I Sin[aa cc]Sinh[bb cc],
- Cos[Sqrt[a1_?Negative] a2_.] :> Cosh[Sqrt[Expand[-a1]] a2]
- }
-
- InverseLaplaceTransform[Log[d_. (a1_+c_.)/s_^2], s_Symbol, t_, opt___] :=
- Module[{a},
- Log[a d]DiracDelta[t] + ilLog[0, c/a, 0, 0, t]
- /; FreeQ[a = Factor[a1]/s^2, s]
- ] /; FreeQ[{c,d,t},s] && !FreeQ[a1,s]
-
- InverseLaplaceTransform[Log[(a_. s_^2+c_.)/(d_. s_^2+f_.)],
- s_Symbol, t_, opt___] :=
- Log[a/d]DiracDelta[t] + ilLog[0, c/a, 0, f/d, t] /; FreeQ[{a,c,d,f,t},s]
-
- InverseLaplaceTransform[
- Log[(a_. s_^2+c_.)/(d_. s_^2+e_. s_+f_.)], s_Symbol, t_, opt___] :=
- Log[a/d]DiracDelta[t] + ilLog[0, c/a, e/d, f/d, t] /; FreeQ[{a,c,d,e,f,t},s]
-
- InverseLaplaceTransform[
- Log[(a_. s_^2+b_. s_+c_.)/(d_. s_^2+f_.)], s_Symbol, t_, opt___] :=
- Log[a/d]DiracDelta[t] + ilLog[b/a, c/a, 0, f/d, t] /; FreeQ[{a,b,c,d,f,t},s]
-
- InverseLaplaceTransform[
- Log[(a_. s_^2+b_. s_+c_.)/(d_. s_^2+e_. s_+f_.)], s_Symbol, t_, opt___] :=
- Log[a/d]DiracDelta[t] + ilLog[b/a, c/a, e/d, f/d, t] /;
- FreeQ[{a,b,c,d,e,f,t},s]
-
- InverseLaplaceTransform[
- Log[expr:Plus[a_.,Times[b_.,Power[_,_?Negative]]]], s_Symbol, t_, opt___] :=
- Module[{expr1 = MapAt[Collect[#, s]&,
- ExpandNumerator[ExpandDenominator[Together[expr]]],
- {{2, 1}, {1}}]},
- InverseLaplaceTransform[Log[expr1], s, t, opt] /; expr1 =!= expr
- ] /; FreeQ[t,s]
-
-
- (* ====================== Trigonometric Functions ========================== *)
-
- InverseLaplaceTransform[s_^(n3_) Sin[a1_], s_Symbol, t_, opt___] :=
- Module[{a, n = -n3},
- (t/a)^((n-1)/2) (Sin[3Pi n/4 + Pi/4] ThomsonBer[n-1, 2Sqrt[a t]] -
- Cos[3Pi n/4+Pi/4] ThomsonBei[n-1, 2Sqrt[a t]])
- /; FreeQ[a = Factor[a1] s, s]
- ] /; FreeQ[{n3, t}, s] &&
- (MatchQ[n3, n1_?Negative n2_.] || (SameQ[Head[n3], Plus] &&
- Apply[And, Map[MatchQ[#, n1_?Negative n2_.]&, Apply[List, n3]]]))
-
- InverseLaplaceTransform[s_^(n3_) Cos[a1_], s_Symbol, t_, opt___] :=
- Module[{a, n = -n3},
- -(t/a)^((n-1)/2) (Cos[3Pi n/4 + Pi/4] ThomsonBer[n-1, 2Sqrt[a t]] -
- Sin[3Pi n/4+Pi/4] ThomsonBei[n-1, 2Sqrt[a t]])
- /; FreeQ[a = Factor[a1] s, s]
- ] /; FreeQ[{n3, t}, s] &&
- (MatchQ[n3, n1_?Negative n2_.] || (SameQ[Head[n3], Plus] &&
- Apply[And, Map[MatchQ[#, n1_?Negative n2_.]&, Apply[List, n3]]]))
-
- InverseLaplaceTransform[ArcTan[a1_], s_Symbol, t_, opt___] :=
- Module[{a},
- Sin[a t] / t /; FreeQ[a = Factor[a1] s, s]
- ] /; FreeQ[t, s] && !FreeQ[a1, s]
-
-
- (* ====================== Derivatives and Integrals ======================== *)
-
- InverseLaplaceTransform[
- Derivative[n_Integer?Positive][f_][s_], s_Symbol, t_, opt___] :=
- (-1)^n t^n InverseLaplaceTransform[f[s], s, t, opt] /; FreeQ[t,s]
-
- InverseLaplaceTransform[
- Derivative[0,0,n_Integer?Positive,___]
- [LaplaceTransform][f_,t1_Symbol,s_Symbol,opt1___],
- s_Symbol,t2_,opt2___] :=
- ((-1)^n (t1^n f) /. t1->t2) /; FreeQ[{f,t},s]
-
- InverseLaplaceTransform[Integrate[f_, {ss_Symbol, s_, Infinity}],
- s_Symbol, t_, opt___] :=
- InverseLaplaceTransform[f /. ss->s, s, t, opt] / t /; FreeQ[t,s]
-
- (* ===================== Products Involving Powers ======================== *)
-
-
- InverseLaplaceTransform[a_ s_^n_., s_Symbol, t_, opt___] :=
- Module[{tt, v, f, init, k,
- zerolimit = ZeroLimit /. {opt} /. Options[LaplaceTransform]},
- (f = InverseLaplaceTransform[a, s, tt, opt];
- init = Limit[ Sum[ s^(n-k-1) D[f, {tt, k}], {k, 0, n-1}], tt->0,
- Direction->1];
- If[!FreeQ[init,Limit],
- If[zerolimit===Automatic,
- init = Sum[ s^(n-k-1) (D[f, {tt, k}] /. tt->0), {k, 0, n-1}],
- v = If[SameQ[Head[t], Symbol], t, Unique[]];
- init = init /. tt->v
- ]
- ];
- ((D[f, {tt, n}]) /. tt->t) + InverseLaplaceTransform[init, s, t, opt]
- ) /; (zerolimit===Automatic || zerolimit===All)
- ] /; IntegerQ[n] && n > 0 && FreeQ[t,s]
-
- InverseLaplaceTransform[a_ s_^(n_Integer?Negative), s_Symbol, t_, opt___] :=
- Module[{tt},
- DI[InverseLaplaceTransform[a, s, tt, opt], t, 0, tt, -n] /. tt->t
- ] /; FreeQ[t,s]
-
-
- (* ============== InverseLaplaceTransform of LaplaceTransform ============ *)
-
- Literal[InverseLaplaceTransform[LaplaceTransform[f_, t_Symbol, s_, ___],
- s_Symbol, t1_, ___]] :=
- (f /. t->t1) /; FreeQ[t1,s]
-
-
- (* ======================= Composed Functions ============================= *)
-
- InverseLaplaceTransform[g1_ g2_, s_Symbol, t_, opt___] :=
- Module[{v = If[SameQ[Head[t], Symbol], Unique[ToString[t]], Unique[]]},
- Integrate[
- Collect[
- (InverseLaplaceTransform[g1, s, t, opt] /. t->v) *
- (InverseLaplaceTransform[g2, s, t, opt] /. t->t-v),
- DiracDelta],
- {v, 0, t}]
- ] /;
- FreeQ[{InverseLaplaceTransform[g1, s, t, opt],
- InverseLaplaceTransform[g2, s, t, opt]},
- InverseLaplaceTransform] && FreeQ[t,s]
-
- InverseLaplaceTransform[f_, s_Symbol, t_, opt___] :=
- Module[
- {gg =
- Module[
- {g = ComposedFunctionQ[f, s]},
- If[( (SameQ @@ g) &&
- (MatchQ[g[[1]], _Times] || MatchQ[g[[1]], _Plus]) ) ||
- (And @@
- (MatchQ[#, Power[s, Rational[_Integer?Negative, 2]]]& /@ g)),
- Switch[
- g[[1]],
- _Times,
- Module[
- {a = g[[1]]/s},
- InverseLaplaceTransform[f /. g[[1]]->s, s, t/a, opt] / a
- ],
- _Plus,
- Module[
- {a = g[[1]]-s},
- InverseLaplaceTransform[f /. g[[1]]->s, s, t, opt] Exp[-a t]
- ],
- _,
- Module[
- {ff = InverseLaplaceTransform[
- PowerExpand[f /. s->s^2], s, t, opt]},
- If[
- FreeQ[ff,InverseLaplaceTransform],
- Expand[
- Module[
- {v = If[SameQ[Head[t],Symbol],
- Unique[ToString[t]],
- Unique[]]},
- Integrate[
- Collect[v Exp[-v^2/(4 t)](ff /. t->v), DiracDelta],
- {v, 0, Infinity}]
- ] / (2 Sqrt[Pi t^3])
- ],
- $Failed
- ]
- ]
- ],
- $Failed
- ]
- ]
- },
- gg /;
- !SameQ[Head[gg],InverseLaplaceTransform] && !SameQ[gg, $Failed]
- ] /; FreeQ[t,s]
-
-
-
- (* ================== Derivative of InverseLaplaceTransform ================ *)
-
- Unprotect[D, Derivative]
-
- (*** Derivative of InverseLaplaceTransform, Linearity ***)
-
- Literal[D[x_Plus,y_Symbol]] := Map[D[#,y]&,x] /;
- !FreeQ[x,InverseLaplaceTransform]
-
- Literal[D[x_Plus,{y_Symbol,n_Integer?Positive}]] := Map[D[#,{y,n}]&,x] /;
- !FreeQ[x,InverseLaplaceTransform]
-
- Literal[D[x_Times,y_Symbol]] :=
- Module[{e = Expand[x]},
- D[e,y] /; !SameQ[x,e]
- ] /; !FreeQ[x,InverseLaplaceTransform]
-
- Literal[D[x_Times,{y_Symbol,n_Integer?Positive}]] :=
- Module[{e = Expand[x]},
- D[e,{y,n}] /; !SameQ[x,e]
- ] /; !FreeQ[x,InverseLaplaceTransform]
-
- Derivative[0,0,m_Integer?Positive][InverseLaplaceTransform][f_, s_Symbol, t_] :=
- Module[{inverse, t1},
- (D[inverse, {t1, m}] /. t1->t)
- /; FreeQ[inverse = InverseLaplaceTransform[f, s, t1],
- InverseLaplaceTransform]
- ] /; FreeQ[t, s]
-
- Derivative[0,0,m_Integer?Positive,z:(0)..][InverseLaplaceTransform][f_,
- s_Symbol,t_,opt__] :=
- Module[{inverse, t1},
- (D[inverse, {t1, m}] /. t1->t)
- /; FreeQ[inverse = InverseLaplaceTransform[f, s, t1],
- InverseLaplaceTransform]
- ] /; ((Length[{z}] == Length[{opt}]) && FreeQ[t,s])
-
- (*** Derivative of InverseLaplaceTransform wrt t ***)
-
- Literal[D[InverseLaplaceTransform[f_,s_Symbol,t_,opt__],t_Symbol]] :=
- Apply[Derivative,Join[{0,0,1},
- Table[0,{Length[{opt}]}]]][InverseLaplaceTransform][f,s,t,opt] /;
- FreeQ[t,s]
-
- Literal[D[InverseLaplaceTransform[f_,s_Symbol,t_,opt__],
- {t_Symbol,n_Integer?Positive}]] :=
- Apply[Derivative,Join[{0,0,n},
- Table[0,{Length[{opt}]}]]][InverseLaplaceTransform][f,s,t,opt] /;
- FreeQ[t,s]
-
- (*** Derivative of InverseLaplaceTransform wrt s ***)
-
- Literal[D[u_. InverseLaplaceTransform[f_,s_Symbol,t_,opt___],s_]] :=
- D[u,s] InverseLaplaceTransform[f,s,t,opt] /;
- FreeQ[u,InverseLaplaceTransform] && FreeQ[t,s]
-
- Literal[D[u_. InverseLaplaceTransform[f_,s_Symbol,t_,opt___],
- {s_,n_Integer?Positive}]] :=
- D[u,{s,n}] InverseLaplaceTransform[f,s,t,opt] /;
- FreeQ[u,InverseLaplaceTransform] && FreeQ[t,s]
-
- (*** Derivative of Derivative of InverseLaplace wrt t (with options) ***)
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive,
- z:(0)..][InverseLaplaceTransform][f_,s_Symbol,t_Symbol,opt__],
- t_]] :=
- u Derivative[0,0,m+1,z][InverseLaplaceTransform][f,s,t,opt] +
- D[u,t] Derivative[0,0,m,z][InverseLaplaceTransform][f,s,t,opt] /;
- (Length[{z}] == Length[{opt}]) && FreeQ[u,InverseLaplaceTransform] &&
- FreeQ[t,s]
-
- Literal[D[Derivative[0,0,m1_Integer?Positive,
- z1:(0)..][InverseLaplaceTransform][f1_,s1_Symbol,t_Symbol,opt1__] *
- Derivative[0,0,m2_Integer?Positive,
- z2:(0)..][InverseLaplaceTransform][f2_,s2_Symbol,t_Symbol,opt2__],
- t_]] :=
- Derivative[0,0,m1,z1][InverseLaplaceTransform][f1,s1,t,opt] *
- Derivative[0,0,m2+1,z2][InverseLaplaceTransform][f2,s2,t,opt] +
- Derivative[0,0,m1+1,z1][InverseLaplaceTransform][f1,s1,t,opt] *
- Derivative[0,0,m2,z2][InverseLaplaceTransform][f2,s2,t,opt] /;
- (Length[{z1}] == Length[{opt1}]) && (Length[{z2}] == Length[{opt2}]) &&
- FreeQ[t,s1] && FreeQ[t,s2]
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive,
- z:(0)..][InverseLaplaceTransform][f_,s_Symbol,t_Symbol,opt__],
- {t_,n_Integer?Positive}]] :=
- Nest[D[#,t]&, u Derivative[0,0,m,z][InverseLaplaceTransform][f,
- s,t,opt], n] /; (Length[{z}] == Length[{opt}]) &&
- FreeQ[t,s]
-
- (*** Derivative of Derivative of InverseLaplace wrt s ***)
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive][InverseLaplaceTransform][f_,
- s_Symbol,t_],
- s_]] := D[u,s] Derivative[0,0,m][InverseLaplaceTransform][f,s,t] /;
- FreeQ[u,InverseLaplaceTransform] && FreeQ[t,s]
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive][InverseLaplaceTransform][f_,
- s_Symbol,t_],
- {s_,n_Integer?Positive}]] :=
- Nest[D[#,s]&, u Derivative[0,0,m][InverseLaplaceTransform][f,s,t], n] /;
- FreeQ[t,s]
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive,
- z:(0)..][InverseLaplaceTransform][f_,s_Symbol,t_,opt__],
- s_]] := D[u,s] Derivative[0,0,m,z][InverseLaplaceTransform][f,
- s,t,opt] /;
- (Length[{z}] == Length[{opt}]) && FreeQ[u,InverseLaplaceTransform] &&
- FreeQ[t,s]
-
- Literal[D[u_. Derivative[0,0,m_Integer?Positive,
- z:(0)..][InverseLaplaceTransform][f_,s_Symbol,t_,opt__],
- {s_,n_Integer?Positive}]] :=
- Nest[D[#,s]&, u Derivative[0,0,m,z][InverseLaplaceTransform][f,
- s,t,opt], n] /; (Length[{z}] == Length[{opt}]) && FreeQ[t,s]
-
-
- Protect[D, Derivative]
-
- positive[a_] := Positive[a] /; NumberQ[N[a]]
- positive[a_Times] := Apply[And, Map[positive, a]]
- positive[a_] := True
-
- negative[a_] := Negative[a] /; NumberQ[N[a]]
- negative[a_Times] := Apply[Or, Map[negative, a]]
- negative[a_] := False
-
- ComplexQ[a_] := Head[a] === Complex
-
- (*****************************************************************************)
- End[] (* end `Private` Context *)
- (*****************************************************************************)
-
-
-
- (*****************************************************************************)
- EndPackage[] (* end package Context *)
- (*****************************************************************************)
-
- (*:Limitations:
-
- As in the case of integration, there are additional special cases that appear
- in the reference book, yet are not covered here.
-
- LaplaceTransform can be evaluated numerically by performing the integral in
- the definition using NIntegrate. Although that is possible in principle for
- InverseLaplaceTransform, the convergence of the typical integrals one
- encounters is much poorer (goes like Sin[t]/t). If, at some point, NIntegrate
- will be more successful in evaluating these, a numeric rule for
- InverseLaplaceTransform could be added.
-
- *)
-
-
-