# inverse Laplace transform; inverse_laplace(a_ and b_,s_,x_):=inverse_laplace(a,s,x) and inverse_laplace(b,s,x); inverse_laplace(a_ = b_,s_,x_):=inverse_laplace(a,s,x) = inverse_laplace(b,s,x); inverse_laplace(a_ + b_,s_,x_):=inverse_laplace(a,s,x) + inverse_laplace(b,s,x); #inverse_laplace(laplace(a_,x_,s_)*s_^m_, s_,x_) := d(a,x,m); inverse_laplace(laplace(a_,x_,s_)*s_, s_,x_) := d(a,x); inverse_laplace(laplace(a_,x_,s_), s_,x_) := a; inverse_laplace(x(s_),s_,x_):= x(x); inverse_laplace(x(s_)*s_,s_,x_):= d(x(x),x); inverse_laplace(x(s_)*s_^n_,s_,x_):= d(x(x),x,n); inverse_laplace(y(s_),s_,x_):= y(x); inverse_laplace(y(a_+s_),s_,x_):= y(x)*exp(-a*x); inverse_laplace(y(s_)*s_,s_,x_):= d(y(x),x); inverse_laplace(y(s_)*s_^n_,s_,x_):= d(y(x),x,n); inverse_laplace(y(a_+s_)*s_^n_,s_,x_):= E(-n,(-n)!*d(exp(-a*x),x,n)); inverse_laplace(log(s_),s_,x_):= -1/x; inverse_laplace(log(s_+a_),s_,x_):= -exp(-a*x)/x; inverse_laplace(log(s_)*s_^n_,s_,x_):=if(n<0, (-log(x)+logGamma(-n))*x^(-1-n)/gamma(-n)); inverse_laplace(log(s_)*s_^(-2),s_,x_):= -log(x)*x-gamma*x+x; inverse_laplace(log(s_)/(s_+a_),s_,x_):=if(a<0, exp(-a*x)*(log(-a)-Ei(a*x)) ); inverse_laplace((a_+s_)^n_, s_,x_) := if(isfree(a,n,s), exp(-a*x)*x^(-1-n)/(-n-1)!); inverse_laplace((a_-s_)^n_, s_,x_) := if(isfree(a,n,s), (-1)^n*exp(a*x)*x^(-1-n)/(-n-1)!); inverse_laplace(s_^n_, s_,x_) := if(n==-1, 1,x^(-n-1)/(-n-1)!); inverse_laplace(sqrt(s_), s_,x_) := 1/sqrt(pi*x); inverse_laplace(sqrt(a_*s_), s_,x_) := if(isfree(a,s), sqrt(a)/sqrt(pi*x) ); inverse_laplace(sqrt(a_+s_), s_,x_) := if(isfree(a,s), -1/2*1/sqrt(pi*x^3)*exp(-a*x) ); inverse_laplace((a_+s_)^n_*s_, s_,x_) := if(isfree(a,n,s), (-a)*exp(-a*x)*x^(-1-n)/(-n-1)!+exp(-a*x)*x^(-2-n)/(-2-n)!); inverse_laplace((a_+s_)^n_*s_^m_, s_,x_) := if(isfree(a,n,m,s), if(n>0 and n==-m-1, exp(-a*x)/n!*d(exp(a*x)*x^n,x,n), d(exp(a*x)*x^n,x,n)/(-n-1)! )); inverse_laplace((1+a_/s_)^n_/s_, s_,x_) := if(isfree(a,n,s) and n>0, exp(-a*x)/n!*d(exp(a*x)*x^n,x,n) ); inverse_laplace((b_+s_)/(a_+(b_+s_)^2),s_,x_):=if(hasnot(a,b,s), cos(sqrt(a)*x)*exp(-b*x)); #inverse_laplace(s_^b_/(s_^a_+c_),s_,x_) :=if(b==-a, mittag(abs(a),-c*x^abs(a)), x^(-1-b)*mittag(abs(a),-b,-c*x^abs(a))); inverse_laplace(s_^b_/(s_^a_+c_),s_,x_) := mittag(abs(a),-c*x^abs(a)); inverse_laplace(s_^n_/(a_+s_^2), s_,x_) := if(isfree(a,s), a^((n-1)/2)*sin(n,sqrt(a)*x)); inverse_laplace(s_/(a_+s_^2), s_,x_) := if(isfree(a,s), cos(sqrt(a)*x)); inverse_laplace(s_/(s_+a_)*1/(s_+b_), s_,x_) := if(isfree(a,b,s), b*exp(-b*x)/(a-b)-a*exp(-a*x)/(a-b) ); inverse_laplace(s_/(c_+b_*s_+s_^2),s_,x_):=if(b*b==4c, exp(-b/2*x)*(1-x),exp(-b/2*x)*(cosh(sqrt(b*b-4c)*x/2)-b*sinh(sqrt(b*b-4c)*x/2)/sqrt(b*b-4c))); inverse_laplace(s_/(s_^2+b_*s_), s_,x_) := if(hasnot(b,s),exp(-b*x)); inverse_laplace(s_/(s_^2+s_), s_,x_) := exp(-x); inverse_laplace(s_*(s_^2+1)^(-2), s_,x_) := sin(x)*x/2; inverse_laplace(1/(c_+s_^a_),s_,x_) := mittag(a,-c*x^a); inverse_laplace(1/(c_+b_*s_^a_),s_,x_) := mittag(a,-c/b*x^a)/b; inverse_laplace(1/(a_+s_^2), s_,x_) := if(isfree(a,s), sin(sqrt(a)*x)/sqrt(a)); inverse_laplace(1/(a_+(b_+s_)^2),s_,x_):=if(hasnot(a,b,s), sin(sqrt(a)*x)/sqrt(a)*exp(-b*x)); inverse_laplace(1/(b_*s_+a_), s_,x_) := if(isfree(a,b,s), exp(-a/b*x)/b); inverse_laplace(1/(s_+z_), s_,x_) := if(isfree(z,s), exp(-x*z)); inverse_laplace(1/(-s_+a_), s_,x_) := if(isfree(a,s), -exp(a*x)); inverse_laplace(1/(s_^2+a_*s_), s_,x_) := if(isfree(a,s), 1/a-exp(-a*x)/a ); inverse_laplace(1/(s_^2+s_), s_,x_) := 1-exp(-x); inverse_laplace(1/(a_+s_^0.5), s_,x_) := if(isfree(a,s), 1/sqrt(pi*x)-a*exp(a^2*x)*erfc(a*sqrt(x)) ); inverse_laplace(1/(c_+b_*s_+s_^2),s_,x_):= if(b*b==4c, exp(-b/2*x)*x,2exp(-b/2*x)*sinh(sqrt(b*b - 4 c)*x/2)/sqrt(b*b - 4 c)); inverse_laplace(1/(a_+s_)*s_^(-0.5), s_,x_) := if(isfree(a,s), exp(-a*x)*erf(sqrt(-a*x))/sqrt(-a) ); inverse_laplace(1/(a_+s_)*s_^(-2), s_,x_) := if(isfree(a,s), exp(-a*x)/a^2+x/a-1/a^2); inverse_laplace(1/(a_+s_^2)*s_^(-2), s_,x_) := if(isfree(a,s), -sin(sqrt(a)*x)/a^(3/2)+x/a); inverse_laplace(1/(s_+a_)*1/(s_+b_), s_,x_) := if(isfree(a,b,s), exp(-b*x)/(a-b)-exp(-a*x)/(a-b) ); inverse_laplace(1/(s_+a_)*1/(s_^2+b_), s_,x_) := if(isfree(a,b,s), exp(-a*x)/(a^2+b)+a*sin(sqrt(b)*x)/(a^2+b)/sqrt(b)-cos(sqrt(b)*x)/(a^2+b) ); inverse_laplace(1/(a_+s_)*1/(b_+s_^0.5), s_,x_) := if(isfree(a,b,s), 2E(0.5,-b*sqrt(x)) ); inverse_laplace(1/s_*1/(a_+s_^2), s_,x_) := if(isfree(a,s), 1/a-1/a*cos(sqrt(a)*x)); inverse_laplace(1/s_*1/(c_+b_*s_+s_^2),s_,x_):= if(b*b==4c, -exp(-b/2*x)*(4/b*b+2/b*x), 2cosh(sqrt(b*b - 4 c)*x/2)/sqrt(b*b - 4 c)); inverse_laplace(s_,s_,x_) := 0; inverse_laplace(y_,s_):=inverse_laplace(y,s,x); inverse_laplace(y_):=inverse_laplace(y,x,x);