Re: analytic integration of InterpolatingFunction compositions
- To: mathgroup at smc.vnet.net
- Subject: [mg74087] Re: analytic integration of InterpolatingFunction compositions
- From: dh <dh at metrohm.ch>
- Date: Fri, 9 Mar 2007 02:03:14 -0500 (EST)
- References: <eslsu8$q6c$1@smc.vnet.net>
Hi Roman, As I saw that you did not get any better answer, you may try re-interpolation: e.g. to integrate f^2: Choose some points to evaluate f, calculate f^2 at this points, calculate a new interpolation function and integrate. E.g.: f=y/.First[NDSolve[{y'[x]\[Equal]x*y[x]^2,y[0]\[Equal]1},y,{x,0,1}]]; dat=Table[{x,f[x]^2},{x,0,1,0.1}]; f2=Interpolation[dat]; Integrate[f2[x],{x,0,1}] Daniel Roman wrote: > Hello all: > > When I have a simple InterpolatingFunction[] object from an NDSolve[] > call, I know I can analytically integrate this by using Integrate[]. > However, what I want to do is analytically integrate compositions of > such InterpolatingFunction[] objects, which Integrate[] cannot handle. > For example, let > > f = y /. First[NDSolve[{y'[x] == x*y[x]^2, y[0] == 1}, y, {x, 0, > 1}]] > > Now I want to integrate f[x]^2: > > NIntegrate[f[x]^2, {x, 0, 1}] > > works fine. But this being an interpolating function, it seems to me > that one could get a much faster and more accurate result by analytic > integration. Unfortunately, > > Integrate[f[x]^2, {x, 0, 1}] > > does not compute. > > In principle one could extract the interpolation grid from f[x] and > set up an analytic integration "by hand", using > NumericalMath`ListIntegrate`, but this quickly becomes nasty, > especially if you integrate products of different > InterpolatingFunction objects like > > NIntegrate[f[x]*g[x], {x, 0, 1}] > > which are both results of NDSolve[] and thus may be using different > grid points. > > Does anyone have any suggestions on how to do these integrals > properly? Or how to coax NIntegrate[] into realizing that it should > use a grid which matches those of the various InterpolatingFunction > objects in its argument? > > Cheers! > Roman. > >