Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I believe this question is best illustrated with a simple example. If I run

FunctionInterpolation[NIntegrate[a + b, {a, 0, 1}], {b, 0, 1}]

I get errors of the form

NIntegrate::inumr: The integrand a+b has evaluated to non-numerical values for all 
sampling points in the region with boundaries {{0,1}}.

So I guess Mathematica is evaluating the expression before plugging in values and trying to interpolate it. Admittedly the code does yield apparently correct results, so I could just turn off the error message and be done with it, but I'd like to address the root cause if possible. Is there some more correct way to do what I'm trying to do that would not spit out an error message in the first place?

share|improve this question
add comment

1 Answer

up vote 5 down vote accepted

You could define a function which is evaluated only when its argument is numeric :

int[b_?NumericQ] := NIntegrate[a + b, {a, 0, 1}]

FunctionInterpolation[int[b], {b, 0, 1}]
share|improve this answer
    
Ah, good idea, that could work. It'd be nice to avoid having to define a separate function, though. –  David Z Jul 31 '12 at 9:00
3  
There is an article here support.wolfram.com/kb/3820 that helps explain why you should use NumericQ. –  Searke Jul 31 '12 at 19:19
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.