Help-Integration of Bessel functions

9 次查看(过去 30 天)
Hello. I want to calculate the symbolic definite integrals including Bessel function of first kind and modified Bessel function of second kind:
and
I've tried with the int() function, but matlab returns: int(z*besselj(0, z)^4, z, 0, a) (for the first integral). Similarly, for the second integral returns int(z*besselk(0, z)^4, z, a, Inf). Is there a way to calculate these integrals? I'm new to matlab, and I need some advice
Thank you!

采纳的回答

Roger Stafford
Roger Stafford 2016-4-7
编辑:Walter Roberson 2016-4-7
It is likely that an explicit expression for either of those integrals as functions of 'a' is not known in mathematics and therefore not known to the symbolic toolbox or mupad. However, in the case of your integrals, cumulative numerical integration such as given by the matlab function 'cumtrapz' can give you a numerical result for an entire vector of increasing values of 'a' for any desired size of increment and do this with only one call on the function.
[Note: I wrote a cubic cumulative integration function for the File Exchange called 'cumint3' which can be accessed at:
For a smooth integrand such as you have, 'cumint3' might well be more accurate than 'cumtrapz' for the same size steps.]
  2 个评论
Nikolaos Xenidis
Nikolaos Xenidis 2016-4-8
Thank you both for the immediate answers! After all, I solved my problem simply by giving "a" a real constant value. This was possible for the problem I tried to solve. By the way, I have one more question, out of topic. What can quad() do, that integral() can't?
Roger Stafford
Roger Stafford 2016-4-8
Actually it's the other way around. The 'integral' function is more recent and has more capabilities than 'quad'. For example the limits of integration for 'integral' may be infinite, whereas that is not permitted for 'quad'. Read about 'integral' at:
http://www.mathworks.com/help/matlab/ref/integral.html

请先登录,再进行评论。

更多回答(2 个)

Roger Stafford
Roger Stafford 2016-4-7
Use numerical integration with matlab's 'integral' function or one of the other quadrature functions.
  1 个评论
Nikolaos Xenidis
Nikolaos Xenidis 2016-4-7
编辑:Nikolaos Xenidis 2016-4-7
I think matlab's "integral()" accepts only real numbers (float) for the upper and the down bound of the integral. In my case, "a" is a symbolic number - there is the problem

请先登录,再进行评论。


Walter Roberson
Walter Roberson 2016-4-7
MuPad does not know how to do these integrals.
I find, though, a table of integrals that is relevant: http://www.eah-jena.de/~rsh/Forschung/Stoer/besint.pdf . If you look on page 391 of the pdf, the indefinite int(x*J[sub 0](x)^4) integral is given as x*J[sub 0](x)^3 + 3 * X[sub 1][super (22)](x) where earlier on that page it shows X[sub 1][super (22)](x) = int( x * J[sub 0](x)^2 * J[sub 1](x)^2
That X[sub 1][super (22)](x) seems to be listed as a basic integral. I do not see any applicable formula that would allow that to be further broken down, but I might have overlooked it.
  2 个评论
Nikolaos Xenidis
Nikolaos Xenidis 2016-4-7
Thank you for the answer. I've already seen this page before, put the indefinite integral I[sub 1][super (22)](x) is also difficult to compute. I tried it on matlab before, but I have the same problem as above. So, I converted an uncomputable integral to another uncomputable integral :P
Walter Roberson
Walter Roberson 2016-4-7
Not all integrals have closed forms. (There is a body of theory that shows that there are integrals that cannot have closed forms over a body of standard operations. The proof is well beyond my skills, though.)
And sometimes it happens that the expanded terms cancel or combine in interesting ways that make the expansion worth while.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Bessel functions 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by