Re: NDSolve
- To: mathgroup at smc.vnet.net
- Subject: [mg4390] Re: NDSolve
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Mon, 15 Jul 1996 09:51:54 -0400
- Organization: University of Western Australia
- Sender: owner-wri-mathgroup at wolfram.com
Aleksey Nudelman wrote:
> Hi
> I am trying to find out what all these numbers in the Interpolaing
> function means.(I could figure out that on every step Mathematica
> stores value of the current argument,value of the argument at the
> previos step,function and its derivative)
Hon-Wa Tam, formerly from WRI sent me the following note on the
Structure of One-dimensional InterpolatingFunctions:
Interpolation uses Newton polynomials to construct an interpolation
table. The object InterpolatingFunction[ range, table ] consists of
the range of the interval and the table. Each element of table is
responsible for a subinterval (t_{n-1}, t_n]. A table element has the
structure
{ t_n, t_{n-1}, divided differences, coefficients }
The order of the particular polynomial for (t_{n-1}, t_n] is equal to
Length[ coefficients ].
Interpolation within (t_{n-1}, t_n] is done by
dvdf[1] + ( x - (t_n-coeff[1]) ) * dvdf[2] +
( x - (t_n-coeff[1]) ) * ( x - (t_n-coeff[2]) ) * dvdf[3] + ...
Each table has a degenerate element whose subinterval is of width 0.
This is for the purpose of finding the right subinterval by binary
search.
InterpolatingFunction objects can be constructed by Interpolation[] or
by NDSolve[].
If an InterpolatingFunction object is constructed by Interpolation[],
we have t_{n-1} < t_n in each table element. This is also true for
NDSolve[] when the given initial point is at the left of the domain, as
in:
NDSolve[ { y'[x] == y[x], y[0] == 1 }, y, { x, 0, 1 } ]
In this normal case, the degenerate subinterval is on the left-hand
side and is the first element of the interpolation table.
However, NDSolve can also integrate in the negative direction:
NDSolve[ { y'[x] == y[x], y[0] == 1 }, y, { x, 0, -1 } ]
In this case all subintervals are processed "backward" and we have
t_{n-1} t_n. The degenerate subinterval is now on the right-hand side
and is the last element of the interpolation table.
It is also possible that some subintervals are in the positive, and
some in the negative direction:
NDSolve[ { y'[x] == y[x], y[0] == 1 }, y, { x, -1, 1 } ]
Here the degenerate subinterval is somewhere in the middle of the
interpolation table.
Cheers,
Paul
_________________________________________________________________
Paul Abbott
Department of Physics Phone: +61-9-380-2734
The University of Western Australia Fax: +61-9-380-1014
Nedlands WA 6907 paul at physics.uwa.edu.au
AUSTRALIA http://www.pd.uwa.edu.au/Paul
Black holes are where God divided by zero
_________________________________________________________________
==== [MESSAGE SEPARATOR] ====