Re: Integrating x^b*Log[x]^m gives wrong result?
- To: mathgroup at smc.vnet.net
- Subject: [mg85448] Re: [mg85434] Integrating x^b*Log[x]^m gives wrong result?
- From: Kees van Schaik <keesvanschaik at gmail.com>
- Date: Mon, 11 Feb 2008 06:04:54 -0500 (EST)
- References: <20080210084609.26Y7U.24492.root@eastrmwml03.mgt.cox.net>
Thanks to everybody for the quick and clear answers! Apparently I'm still not aware enough of limitations of machine size precision arithmetic as I never guessed this could be the reason for the result actually getting a wrong sign and be so completely wrong, not just a relatively small error margin away from the 'exact' answer... Thanks again, Kees Bob Hanlon wrote: > It is a precision issue > > Clear[x, m]; > > f1[m_] := Integrate[x^(-7/2)*Log[x]^m, {x, 5, 10}]; > > f2[m_] := NIntegrate[x^(-3.5)*Log[x]^m, {x, 5, 10}]; > > f3[m_] := Integrate[x^(-3.5)*Log[x]^m, {x, 5, 10}]; > > f4[m_] := Integrate[x^(-3.5`25)*Log[x]^m, {x, 5, 10}]; > > v = {25, 40}; > > Machine precision: > > N[f1 /@ v] > > {403155.55804573477, -4.183061773182904*^16} > > Extended precision: > > N[f1 /@ v, 20] > > { > 403156.30667862031262341904898345961`19.99999999999\ > 9996, > 6.3361619293717813936101205761`20.000000000000007*^\ > 10} > > Machine precision: > > f1 /@ N[v] > > {403156.25, 0.} > > Extended precision: > > f1 /@ N[v, 23] > > {403156.306678620312623419`13.159208013405054, > 6.3361619293717814121`1.6036615637884584*^10} > > Numerical integration: > > f2 /@ v > > {403156.306678621, 6.3361619293717926*^10} > > Machine precision: > > f3 /@ v > > {401853.125, -5.48409663189581*^23} > > Extended precision: > > f4 /@ v > > {403156.3066786203126239621`14.540465311148813, > 6.335827093390950705`2.984895910513547*^10} > > > Bob Hanlon > > ---- KvS <keesvanschaik at gmail.com> wrote: > >> Dear all, >> >> I'm running into the following problems with symbolic vs. numerical >> integration of the function x^(-3.5)*Log[x]^m: >> >> In[564]:= >> ClearAll["Global`*"]; >> f1[m_]:=N[Integrate[x^(-3.5)*Log[x]^m,{x,5,10}]]; >> f2[m_]:=NIntegrate[x^(-3.5)*Log[x]^m,{x,5,10}]; >> Map[f1,{5,10,25,40}] >> Map[f2,{5,10,25,40}] >> >> Out[567]= {0.145434,4.62609,401145.,-9.30763*10^23} >> Out[568]= {0.145434,4.62609,403156.,6.33616*10^10} >> >> Of course the symbolic integration is wrong here since it shouldn't >> yield a negative number. If the recursive formula resulting from >> partial integration is used, things seem to go wrong as well: >> >> In[572]:= >> f[m_]:=(-1/2.5)*(10^(-2.5)*Log[10]^m-5^(-2.5)*Log[5]^m)+(m/ >> 2.5)*f[m-1]; >> f[0]=(-1/2.5)*(10^(-2.5)-5^(-2.5)); >> Map[f,{5,10,25,40}] >> >> Out[574]= {0.145434,4.62609,403156.,-2.54037*10^16} >> >> So the result for m=25 still coincides with the one from NIntegrate, >> while Integrate already gives something different; for m=40 the result >> is different from both NIntegrate and Integrate (and wrong as it is >> negative). If one changes the negative power of x to a positive one, >> things seem ok btw. >> >> Any clues what might be going on here? >> >> Thanks in advance, Kees >> >> In[533]:= $Version >> Out[533]= 6.0 for Microsoft Windows (32-bit) (April 27, 2007) >> >> > > >