MATLAB Answers

Problem computing inverse Laplace transform of the Bessel function

16 views (last 30 days)
Kevin B
Kevin B on 11 Nov 2017
Answered: BeeTiaw on 5 Aug 2020
I am trying to evaluate the inverse Laplace transform of a function that includes the modified Bessel function of the second kind, i.e., my function is f_s = sqrt(a*s)*besselk(1,2*sqrt(a*s)), where a is a constant (say a = 0.5) and 's' is defined as a symbol. To evaluate the inverse Laplace transform of this function, I used the built-in Matlab function 'ilaplace' as transV = ilaplace(f_s,s,t), where I want to evaluate my function at 't' = 2. However, the problem I am getting is that the inverse transformed expression transV still contains 's' variable, which I supposed to transform to 't' after the inverse Laplace transform.
Can anyone help me with what is the problem with this approach? I checked the Matlab documentation and still couldn't figure out the solution. I already tried using 'vpa' function as it was suggested in one of the Matlab forums, but that didn't help to get rid of 's'. I am stuck with this and would really appreciate any help on it.
My code is
a = 0.5; t = 2;
syms s;
f_s = 1/s*sqrt(a*s)*besselk(1,2*sqrt(a*s));
transV = ilaplace(f_s,t); % or transV = vpa(ilaplace(f_s,t));
With this, the final result transV still has an expression which is a function of 's' although it should be transformed after ilaplace.


David Goodmanson
David Goodmanson on 11 Nov 2017
Hi Kevin,
It appears that the result is just a slightly different inverse laplace transform that the toolbox can't do either. Might not exist in closed form.
Kevin B
Kevin B on 11 Nov 2017
Hi David,
Thanks for your suggestion. Yes, the closed form solution seems not to exist. I tried Mathematica to check if it can help but without success. For me, the numerical solution is fine for now and I am not able to get that either. Do you have any further suggestions to get the numerical solution? Thanks a ton!

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 11 Nov 2017
Maple says that for a > 0, the result is (1/2)*exp(-a/t)


Kevin B
Kevin B on 11 Nov 2017
Thanks very much for your help. Could you please check if it can solve the product of sum of two functions. I actually need to get the product of sums of f_s in my original post, in which case f_s will be modified to:
f_s = 1/s*(sqrt(a1*s)*besselk(1,2*sqrt(a1*s))+sqrt(a2*s)*besselk(1,2*sqrt(a2*s)))*(sqrt(a3*s)*besselk(1,2*sqrt(a3*s))+sqrt(a4*s)*besselk(1,2*sqrt(a4*s)));
where a1, a2, a3, a4 > 0. For Matlab, I was not able to get the solution even for the single term, that's why my original post was a simplified problem.
Walter Roberson
Walter Roberson on 11 Nov 2017
Under the assumption that a1, a2, a3, a4, s are all > 0, then
(1/2)*(BesselK(1, 2*a2^(1/2)*a3^(1/2)/t)*exp((-a3-a2)/t)*a2^(1/2)*a3^(1/2)+BesselK(1, 2*a1^(1/2)*a4^(1/2)/t)*exp((-a4-a1)/t)*a4^(1/2)*a1^(1/2)+BesselK(1, 2*a2^(1/2)*a4^(1/2)/t)*exp((-a4-a2)/t)*a4^(1/2)*a2^(1/2)+BesselK(1, 2*a1^(1/2)*a3^(1/2)/t)*exp((-a3-a1)/t)*a1^(1/2)*a3^(1/2))/t

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by