home *** CD-ROM | disk | FTP | other *** search
-
- (*************************************************************************
- *
- * Mellin Transformations of Elementary Functions
- *
- *************************************************************************)
-
- LogRule1 = {
- Log[ x_]^n_. :>
- n! MeijerG[ Table[1,{i,n+1}],{},{},Table[0,{i,n+1}],{1,x} ]
- }
-
- LogRule2 = {
- Log[ x_]^n_. :>
- (-1)^n n! MeijerG[ {},Table[1,{i,n+1}],Table[0,{i,n+1}],{},{1,x} ]
- }
-
- InputTrig = {
- Sin[x_] :>
- Sign[x] Pi^(1/2) MeijerG[ {1/2},{},{1/2},{1/2,0},{2,x^2/4} ],
- Cos[x_] :>
- Pi^(1/2) MeijerG[ {0},{},{0},{0,1/2},{2,x^2/4} ]
- }
-
- InputInvTrig = {
- Cos[v_ ArcCos[x_]] (1-y_)^a_ :> (1-y)^(a+1/2)*
- Sqrt[Pi] MeijerG[ {},{1/2+v/2,1/2-v/2},{0,1/2},{},{2,x^2} ]/;x^2===y,
- Sin[v_ ArcCos[x_]] :>
- Sqrt[Pi] v/2 MeijerG[ {},{1+v/2,1-v/2},{0,1/2},{},{2,x^2} ]
- }
-
- InputExp = {
- Exp[x_] :>
- MeijerG[ {},{},{0},{}, {1,-x} ]
- }
-
- ListElem = {Sin,Cos,ArcSin,ArcCos,ArcTan,ArcCot,Log,Exp,E,HeavySide1,Power}
-
- InputElem = {
- HeavySide1[a_.-x_,x_] :>
- MeijerG[ {},{1},{0},{},{1,x/a} ]/;FreeQ[a,x],
- HeavySide1[x_-a_.,x_ ] :>
- MeijerG[ {1},{},{},{0},{1,x/a} ]/;FreeQ[a,x],
- (1 + x_)^n_ :>
- MeijerG[ {n+1},{},{0},{},{1,x} ]/Gamma[-n]/;Not[Znak[x]]&&
- (Not[NumberQ[N[n]]] || n < 0),
- Log[(1+x_)/(1-y_)] :>
- Pi MeijerG[ {1/2},{1},{1/2},{0},{2,x^2} ]/;Expand[x-y]===0,
- Log[(1+x_)/(-1+y_)] :>
- Pi MeijerG[ {1/2},{1},{1/2},{0},{2,x^2} ]/;Expand[x-y]===0,
- Log[1+n_ x_] :>
- Pi MeijerG[ {1,1},{1/2},{1},{0,1/2}, {1,-n x} ]/;Znak[n],
- Log[Abs[1+n_ x_]] :>
- Pi MeijerG[ {1,1},{1/2},{1},{0,1/2}, {1,-n x} ]/;Znak[n],
- Log[Abs[-1+x_]] :>
- Pi MeijerG[ {1,1},{1/2},{1},{0,1/2}, {1,x} ],
- Log[1+ x_] :>
- MeijerG[ {1,1},{},{1},{0}, {1,x} ],
- Sin[x_ + a_. Pi] :>
- Pi^(1/2) MeijerG[ {},{a},{0,1/2},{a},{2,x^2/4} ]/; FreeQ[a,x],
- Sin[x_]^2 :>
- 2^(-1) Pi^(1/2) MeijerG[ {1},{},{1},{0,1/2},{2,x^2} ],
- Sin[x_] - y_ :>
- -Pi^(1/2) MeijerG[ {3/2},{},{3/2},{0,1/2},{2,x^2/4} ] /;Expand[x-y] == 0,
- y_ - Sin[x_] :>
- Pi^(1/2) MeijerG[ {3/2},{},{3/2},{0,1/2},{2,x^2/4} ] /;Expand[x-y] == 0,
- Sin[x_] :>
- Sign[PowerExpand[x]] Pi^(1/2) MeijerG[ {1/2},{},{1/2},{1/2,0},{2,x^2/4} ],
- Cos[x_] - 1 :>
- -Pi^(1/2) MeijerG[ {1},{},{1},{0,1/2},{2,x^2/4} ],
- 1 - Cos[x_] :>
- Pi^(1/2) MeijerG[ {1},{},{1},{0,1/2},{2,x^2/4} ],
- Cos[x_ + a_. Pi] :>
- Pi^(1/2) MeijerG[ {},{a+1/2},{0,1/2},{a+1/2},{2,x^2/4}]/; FreeQ[a,x],
- Cos[x_]^2 - 1:>
- -2^(-1) Pi^(1/2) MeijerG[ {1},{},{1},{0,1/2},{2,x^2} ],
- 1 - Cos[x_]^2 :>
- 2^(-1) Pi^(1/2) MeijerG[ {1},{},{1},{0,1/2},{2,x^2} ],
- Cos[x_]^2 :>
- 1/2 + Pi^(1/2) MeijerG[ {0},{},{0},{0,1/2},{2,x^2} ]/2,
- Cos[x_] :>
- Pi^(1/2) MeijerG[ {0},{},{0},{0,1/2},{2,x^2/4} ],
- Exp[x_] - 1 :>
- -MeijerG[ {1},{},{1},{0},{1,-x} ],
- 1 - Exp[x_] :>
- MeijerG[ {1},{},{1},{0},{1,-x} ],
- Exp[x_] :>
- MeijerG[ {},{},{0},{}, {1,-x} ],
- HeavySide1[a_.-x_,x_] ArcSin[x_] :>
- Pi MeijerG[ {},{1},{0},{},{2,x^2} ]/2 -
- Sqrt[Pi] MeijerG[ {},{1,1},{0,1/2},{},{2,x^2} ]/2/;FreeQ[a,x],
- ArcSin[x_] :>
- Pi/2 -
- Sqrt[Pi] MeijerG[ {},{1,1},{0,1/2},{},{2,x^2} ]/2,
- ArcCos[x_] :>
- Sqrt[Pi] MeijerG[ {},{1,1},{0,1/2},{},{2,x^2} ]/2,
- ArcTan[x_] :>
- MeijerG[ {1/2,1},{},{1/2},{0},{2,x^2} ]/2,
- ArcCot[x_] :>
- MeijerG[ {1/2,1},{},{1/2},{0},{2,x^(-2)} ]/2
- }
-
- (*************************************************************************
- *
- * Mellin Transformations of Special Functions
- *
- *************************************************************************)
-
- ListBessel = {BesselJ,BesselY,BesselK,BesselI}
-
- InputBessel = {
- BesselJ[v_,x_]^2 :>
- Pi^(-1/2) MeijerG[ {1/2},{},{v},{-v,0},{2,x^2} ],
- BesselJ[v_,x_] BesselJ[a_,x_] :>
- Pi^(-1/2) MeijerG[ {0,1/2},{},{(v+a)/2},{-(v+a)/2,(a-v)/2,(v-a)/2},{2,x^2}],
- Sin[x_] BesselJ[v_,x_] :>
- 2^(-1/2) MeijerG[ {1/4,3/4},{},{(1+v)/2},{-v/2,v/2,(1-v)/2},{2,x^2} ],
- Cos[x_] BesselJ[v_,x_] :>
- 2^(-1/2) MeijerG[ {1/4,3/4},{},{v/2},{-v/2,(1+v)/2,(1-v)/2},{2,x^2} ],
- Exp[x_] BesselK[v_,x_] :>
- Pi^(-1/2) Cos[v Pi] MeijerG[ {1/2},{},{v,-v},{},{1,2 x} ],
- Exp[n_ x_] BesselK[v_,x_] :>
- Pi^(1/2) MeijerG[ {},{1/2},{v,-v},{},{1,2 x} ]/;n===-1,
- BesselK[v_,x_]^2 :>
- Pi^(1/2)/2 MeijerG[ {},{1/2},{0,v,-v},{},{2,x^2} ],
- BesselK[v_,x_] BesselK[a_,x_] :>
- Pi^(1/2)/2 MeijerG[ {},{0,1/2},{(a+v)/2,(a-v)/2,(v-a)/2,-(a+v)/2},{},{2,x^2}],
- BesselK[1,x_] - y_ :>
- -1/2 MeijerG[ {1/2},{},{1/2,1/2},{-1/2},{2,x^2/4} ]/;Expand[x y]===1,
- BesselJ[v_,x_] :>
- MeijerG[ {},{},{v/2},{-v/2},{2,x^2/4} ],
- BesselJ[0,x_] - 1 :>
- -MeijerG[ {1,1,1,3},{1},{},{1},{0,0},{2,x^2/4} ],
- 1 - BesselJ[0,x_] :>
- MeijerG[ {1,1,1,3},{1},{},{1},{0,0},{2,x^2/4} ],
- BesselK[v_,x_] :>
- MeijerG[ {},{},{v/2,-v/2},{},{2,x^2/4} ]/2,
- BesselY[v_,x_] :>
- MeijerG[ {},{-(v+1)/2},{v/2,-v/2},{-(v+1)/2},{2,x^2/4} ],
- Exp[n_ x_] BesselI[v_,x_] :>
- Pi^(-1/2) MeijerG[ {1/2},{},{v},{-v},{1,2 x} ]/;n==-1,
- BesselI[v_,x_] :>
- Pi MeijerG[ {},{(v+1)/2},{v/2},{-v/2,(v+1)/2},{2,x^2/4} ]
- }
-
- ListOther= {Erf,ExpIntegralEi,PolyLog,FresnelS,FresnelC,SinIntegral}
-
- InputOther = {
- Exp[x_] Erfc[y_] :>
- MeijerG[ {1/2},{},{0,1/2},{},{1,x} ]/;Expand[x-y^2]===0,
- Exp[n_ x_] ExpIntegralEi[y_] :>
- -Pi MeijerG[ {0},{1/2},{0,0},{1/2},{1,x} ]/;
- NumberQ[n] && n<0 && Expand[x-y]===0 ,
- Exp[x_] ExpIntegralEi[n_ y_] :>
- -MeijerG[ {0},{},{0,0},{},{1,x} ]/;
- NumberQ[n] && n<0 && Expand[x-y]===0,
- PolyLog[k_,x_] :>
- -MeijerG[ Table[1,{j,1,k+1}],{},{1},Table[0,{j,1,k}],{1,-x} ],
- Erfc[x_] :>
- MeijerG[ {},{1},{0,1/2},{},{2,x^2} ]/Sqrt[Pi],
- Erf[x_] :>
- MeijerG[ {1},{},{1/2},{0},{2,x^2} ]/Sqrt[Pi],
- ExpIntegralEi[n_ x_] :>
- -MeijerG[ {},{1},{0,0},{},{1,-n x} ]/;NumberQ[n] && n<0 ,
- FresnelS[x_] :>
- MeijerG[ {1},{},{3/4},{0,1/4},{4,Pi^2 x^4/16} ]/2,
- FresnelC[x_] :>
- MeijerG[ {1},{},{1/4},{0,3/4},{4,Pi^2 x^4/16} ]/2,
- SinIntegral[x_] :>
- Sqrt[Pi] MeijerG[ {1},{},{1/2},{0,0},{2,x^2/4} ]/2
- }
-
- (***************************************************************************
- * Input Rules for Functions
- *
- ***************************************************************************)
-
- GammaRule1 = {
- Gamma[v_] Gamma[u_] :>
- Pi/(Sin[Expand[Pi u]]/.TrigRule) /;Expand[u+v]===1
- }
-
- GammaRule2 = {
- Gamma[n_+x_] :> (n-1+x) Gamma[n-1+x] /;NumberQ[n] && Re[n]>=1
- }
-
- GammaRule3 = {
- Gamma[n_+x_] :> Gamma[n+x+1]/(n+x) /;NumberQ[n] && Re[n]<0
- }
-
- GammaRule4 = {
- Gamma[u_] Gamma[v_] :> Expand[2^(1-2u)] Pi^(1/2) Gamma[Expand[2 u]]/;
- Expand[v-u]===1/2
- }
-
- GammaRule6 = {
- Gamma[v_]^(-1) Gamma[u_]^(-1) :>
- (Sin[Expand[Pi u]]/.TrigRule)/Pi /;Expand[u+v]===1
- }
-
- GammaRule5 = {
- Gamma[v_] Gamma[u_] :> Pi/(-u (Sin[Expand[Pi u]]//.TrigRule)) /;
- Expand[u+v]===0
- }
-
- PolyGammaRule = {
- PolyGamma[v_] :> PolyGamma[0,v],
- PolyGamma[k_Integer,n_Integer + v_] :>
- PolyGamma[k,n+v-1] + (-1)^k k!/(n+v-1)^(k+1)/;n>0,
- PolyGamma[k_Integer,n_] :> PolyGamma[k,n-1] +(-1)^k k! (n-1)^(-k-1)/;
- NumberQ[n] && Re[n]>1,
- PolyGamma[1,1/4] :> Pi^2 + 8 Catalan,
- PolyGamma[1,3/4] :> Pi^2 - 8 Catalan,
- PolyGamma[0,n_Rational] :> -EulerGamma - Log[2 Denominator[n]] -
- Pi Cos[Pi n]/(2 Sin[Pi n]) + 2 Sum[Cos[2 n i Pi] Log[Sin[Pi i/Denominator[n]]],
- {i,1,Floor[(Denominator[n]-1)/2]}]/; n>0 && n<1,
- PolyGamma[k_,1] :> (-1)^(k+1) k! Zeta[k+1],
- PolyGamma[k_,1/2] :> (-1)^(k+1) k! Zeta[k+1] (2^(k+1)-1),
- Zeta[n_Integer,v_Rational] :> Zeta[n,v-1] - (v-1)^(-n)/;v>1,
- Zeta[2,1/4] :> Pi^2 + 8 Catalan,
- Zeta[2,3/4] :> Pi^2 - 8 Catalan
- }
-
- PolyGammaRule1 = {
- PolyGamma[v_] :> PolyGamma[0,v]
- }
-
- SimpPolyGammaSum = {
- a_. PolyGamma[k_,z_] + b_ PolyGamma[k_,x_] +c_.:>
- c + a Pi Module[{var},D[Cot[Pi var],{var,k}]/.var->x]/;EvenQ[k] &&
- Znak[b] && Expand[a+b]===0 && Expand[z+x-1]===0,
- a_. PolyGamma[k_,z_] + b_ PolyGamma[k_,x_] +c_.:>
- c - a Pi Module[{var},D[Cot[Pi var],{var,k}]/.var->x]/;
- OddQ[k] && Expand[a-b]===0 && Expand[z+x-1]===0,
- a_. PolyGamma[k_,z_] + b_ PolyGamma[k_,x_] +c_.:>
- c + a k! x^(-k-1) + a Pi Module[{var},
- D[Cot[Pi var],{var,k}]/.var->x]/;
- EvenQ[k] && Znak[b] && Expand[a+b]===0 && Expand[z+x]===0,
- a_. PolyGamma[k_,z_] + b_ PolyGamma[k_,x_] +c_.:>
- c + a k! x^(-k-1) - a Pi Module[{var},
- D[Cot[Pi var],{var,k}]/.var->x]/;
- OddQ[k] && Expand[a-b]===0 && Expand[z+x]===0,
- Cot[a_] :> Cot[Expand[a]],
- Csc[a_] :> Csc[Expand[a]]
- }
-
- SimpGaussSum = { Literal[
- coef1_. Hypergeometric2F1[a_,d_,c_,-1] +
- coef2_. Hypergeometric2F1[b_,d_,c1_,-1] ] :>
- coef1 Gamma[c] Gamma[c1]/(b Gamma[d])/;
- Expand[c-a-1]===0 && Expand[d-a-b]===0 && Expand[c1-b-1]==0 &&
- Expand[coef1 a - b coef2]===0
- }
-
- PowerExpandMy[ w_Plus ] := Map[ PowerExpandMy[#]&,w ]
-
- PowerExpandMy[ w_ ] := Map[ SimpTerm[#]&,w ]
-
- SimpTerm[ f_[w__] ] := Apply[f, Map[SimpPower[#]&,{w}] ]/;
- Apply[Or,Map[Not[FreeQ[f,#]]&,Join[
- ListBessel,ListOther,ListElem,ListNew] ]]
-
- SimpTerm[ w_ ] := w
-
- ListNew = {Cosh,Sinh,Sech,Cosh,Sec,Cos,EllipticK,EllipticE}
-
- SimpSign = {
- Sign[n_ u_] :> Sign[n] Sign[u]/;NumberQ[n],
- Sign[u_^n_] :> 1/;EvenQ[n],
- Sign[u_^n_] :> Sign[u]/;OddQ[n]
- }
-
- SimpSign1 = {
- Abs[n_ v_] :> Abs[n] Abs[v],
- Abs[u_^n_] :> Abs[u^(-n)]^(-1)/;NumberQ[n] && Im[n]==0&&n<0,
- Abs[u_ + v_] :> Abs[-u-v]/;Znak[u] && Znak[v],
- Abs[z_ + v_ + u_] :> Abs[-z-v-u]/;Znak[z] && Znak[u] && Znak[v],
- Abs[a_^n_+b_^m_] :> a^n+b^m/;EvenQ[n] && EvenQ[m],
- Abs[a_^n_+m_] :> a^n+m/;EvenQ[n] && NumberQ[m] && m>0,
- Abs[v_] Sign[u_] :> v/;v===u,
- Abs[u_]^n_ :> u^n/;EvenQ[n],
- Abs[u_^n_] :> u^n/;EvenQ[n],
- Abs[Sign[u_]] :> 1,
- Abs[u_]^n_ :> Sign[u] u^n/;OddQ[n] && n=!=-1,
- Sign[u_]^n_ :> 1/;EvenQ[n],
- Sign[u_^n_] :> 1/;EvenQ[n] || EvenQ[Denominator[n]],
- Sign[u_]^n_ :> Sign[u]/;OddQ[n],
- Sign[u_^n_] :> Sign[u]/;OddQ[n]
- }
-
- SimpSign2 = {
- Abs[v_] Sign[u_] :> v/;v===u,
- Abs[u_]^n_ :> u^n/;EvenQ[n]
- }
-
- TrigRule = {
- Csc[x_ + y_] :> Sec[x] (-1)^(y/Pi-1/2) /;NumberQ[y/Pi] &&
- Denominator[y/Pi]==2,
- Csc[x_ + y_] :> Csc[x] (-1)^(y/Pi)/;IntegerQ[y/Pi],
- Sin[x_ + y_] :> Cos[x] (-1)^(y/Pi-1/2)/;NumberQ[y/Pi] &&
- Denominator[y/Pi]==2,
- Sin[x_ + y_] :> Sin[x] (-1)^(yPi)/;IntegerQ[y/Pi],
- Cos[x_ + y_] :> Sin[x] (-1)^(y/Pi+1/2)/;NumberQ[y/Pi] &&
- Denominator[y/Pi]==2,
- Cos[x_ + y_] :> Cos[x] (-1)^(y/Pi)/;IntegerQ[y/Pi],
- Sec[Times[n_,v_]] :> Sec[Abs[n] v]/;NumberQ[n] && Im[n]==0&& n<0,
- Csc[Times[n_,v_]] :> -Csc[Abs[n] v]/;NumberQ[n] && Im[n]==0&& n<0,
- Cos[Times[n_,v_]] :> Cos[Abs[n] v]/;NumberQ[n] && Im[n]==0&& n<0,
- Sin[Times[n_,v_]] :> -Sin[Abs[n] v]/;NumberQ[n] && Im[n]==0&& n<0
- }
-
- TrigRuleConv[ u_ ] :=
- Module[ {answer},
- answer = u/.TrigRuleConv1;
- If[ answer=!=u,answer,answer = u/.TrigRuleConv2;
- If[answer=!=u,answer,u/.TrigRuleConv3]]]
-
- TrigRuleConv1 = {
- Sin[u_] Cos[v_] :> (Sin[Expand[u-v]] + Sin[Expand[u+v]])/2
- }
-
- TrigRuleConv2 = {
- Cos[u_] Cos[v_] :> (Cos[Expand[u-v]] + Cos[Expand[u+v]])/2
- }
-
- TrigRuleConv3 = {
- Sin[u_] Sin[v_] :> (Cos[Expand[u-v]] - Cos[Expand[u+v]])/2
- }
-
- LogTrig = {
- Cos[ArcSin[w_]]^m_. :> (1-w^2)^(m/2),
- Cos[ArcTan[w_]]^m_. :> 1/(1+w^2)^(m/2),
- Sec[ArcCos[w_]]^m_. :> w^(-m),
- Sec[ArcSin[w_]]^m_. :> (1-w^2)^(-m/2),
- Sec[ArcTan[w_]]^m_. :> (1+w^2)^(m/2),
- Sin[ArcCos[w_]]^m_. :> (1-w^2)^(m/2),
- Sin[ArcTan[w_]]^m_. :> w^m/(1+w^2)^(m/2),
- Csc[ArcSin[w_]]^m_. :> w^(-m),
- Csc[ArcCos[w_]]^m_. :> (1-w^2)^(-m/2),
- Csc[ArcTan[w_]]^m_. :> (1+w^2)^(m/2)/w^m,
- Tan[ArcSin[w_]]^m_. :> w^m/(1-w^2)^(m/2),
- Tan[ArcCos[w_]]^m_. :> (1-w^2)^(m/2)/w^m,
- Cot[ArcCos[w_]]^m_. :> w^m/(1-w^2)^(m/2),
- Cot[ArcSin[w_]]^m_. :> (1-w^2)^(m/2)/w^m,
- ArcTan[Tan[w_]]^m_. :> w^m,
- Log[w_^n_] :> n Log[w]
- }
-
- HBfun = {
- Sinh[v_] :> E^v (1-E^(-2 v))/2,
- Cosh[v_] :> E^v (1+E^(-2 v))/2,
- Sech[v_] :> 2 E^(-v)/(1+E^(-2 v)),
- Csch[v_] :> 2 E^(-v)/(1-E^(-2 v))
- }
-
- TrRuleE = {
- Sin[v_+w_] :> Sin[v] Cos[w] + Cos[v] Sin[w],
- Cos[v_+w_] :> Cos[v] Cos[w] - Sin[v] Sin[w]
- }
-
- ExpandIntoTrig = {
- Sin[w_] :> Sin[Expand[w]],
- Cos[w_] :> Cos[Expand[w]]
- }
-
- TrigMultArg = {
- Cos[n_Integer u_] :>
- Sum[(-1)^k Binomial[n,2 k] Sin[u]^(2 k) Cos[u]^(n-2 k),
- {k,0,Floor[n/2]}],
- Sin[n_Integer u_] :>
- Sum[(-1)^k Binomial[n,2 k+1] Sin[u]^(2 k+1) Cos[u]^(n-2 k-1),
- {k,0,Floor[(n-1)/2]}]
- }
-
- HypergeometricURule = {
- HypergeometricU[a_,b_,z_. E^(2 I arg[c_/;Znak[c]])] :>
- E^(-2 I arg[c] b) HypergeometricU[a,b,z] +
- (1 - E^(-2 I arg[c] b)) Gamma[1-b]/Gamma[1+a-b] Hypergeometric1F1[a,b,z],
- HypergeometricU[1,1,z_/;Znak[z]] :> -E^z ExpIntegralEi[-z],
- HypergeometricU[1,1,z_/;!Znak[z]] :> E^z ExpIntegralE[1,z],
- HypergeometricU[1/2,1/2,z_/;!Znak[z]] :> Sqrt[Pi] E^z Erfc[Sqrt[z]],
- HypergeometricU[a_,b_,z_/;!Znak[z]] :> Pi^(-1/2) E^(z/2) z^(1/2-a) *
- BesselK[a-1/2,z/2]/;Expand[b-2 a]===0
- }
-
-