Re: NIntegrate and speed
- To: mathgroup at smc.vnet.net
- Subject: [mg116792] Re: NIntegrate and speed
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Mon, 28 Feb 2011 05:00:48 -0500 (EST)
On 2/27/11 at 4:35 AM, marco.masi at ymail.com (Marco Masi) wrote:
>I have the following problems with NIntegrate.
>1) I would like to make the following double numerical integral
>converge without errors
>R = 8000; Z = 1; rd = 3500; NIntegrate[Exp[-k Abs[Z]]/(1 + (k
>rd)^2)^1.5 (NIntegrate[Cos[k R Sin[\[Theta]]], {\[Theta], 0,
>\[Pi]}]), {k, 0, \[Infinity]}]
>It tells non numerical values present and I don't understand why,
>since it evaluates finally a numerical value? 0.000424067
You are getting an error since when the inner integral is
initially sampled, k hasn't been assigned a value. You can do
the double integral without the error by doing:
In[3]:= NIntegrate[
Exp[-k Abs[Z]]/(1 + (k rd)^2)^1.5 Cos[k R Sin[\[Theta]]], {\[Theta],
0, \[Pi]}, {k, 0, \[Infinity]}]
Out[3]= 0.000424068
That is, to do a double integral you do not need to type
NIntegrate twice. And by using this syntax, the algorithm being
used can immediately see k is to be assigned numerical values
during the integration.