Re: RE: Re: Function evaluation
- To: mathgroup at smc.vnet.net
- Subject: [mg17628] Re: [mg17613] RE: [mg17605] Re: [mg17550] Function evaluation
- From: BobHanlon at aol.com
- Date: Fri, 21 May 1999 03:37:27 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Ted,
Using your definition of the function
f[0,_]=0;
f[s_,n_]:=BesselK[0,n*(1-s)]-BesselK[0,n]*BesselI[0,n*(1-s)]/BesselI[0,n];
Table[f[0., n], {n, 0.01, 1.0, 0.01}]
{0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 2.220446049250313*^-16, 0., 0., 0.,
1.110223024625156*^-16, 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
1.110223024625156*^-16, 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 5.551115123125782*^-17, 0., 0., 0., 0., 0.}
Note by the presence of non-zero values that your definition is not applied
if the value of the first argument is entered as the real number zero, i.e.,
0. vice 0
A definition should not be so fragile as to depend on whether a value is
entered
in its real or exact (e.g., integer or rational) form.
This is a common problem when handling special values of functions.
Therefore, I make a habit of always using a test of the form s==0 or x==1/2
to handle special cases for the parameters or arguments. This works whether
the argument is entered as an exact number or real.
Consequently, I would still recommend
f[s_/; s==0,n_]:=0;
The unnecessary use of the n, i.e., n_ vice _, is just a personal preference.
Bob Hanlon
In a message dated 5/18/99 7:11:14 AM, ErsekTR at navair.navy.mil writes:
>I thought Bob would have done better. The following is much simpler, and
>more efficient.
>Regards,
>Ted Ersek
>--------------------
>
>f[0,_]=0;
>
>f[s_,n_]:=BesselK[0,n*(1-s)]-BesselK[0,n]*BesselI[0,n*(1-s)]/BesselI[0,n];
>
>--------------------
>
>>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.
>>
>
>
>Bob Hnlon's solutionn was:
>---------------
>
>Handle the case for s==0 separately:
>
>f[s_/; s==0,n_]:=0;
>
>f[s_,n_]:=BesselK[0,n*(1-s)]-BesselK[0,n]*BesselI[0,n*(1-s)]/BesselI[0,n];
>