Re: Function evaluation
- To: mathgroup at smc.vnet.net
- Subject: [mg17611] Re: Function evaluation
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Tue, 18 May 1999 02:45:16 -0400
- Organization: University of Western Australia
- References: <7hgdks$4c6@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
phpcp at csv.warwick.ac.uk wrote: > I have a function defined as > > f[s_,n_]:=BesselK[0,n*(1-s)]-BesselK[0,n]*BesselI[0,n*(1-s)]/BesselI[0,n] > > We can see that at s=0, f is zero. but mathematica returns a small number, > i think it is the workingprecision. I have tried to change the working > precision, but that does not help. the function still evaluates to a > 10^-16 number. I am using this function to define other functions. Ccan > someone help me find a way to evaluate this function correctly. For your function, In[1]:= f[s_,n_]:=BesselK[0,n*(1-s)]-BesselK[0,n]* BesselI[0,n*(1-s)]/BesselI[0,n] Mathematica has no problem for s exactly 0. In[2]:= f[0,n] Out[2]= 0 A numerical problem can arise if both s and n are floating point numbers: In[3]:= f[0., 80.] -52 Out[3]= 3.34096 10 or if n is very large: In[4]:= f[0., 1000] -448 Out[4]= 0. 10 You could always treat s=0. (i.e. a floating point 0) as a special case: In[5]:= f[0.,n_] := 0 In[6]:= f[0.,1000] Out[6]= 0 Note that you can control the precision of the arguments using SetPrecision (via `) In[7]:= f[0.`40, 1000`40] -472 Out[7]= 0. 10 Cheers, Paul ____________________________________________________________________ Paul Abbott Phone: +61-8-9380-2734 Department of Physics Fax: +61-8-9380-1014 The University of Western Australia Nedlands WA 6907 mailto:paul at physics.uwa.edu.au AUSTRALIA http://www.physics.uwa.edu.au/~paul God IS a weakly left-handed dice player ____________________________________________________________________