[Date Index]
[Thread Index]
[Author Index]
Re: RE: NIntegrate - problems with HoldAll property(?) - the
*To*: mathgroup at smc.vnet.net
*Subject*: [mg73217] Re: RE: NIntegrate - problems with HoldAll property(?) - the
*From*: gotcha <david.shorthouse at credit-suisse.com>
*Date*: Thu, 8 Feb 2007 03:31:58 -0500 (EST)
Hi I have the solution to my problems. For reference I give them below
Problem:
========
I want to NIntegrate the equivalent of the functions:
f1[x_] := Module[{res,y},
res = First[Position[{1, 3, 5, 7, 9, Infinity}, y_ /; y>= x, Infinity, 1]];
res[[1]]
]
NIntegrate[f1[i], {i, 0,7}]
and
f2[x_] := Module[{res,y},
res = First[Position[{1, 3, 5, 7, 9, Infinity}, y_ /; y>= x, Infinity, 1]];
{ res[[1]],{a,b,c,d} }
]
NIntegrate[f2[i][[1]], {i, 0,7}]
Both of the NIntegrates fail because the "i" variable does not get resolved to a number at the time of the calls to f1 and f2
Solution to f1
==============
Quite a few people gave me the answer for f1[]. If I define the function so it only takes a numeric input, the NIntegrate function resolves the "i" variable to a number before the call. I'm not sure why this works but I am glad it does.
So this works:
f1[(x_)?NumericQ] := Module[{res,y},
res = First[Position[{1, 3, 5, 7, 9, Infinity}, y_ /; y>= x, Infinity, 1]];
res[[1]]
]
NIntegrate[f1[i], {i, 0,7}]
But this doesn't:(!!)
f2[(x_)?NumericQ] := Module[{res,y},
res = First[Position[{1, 3, 5, 7, 9, Infinity}, y_ /; y>= x, Infinity, 1]];
{ res[[1]],{a,b,c,d} }
]
NIntegrate[f2[i][[1]], {i, 0,7}]
It gives a numeric result but the wrong one! Because the "i" variable is not resolved to a number this time, my definition of f2 does not even get called, so we are essentially doing:
NIntegrate[i, {i, 0,7}]
Solution to f2
==============
After a bit of fiddling I finally got f2 to work, as follows:
f2[(x_)?NumericQ] := Module[{res,y},
res = First[Position[{1, 3, 5, 7, 9, Infinity}, y_ /; y>= x, Infinity, 1]];
{ res[[1]],{a,b,c,d} }
]
f3[(x_)?NumericQ] := f2[x][[1]]
NIntegrate[f3[i], {i, 0,7}]
Having a "pure" function in the integral seems to allow the NIntegrate to resolve the "i" variable to a number before the call to f3, so all is well again
I'm still a little confused but I am able to continue. Thanks for all the help
David
Prev by Date:
**Re: Passing a list as seperate parameters?**
Next by Date:
**Re: Integrating SphericalHarmonicY**
Previous by thread:
**Re: (in)dependent variables in DSolve: need explanation.**
Next by thread:
**Unwrap list of angles**
| |