MathGroup Archive 2006

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

Search the Archive

Re: numerical derivatives at very high x-values: precision problem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg64039] Re: [mg64021] numerical derivatives at very high x-values: precision problem
  • From: Pratik Desai <pdesai1 at umbc.edu>
  • Date: Sat, 28 Jan 2006 02:24:05 -0500 (EST)
  • References: <200601271013.FAA19073@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Nadir Kaplan wrote:

>Hi,
>
>When calculating partial numerical derivatives, namely the formula [f(x+h,
>y)-f(x-h, y) ] / (2h), at very high x values, let's say x~10^12 , I should
>  
>
I think you can do this using NDSolve`FiniteDifferenceDerivative in the 
NDSolve Advanced Documentation

Hope this helps

Pratik

>choose h=(10^a)*|x| where x should be <-16 in order to get accurate results.
>We know that the MachineEpsilon is approx. 2.2*10^(-16) , but I think I
>should somehow use a number less than that for h, otherwise the answers are
>not satisfiying. How will I do this in order to get high precision (or
>accuracy) ? I added SetPrecision command everywhere, but it seems it didn't
>work out well, besides it looks dumb (or not? I'm new at Mathematica ). 
>
> 
>
>Any help will be appreciated...
>
> 
>
>The values are f.e. (from a set of recursion relations) :
>
>----------------------------------------------------------------------------
>
>J[40]= 1.12970494019605678505771742460*10^12
>
>mu[40]= 3.38911605114868836337349826143*10^12
>
>V[40]= -8.47278910237611083984375000000*10^11
>
>T1[40]= 5.64852470100879638671875000000*10^11
>
> 
>
>The function to be partial-differentiated:
>
>------------------------------------------------------------
>
>lngamma1[J_, mu_, V_, t1_]:=
>
>  Module[{mu2, U1, U2, Umax}, mu2=SetPrecision[mu/(2*d), 30];
>
>                  U1=SetPrecision[0, 30];
>
>                  U2=SetPrecision[1.5*mu2+func1[0.5*mu2, t1], 30];
>
>                  Umax= Max[U1, U2];
>
> 
>SetPrecision[Umax+Log[Exp[U1-Umax]+2*Exp[U2-Umax]*func2[0.5*mu2, t1]], 30]
>
>                ]
>
> 
>
>The derivative formula:
>
>----------------------------------------------------------------
>
>derivt1[func_, J_, mu_, V_, t1_]:= 
>
>  Module[  {h}, h=SetPrecision[10^-15*Abs[t1],30] ; 
>
>    SetPrecision[(func[J, mu, V, t1+h]-func[J, mu, V, t1-h])/(2*h), 30]
>
>    ]
>
> 
>  
>




  • Prev by Date: Re: When does Mathematica display a message?
  • Next by Date: Re: Deleting Selective DownValues
  • Previous by thread: numerical derivatives at very high x-values: precision problem
  • Next by thread: Re: numerical derivatives at very high x-values: precision problem