Re: Mystery: NIntegrate'ing indeterminate-length integrand!
- To: mathgroup at smc.vnet.net
- Subject: [mg44069] Re: Mystery: NIntegrate'ing indeterminate-length integrand!
- From: bobhanlon at aol.com (Bob Hanlon)
- Date: Mon, 20 Oct 2003 01:13:39 -0400 (EDT)
- References: <bmt8pu$892$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
You might want to try a piecewise definition such as the following
Integrate[
Sum[(UnitStep[x-k]-UnitStep[x-k-1])*Sum[Power[x,Power[i,-1]],{i,1,k}],{k,
8}],{x,1,8}]//Simplify
87/2 + 7*2^(3/7) + (1364*Sqrt[2])/105 + (20*2^(3/5))/3 +
(32*2^(3/4))/5 - (9*3^(1/3))/4 - (25*5^(1/5))/6 -
(36*6^(1/6))/7 - (49*7^(1/7))/8
%//N
68.1464
Bob Hanlon
In article <bmt8pu$892$1 at smc.vnet.net>, frankeye at cox.net (Frank Iannarilli)
wrote:
<< Here's a mystery to me: (I split the expression to help visually)
NIntegrate[
{x,1.,8.}]
Sum[ Power[x,Power[i,-1]], {i,1,IntegerPart[x]} ],
evaluates successfully (albeit with convergence warning: I got 68.14).
My understanding (verified by TracePrint) is that NIntegrate[]
evaluates the integrand expression, expanding it "all the way down"
while holding the integration variable (x) unevaluated. But in the
above, how can Sum[] know the number of terms to which to expand the
expression before NIntegrate[] instantiates a numeric value for x?
Shouldn't things "get stuck"?
The reason I'm wondering about this is Mathematica is crashing on attempting
to evaluate what I take to be a structurally similar integrand. To be
specific, I'm integrating the Mie scattering expression over a range
of size parameters - the Mie expression itself is a summation of
terms, with the number of terms (Wiscombe limit) being determined by
the size parameter (integration variable).
When I evaluate that, the kernel crashes (every time, irregardless of
integration limits: Mathematica5.0, Win2kPro, P4 512MB RAM). But I can
numerically integrate the same expression "by hand", so the expression
itself is not defective.
Could this "Mie integration" expression simply be expanding, as it is
evaluated, to such an internal size that the kernel is overwhelmed?
And how does the first NIntegrate[] above work?