Re: Reconstructing data points from a InterpolatingFunction object
- To: mathgroup at smc.vnet.net
- Subject: [mg66516] Re: Reconstructing data points from a InterpolatingFunction object
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Wed, 17 May 2006 03:30:41 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <e4bits$1a9$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Eckhard Schlemm wrote:
> Hello everyone,
>
> My question is probably rather simple to answer but I just don't know how to
> do it.
>
> I am nummerically solving a differential equation using NDSolve and then I
> want to apply a NonlinearFit on the resulting InterpolatingFunction
> object....and therefore need to have access to the data points which NDSolve
> created and from which the InterpolatingFunction is created....Is there any
> fast and direct way to get these data points ? (There must be....)
>
> Thanks in advance
>
> Eckhard
>
>
Hi Eckhard,
Although you can always manipulate the result of NDSolve as any
expression (see In[1]), using the functions located in the package
"InterpolatingFunctionAnatomy" (see In[3] and In[4])should be easier and
better since they are version independent:
"[...] occasionally it is useful to access the data inside [of the
interpolating function], which includes the actual values and points
NDSolve computed when taking steps.
The exact structure of an InterpolatingFunction object is arranged to
make the data storage efficient and evaluation at a given point fast.
This structure may change between Mathematica versions, so code which is
written in terms of accessing parts of InterpolatingFunction objects may
not work with new versions of Mathematica.
The DifferentialEquations`InterpolatingFunctionAnatomy` package provides
an interface to the data in an InterpolatingFunction object which will
be maintained for future Mathematica versions [1]."
In[1]:=
sol = NDSolve[{Derivative[1][y][x] == y[x],
y[1] == 2}, y, {x, 0, 3}]
FullForm[sol[[1,1,2]]]
In[3]:=
Needs[
"DifferentialEquations`InterpolatingFunctionAnatomy`"]
In[4]:=
Names[
"DifferentialEquations`InterpolatingFunctionAnatomy`*"]
Out[4]=
{InterpolatingFunctionCoordinates,InterpolatingFunctionDerivativeOrder,\
InterpolatingFunctionDomain,InterpolatingFunctionGrid,\
InterpolatingFunctionInterpolationOrder,InterpolatingFunctionValuesOnGrid}
Best regards,
Jean-Marc
[1]
http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DifferentialEquations/NDSolve/DifferentialEquationsUtilityPackages/InterpolatingFunctionAnatomy.html