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