Message Boards Message Boards

0
|
4608 Views
|
6 Replies
|
1 Total Likes
View groups...
Share
Share this post:

Use float limits with Integrate?

Posted 6 years ago

I am a little confused with how Mathematica is integrating with Integrate. I am trying to compute an internal of the product of special functions (modified Bessel functions) with symbolic limits. After working for a minute, the computation stops with no success. However, if I carry out the same integral, but with floating point limits, it spits out an answer. What's going on here? When I give Integrate floating point limits is it reverting to NIntegrate?

Thanks, Jeff

Edit: Here's an example. See how it fails even with rational limits?

In[1]:= (*Doesn't evaluate*)
        Integrate[BesselK[1, k r] BesselI[1, k r], {r, 1/2, 3/2}]

Out[1]//InputForm= Integrate[BesselI[1, k*r]*BesselK[1, k*r], {r, 1/2, 3/2}]

In[2]:= (*Evaluates with float limits*)
         Integrate[BesselK[1, k r] BesselI[1, k r], {r, .5, 1.5}]

Out[2]= -0.0705237 MeijerG[{{0.5, 0.5}, {}}, {{0., 1.}, {-1., -0.5}}, 0.5 k, 0.5] + 
 0.211571 MeijerG[{{0.5, 0.5}, {}}, {{0., 1.}, {-1., -0.5}}, 1.5 k, 0.5]
POSTED BY: Jeffram Olander
6 Replies

Wow. sigh I'm using Mathematica 9. So it works in both an earlier and a later version. Thanks guys.

POSTED BY: Jeffram Olander

This is what I get on my old-fashioned Mma 7

In[1]:= Integrate[BesselI[0, x] BesselK[1, x]/x^2, {x, 1/2, 3/2}] // InputForm


Out[1]//InputForm=
16/9 - (Pi^(3/2)*(MeijerG[{{-1/2, 0}, {-1/4, 1/4, 1}}, 
     {{0, 0, 0}, {-1, -1, -1/4, 1/4}}, 3/2, 1/2] - 
    4*MeijerG[{{1/2, 1}, {3/4, 5/4, 2}}, {{1, 1, 1}, 
       {0, 0, 3/4, 5/4}}, 1/2, 1/2]))/2
POSTED BY: Hans Dolhaine

And here is the latest and greatest

In[4]:= $Version
Out[4]= "11.3.0 for Microsoft Windows (64-bit) (March 7, 2018)"

In[5]:= Integrate[BesselI[0, x] BesselK[1, x]/x^2, {x, 1/2, 3/2}]
Out[5]= 2/9 (8 + \[Pi]^(
    3/2) (9 MeijerG[{{1/2, 1}, {3/4, 5/4, 2}}, {{1, 1, 1}, {0, 0, 3/4,
           5/4}}, 1/2, 1/2] - 
      MeijerG[{{1/2, 1}, {3/4, 5/4, 2}}, {{1, 1, 1}, {0, 0, 3/4, 5/
         4}}, 3/2, 1/2]))

In[6]:= % // N
Out[6]= 1.45921

In[7]:= Integrate[BesselI[0, x] BesselK[1, x]/x^2, {x, .5, 1.5}]
Out[7]= 1.45921

Can you explain this?

It's a neverending story to explain software (implementations). Nevertheless Mathematica has an overwhelming strong relation to science and there it's quite usual to switch to numerical results (in contrast to symbolic ones) if the user chooses to give numerical input. Compare

In[8]:= 1/2
Out[8]= 1/2

In[9]:= 1/2.
Out[9]= 0.5

nothing obscure in that.

POSTED BY: Dent de Lion

Has seemingly to do with argument $k r$:

In[5]:= Integrate[BesselK[1, k r] BesselI[1, k r], {r, 1/2, 3/2}, Assumptions -> k \[Element] Complexes]
Out[5]= Integrate[BesselI[1, k r] BesselK[1, k r], {r, 1/2, 3/2}, Assumptions -> k \[Element] Complexes]

stating that $k \in \mathbb{C}$ does not help, so substitute the argument

    In[7]:= Integrate[BesselK[1, x] BesselI[1, x]/k, {x, k/2, 3 k/2}, 
                      Assumptions -> k \[Element] Complexes]

    Out[7]= (1/(4 k Sqrt[\[Pi]]))
            (-MeijerG[{{1, 1}, {}}, {{1/2, 3/2}, {-(1/2), 0}}, k/2, 1/2] + 
              MeijerG[{{1, 1}, {}}, {{1/2, 3/2}, {-(1/2), 0}}, (3 k)/2, 1/2]
            )
POSTED BY: Dent de Lion
When I give Integrate floating point limits is it reverting to NIntegrate?

no, by no means: NIntegrate[] returns a number (possibly with conditions), but you got a symbolic result parametrized by reals:

In[1]:= Integrate[(r k)^2, {r, 1/2, 3/2}]
Out[1]= (13 k^2)/12

In[2]:= NIntegrate[(r k)^2 , {r, 0.5, 1.5}]

During evaluation of In[2]:= NIntegrate::inumr: The integrand k^2 r^2 has evaluated to non-numerical values for all sampling points in the region with boundaries {{0.5,1.5}}.

Out[2]= NIntegrate[(r k)^2, {r, 0.5, 1.5}]
POSTED BY: Dent de Lion
Posted 6 years ago

Hi Dent de Lion,

I really appreciate your investigation of my problem. You are correct that they argument $kr$ seems to be to blame for some of these computation failures. However, even with a simple argument, Integrate acts differently for float limits than for rational limits. Can you explain this?

For example,

In[1]:= Integrate[BesselI[0, x] BesselK[1, x]/x^2, {x, 1/2, 3/2}] // InputForm

Out[1]//InputForm=Integrate[(BesselI[0, x]*BesselK[1, x])/x^2, {x, 1/2, 3/2}]

In[2]:= Integrate[BesselI[0, x] BesselK[1, x]/x^2, {x, .5, 1.5}]

Out[2]= 1.45921

Thanks, Jeff

POSTED BY: Updating Name
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract