 
 
 
 
 
 
Re: Calculus and InterpolatingFunction
- To: mathgroup at smc.vnet.net
- Subject: [mg121657] Re: Calculus and InterpolatingFunction
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Sat, 24 Sep 2011 22:33:08 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201109221125.HAA26698@smc.vnet.net>
- Reply-to: drmajorbob at yahoo.com
Interpolation does give "an explicit function" in any sense of "explicit"  
that I can think of. The problem you ran into is (IMHO) a "bug" or  
"feature lack" in Integrate. It should call NIntegrate when necessary, but  
it did not, in the OP's example.
Bobby
On Fri, 23 Sep 2011 02:45:03 -0500, Murray Eisenberg  
<murray at math.umass.edu> wrote:
> Two remaining problems:
>
> (1) The Documentation Center page for Interpolation says, "Interpolation
> returns an InterpolatingFunction object, which can be used like any
> other pure function."
>
>     Manifestly that is not the case. Thus the following, for a pure
> function, _does_ work:
>
>    f = #^2 &
>    Integrate[f[x] + 1, {x, 1, 10}]
>
> (2) While the solutions you proposed both work, the latter using Map
> would be problematic for integrands involving the InterpolatingFunction
> in more complicated ways, e.g.:
>
>     f = Interpolation[data];
>     Integrate[#, {x, 1, 10}] & /@ (Sin[f[x]])
> 0.576208
>     NIntegrate[Sin[f[x]], {x, 1, 10}]
> 0.607007
>
> Is there some way to obtain an explicit function from an
> InterpolatingFunction object?
>
>
> On 9/22/11 7:25 AM, Bob Hanlon wrote:
>> data = RandomReal[#]*2&  /@ Range[1, 10];
>>
>> f = Interpolation[data];
>>
>> Integrate[f[x], {x, 1, 10}]
>>
>> 52.9041
>>
>> Use NIntegrate
>>
>> NIntegrate[f[x] + 1, {x, 1, 10}]
>>
>> 61.9041
>>
>> Or Map over the expression
>>
>> Integrate[#, {x, 1, 10}]&  /@ (f[x] + 1)
>>
>> 61.9041
>>
>>
>> Bob Hanlon
>>
>> ---- Just A Stranger<forpeopleidontknow at gmail.com>  wrote:
>>
>> =============
>> I'm trying to get a definite integral for an InterpolatingFunction. It  
>> works
>> if it is the function by itself, but not for some reason arithmetically
>> combining the InterpolatingFunction with another function makes it not
>> return a value. e.g.
>>
>>
>> In[1]:=
>> data = RandomReal[#]*2&  /@ Range[1, 10];
>> f = Interpolation[data];
>>
>>>   Integrate[f[x], {x, 1, 10}]
>> Out[1]:=40.098
>>
>> So far so good. But just a little bit of arithmetic in the integral and  
>> it
>> doesn't work anymore:
>> In[2]:=
>> Integrate[f[x]+1, {x, 1, 10}]
>> Out[2]:=
>> Integrate[Plus[1, InterpolatingFunction[][x]], List[x, 1, 10]]
>>
>> (That last answer was actually the output with  //FullForm applied)
>> Why won't it give me a numerical evaluation? Is there anyway to make a
>> continuous function from data that will seemlessly work with Integrate?  
>> I'm
>> thinking of constructing a piecwise function using Fit, Piecwise, and a
>> Table for the arguments to Piecewise. But I would think  Interpolation  
>> might
>> have worked and been easier. I want to figure out if I am I doing  
>> something
>> wrong with Interpolation before I start trying to tackle a slightly more
>> complicated piecewise defined function ?
>>
>>
>
-- 
DrMajorBob at yahoo.com
- Follow-Ups:
- Re: Calculus and InterpolatingFunction
- From: Murray Eisenberg <murray@math.umass.edu>
 
 
- Re: Calculus and InterpolatingFunction
- References:
- Re: Calculus and InterpolatingFunction
- From: Bob Hanlon <hanlonr@cox.net>
 
 
- Re: Calculus and InterpolatingFunction

