confusion about sampled points in NIntegrate[...,Method->Oscillatory]
- To: mathgroup at smc.vnet.net
- Subject: [mg70085] confusion about sampled points in NIntegrate[...,Method->Oscillatory]
- From: dimmechan at yahoo.com
- Date: Mon, 2 Oct 2006 00:34:26 -0400 (EDT)
Dear all, I posted this message again since of his unreadable format there was no response. I will concentrate only on my queries ommiting unecessary details. ----------------------------------------------------------------------- I am very confused about the points sampled by NIntegrate when the option Method->Oscillatory is selected. Remove["Global`*"] $Version 5.2 for Microsoft Windows (June 20, 2005) Consider the following rapidly oscillatory function hh[x_]:=ArcTan[3/x] Sin[-9 x] Here is its plot Plot[hh[x],{x,0,10},PlotPoints\[Rule]1000]; Here is the analytic result of the integral over the range {x,0,Infinity} Integrate[hh[x],{x,0,Infinity}]//N -0.1745329251991049 Here is one numerical estimation NIntegrate[hh[x],{x,0,Infinity},Method\[Rule]Oscillatory] -0.174532925199098 Previous command is equivalent to NIntegrate[hh[x],{x,0,3(1/9)Pi}]+NSum[NIntegrate[hh[x],{x,k(1/9)Pi,(k+1)(1/9)Pi}],{k,3,Infinity},Method\[Rule]SequenceLimit,VerifyConvergence\[Rule]False] NIntegrate::nlim: x = 0.349066 k is not a valid limit of integration. -0.17453292519909863 Here is the number of sampled points. Block[{Message},Length[Reap[NIntegrate[hh[x],{x,0,3(1/9)Pi},EvaluationMonitor\[RuleDelayed]Sow[x]]+NSum[NIntegrate[hh[x],{x,k(1/9)Pi,(k+1)(1/9)Pi},EvaluationMonitor\[RuleDelayed]Sow[x]],{k,3,Infinity},Method\[Rule]SequenceLimit,VerifyConvergence\[Rule]False]][[2,1]]]] 374 Below is another implementation psum[i_?NumberQ]:=NIntegrate[hh[x],{x,i(1/9)Pi,(i+1)(1/9)Pi}] NSum[psum[i],{i,0,Infinity},Method\[Rule]SequenceLimit,VerifyConvergence\[Rule]False] -0.1745329251991767 Consider now the following function which keeps track of the points at which is evaluated, in a list called sampledPoints. sampledPoints={}; f[x_?InexactNumberQ]:=(AppendTo[sampledPoints,x];-ArcTan[3/x]) Then NIntegrate[f[x]*Sin[9x],{x,0,Infinity},Method\[Rule]Oscillatory] -0.17453292519909797 However, executing the following command someone get the idea that there are almost 4000 sampling points! Length[sampledPoints] 3894 I do not understand why now exists this big difference in the sampling points. Note that executing the next commands show that the two approaches (the first with Reap...Sow, the second with AppendTo) give the same list of sample points. Block[{Message},Length[Reap[NIntegrate[f[x]*Sin[9x],{x, 0,Infinity},EvaluationMonitor\[RuleDelayed]Sow[x]]][[2,1]]]] 286 sampledPoints={}; Block[{Message},NIntegrate[f[x]*Sin[9x],{x,0,Infinity}]] 1.8915013450362048 Length[sampledPoints] 286 Note also that you cannot apply the Reap...Sow approach directly since Reap[NIntegrate[f[x]Sin[9x],{x, 0,Infinity},Method\[Rule]Oscillatory,EvaluationMonitor\[RuleDelayed]Sow[x]]] {-0.17453292519909797, {{x}}} I really appreciate some guidance. Thanks in advance for any assistance. Dimitrios Anagnostou NTUA