MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Problem with spline function object in Mathematica 6

  • To: mathgroup at smc.vnet.net
  • Subject: [mg95772] Re: Problem with spline function object in Mathematica 6
  • From: dh <dh at metrohm.com>
  • Date: Tue, 27 Jan 2009 06:56:26 -0500 (EST)
  • References: <gletej$4mm$1@smc.vnet.net>


Hi,

using splines in a 1dim context seems like an overkill.

Use e.g. Interpolation:

f=Interpolation[SplineTable];

The derivative is simply:

f'. E,g,:

Plot[f'[x],{x,0,64}]

hope this helps, Daniel



borisov at sas.upenn.edu wrote:

> Hello,

> 

> 

> Here is a description of what I am trying to do. I have a tabulated

> monotonically increasing function (imagine mass contained in concentric balls

> with increasing radius). I need to obtain an interpolating function which

> preserves the monotonicity. I also need the derivative of the original function

> - the density (and it needs to be positive everywhere). For that I use spline as

> polynomial interpolations do not satisfy these requirements. I was able to

> obtain the derivative of the spline object via a method described before on

> MathGroup. As I need the density as a function of distance and the spline

> function object is a parametric object in the end I need the inverse functions

> which give me the parameter in terms of the distance. The current problem I

> have is that the spline object is only correctly evaluated if the argument is a

> number. If it is a symbol it automatically evaluates to the same symbol. I am

> providing an arbitrary table for the original function.

> 

> Here is my current code:

> SplineTable={{0,0},{1,1},{2,8},{3,27},{4,64}};

> Spl=SplineFit[SplineTable,Cubic];

> derivSpline=ReplacePart[Spl,Map[Append[Rest[#]*{1,2,3},0]&,Spl[[4]],{2}],4];

> dMdr[x_]:=Last[derivSpline[x]]/First[derivSpline[x]];

> drdt[x_] := First[derivSpline[x]];

> sol3 = NDSolve[{param[0]==0,(param'[x]-(1/drdt[param[x]]))==0},param,{x,0,4}]

> 

> 

> So again the problem I have is that drdt[param[x]] evaluates to param[x]

> automatically (and immediately gives a division by 0 error in NDSolve) instead

> of attempting to evaluate param[x] to a number first.

> The same happens with dMdr[x]. My goal in the end will be to evaluate

> dMdr[param[x]] correctly when supplied with x.

> 

> I would also appreciate to know if there is an easier way to get the derivative

> in terms of distance from the original table while satisfying the physical

> requirements.

> Thanks in advance: Alexander Borisov.

> 




  • Prev by Date: Re: Partial derviatives in mathematica
  • Next by Date: Re: Clever Tricky Solutions
  • Previous by thread: Re: Problem with spline function object in Mathematica 6
  • Next by thread: Re: Problem with spline function object in Mathematica 6