a simple integral
- To: mathgroup at smc.vnet.net
- Subject: [mg68577] a simple integral
- From: dimmechan at yahoo.com
- Date: Wed, 9 Aug 2006 23:57:39 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Hi to all.
Let me consider the symbolical and numerical evaluation of the very
simple integral
of BesselJ[0,x] from x=0..Infinity; this integral has the well known
value 1.
In[1]:=
$Version
Out[1=
5.2 for Microsoft Windows (June 20, 2005)
Mathematica of course, suceeds in providing this value, however with
the appearance of a strange message (strange because as it will be seen
Mathematica is able to provide a range of convergence w.r.t. the order
of BesselJ)
In[2:=
Integrate[BesselJ[0,x],{x,0,8}]//InputForm
\!\(\*
RowBox[{\(Integrate::"gener"\), \(\(:\)\(\ \)\), "\<\"Unable to check
convergence. \\!\\(\\*
ButtonBox[\\\"More...\\\", ButtonStyle->\\\"RefGuideLinkText\\\",
\
ButtonFrame->None, ButtonData:>\\\"Integrate::gener\\\"]\\)\"\>"}]\)
Out[2]//InputForm=
1
However, if I execute the following command
In[3]:=
Integrate[BesselJ[n,x],{x,0,8},Assumptions\[Rule]Re[n]\[Equal]0]
Out[3]//InputForm=
1
everything is Ok.
Of course, someone, knowing that the integral converges to 1, could
just supress the message
In[4]:=
Block[{Message},Integrate[BesselJ[0,x],{x,0,8}]]//InputForm
Out[4]//InputForm=
1
However, I believe this is not the case here. Why exists this message
(here)?
Moreover, consider the following command
In[5]:=
Integrate[BesselJ[n,x],{x,0,8}]//InputForm
Out[5]//InputForm=
If[Re[n] > -1, 1, Integrate[BesselJ[n, x], {x, 0, Infinity},
Assumptions -> Re[n] <= -1]]
However
In[6]:=
Integrate[BesselJ[-3,x],{x,0,8}]
>From In[6]:=
\!\(\*
RowBox[{\(Integrate::"gener"\), \(\(:\)\(\ \)\), "\<\"Unable to check
convergence. \\!\\(\\*
ButtonBox[\\\"More...\\\", ButtonStyle->\\\"RefGuideLinkText\\\",
\
ButtonFrame->None, ButtonData:>\\\"Integrate::gener\\\"]\\)\"\>"}]\)
Out[6]=
-1
In[7]:=
Integrate[BesselJ[-4,x],{x,0,8}]
>From In[7]:=
\!\(\*
RowBox[{\(Integrate::"gener"\), \(\(:\)\(\ \)\), "\<\"Unable to check
convergence. \\!\\(\\*
ButtonBox[\\\"More...\\\", ButtonStyle->\\\"RefGuideLinkText\\\",
\
ButtonFrame->None, ButtonData:>\\\"Integrate::gener\\\"]\\)\"\>"}]\)
Out[7]=
1
results witch are in accordance with:
In[8]:=
{BesselJ[-3,x],BesselJ[-4,x]}//InputForm
Out[8]//InputForm=
{-BesselJ[3, x], BesselJ[4, x]}
Am I missing something here?
Next, I evaluate numerically the integral. The integrand is a very
slowly convergent function.
However, the Option Method->Oscillatory cannot be applied here.
In[9]:=
NIntegrate[BesselJ[0,x],{x,0,8},Method\[Rule]Oscillatory]//InputForm
>From In[9]:=
\!\(\*
RowBox[{\(NIntegrate::"oscfm
"\), \(\(:\)\(\ \)\), "\<\"With Method->Oscillatory,
the integrand should be a
product of an oscillatory function w[x] and another function f[x] ,
as \
NIntegrate[ w[x] f[x],{x,a,Infinity}, Method->Oscillatory]. The
function w \
should be Sin, Cos, BesselJ, or BesselY, and f[x] should be of the form
a + b \
x^n for constant a and b. \\!\\(\\*ButtonBox[\\\"More...\\\", \
ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \
ButtonData:>\\\"NIntegrate::oscfm\\\"]\\)\"\>"}]\)
Out[9]//InputForm=
NIntegrate[BesselJ[0, x], {x, 0, Infinity}, Method -> Oscillatory]
In[10]:=
??Oscillatory
Oscillatory is a choice for the option Method of NIntegrate. Method ->
\
Oscillatory should be used only with integrands that contain one of the
\
following oscillating functions: w in {Sin, Cos, BesselJ, BesselY},
i.e. f[x] \
w[x], and where the 1-dimensional range of integration contains at
least one \
Infinity. The arguments to the oscillating functions should not be \
polynomials, but be some multiple of the integration variable in some
power \
(e.g. Sin[a_. x_^r_.] instead of Sin[a_. x_^r_. +b_.]). When
Bessel-functions \
are used the method might be slow.
\!\(\*
InterpretationBox[GridBox[{
{\(Attributes[Oscillatory] = {Protected}\)}
},
GridBaseline->{Baseline, {1, 1}},
ColumnAlignments->{Left}],
Definition[ "Oscillatory"],
Editable->False]\)
>From above information is not clear to me why the Option
Method->Oscillatory cannot be applied here.
As it can be found in
http://support.wolfram.com/mathematica/kernel/Symbols/System/Oscillatory.html
(see also
http://groups.google.gr/group/comp.soft-sys.math.mathematica/browse_thread/thread/84a8822fadbd8c8c/0fae4e6d5618462d?lnk=gst&q=oscillatory+&rnum=1#0fae4e6d5618462d)
In[11]:=NIntegrate[Sin[x]/(1 + x^2), {x, 0, Infinity}, Method ->
Oscillatory]
Out[11]= 0.646761
is equivalent to
In[12]:= NIntegrate[Sin[x]/(1 + x^2), {x, 0, 3 Pi}] +
NSum[NIntegrate[Sin[x]/(1 + x^2), {x, k Pi, (k + 1) Pi}],
{k, 3, Infinity}, Method -> SequenceLimit,
VerifyConvergence -> False]
Out[12]= 0.646761
The mysterious become even bigger consider that Method->Oscillatory
gives the right answer
for the following integral
In[13]:=
Integrate[BesselJ[0,x]BesselJ[1,x],{x,0,8}]//InputForm
Out[13]//InputForm=
1/2
In[14]:=
Block[{Message},NIntegrate[BesselJ[0,x]BesselJ[1,x],{
x,0,8},Method\[Rule]Oscillatory]]//InputForm
Out[14]//InputForm=
0.5000000000000006
Of course the first integral can be easily obtained working as follows:
In[15]:=
Needs["NumericalMath`"]
In[16]:=
lst=BesselJZeros[0,20];
In[17]:=
lst[[0]]=0;
In[18]:=
f[n_]:=NIntegrate[BesselJ[0,x],{x,lst[[n]],lst[[n+1]]}]
In[19]:=
SequenceLimit[FoldList[Plus,0,Table[f[i],{i,0,19}]]]//InputForm
Out[19]//InputForm=
1.0000000000001095
but I keep wondering if it can be evaluated directly by Mathematica
without any "assistance".
Any help will be really appreciate.