NIntegrate

• To: mathgroup at smc.vnet.net
• Subject: [mg71408] NIntegrate
• From: "dimitris" <dimmechan at yahoo.com>
• Date: Fri, 17 Nov 2006 04:30:33 -0500 (EST)

```Clear["Global`*"]

Consider the following simple function

f[x_] := Exp[-5*x^2] + 1/2

As far as I know the default setting for the option Method of
NIntegrate is the Gauss-Kronrod algorithm for 1D integrals.

In view of this note I can't understand the difference between the
outputs of

Reap[NIntegrate[f[x], {x, -3, 3}, Method -> Automatic,
EvaluationMonitor :> Sow[x]]]
Length[%[[2,1]]]

and

Reap[NIntegrate[f[x], {x, -3, 3}, Method -> GaussKronrod,
EvaluationMonitor :> Sow[x]]]
Length[%[[2,1]]]

The following user defined functions will demostrate better the
difference in the sampled points between the two settings of the Method
option:

NIntSampledPointsPlot[f_, {x_, a_, b_}, method_, {optsint___},
{optsplot___}] :=
Block[{lst = {}}, lst = Reap[NIntegrate[f, {x, a, b}, Method ->
method, optsint, EvaluationMonitor :> Sow[x]]];
ListPlot[lst[[2,1]], optsplot, PlotLabel ->
StringJoin["method\[Rule]", ToString[method], ",  sampled points: ",
ToString[Length[lst[[2,1]]]], "\nestimate value: ",
ToString[lst[[1]]]]]]

NIntLinePlot[f_, {x_, a_, b_}, method_, {optsint___}, {optsplot___}] :=

Block[{lst = {}, ff}, ff = Function[{x}, f]; lst = Reap[NIntegrate[f,
{x, a, b}, Method -> method, optsint,
EvaluationMonitor :> Sow[x]]]; Show[(Graphics[{Red, Line[{{#1,
0}, {#1, ff[#1]}}]}] & ) /@ lst[[2,1]], optsplot]]

Then

(NIntSampledPointsPlot[f[x], {x, -3, 3}, #1, {PrecisionGoal -> 20,
WorkingPrecision -> 30},
{ImageSize -> 600, PlotStyle -> PointSize[0.01], Frame -> {True,
True, False, False},
TextStyle -> {FontFamily -> "Times"}}] & ) /@ {GaussKronrod,
Automatic}
(*plot to be displayed*)

Show[GraphicsArray[(NIntLinePlot[Exp[-5*x^2] + 1/2, {x, -3, 3}, #1, {},
{Frame -> True, DisplayFunction -> Identity,
PlotLabel -> ToString[#1]}] & ) /@ {Automatic, GaussKronrod}],
ImageSize -> 800]
(*plot to be displayed*)