Hi,
I am trying to integrate a function which is approximately constant
over the range of the integration. The function is as follows:
 
> my.fcn = function(mu){
+ m = 1000
+ z = 0
+ z.mse = 0
+ for(i in 1:m){
+ z[i] = rnorm(1, mu, 1)
+ z.mse = z.mse + (z[i] - mu)^2
+ }
+ return(z.mse/m)
+ }

> my.fcn(-10)
[1] 1.021711
> my.fcn(10)
[1] 0.9995235
> my.fcn(-5)
[1] 1.012727
> my.fcn(5)
[1] 1.033595
> my.fcn(0)
[1] 1.106282
> 
The function takes the value (approx) 1 over the range of mu. So the
integration result should be close to 20 if we integrate over (-10, 10).
But R gives:

> integrate(my.fcn, -10, 10)
685.4941 with absolute error < 7.6e-12

> integrate(Vectorize(my.fcn), -10, 10)  # this code never terminate
 
I have seen in the "?integrate" page it is clearly written:
 
If the function is approximately constant (in particular, zero) over
nearly all its range it is possible that the result and error estimate
may be seriously wrong. 
 
But this doesn't help in solving the problem.
Thanks,
Santanu


 
JPSM, 1218J Lefrak Hall
University of Maryland, College Park
Phone: 301-314-9916
 
 

	[[alternative HTML version deleted]]

