MathGroup Archive 2011

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

Search the Archive

Re: Bad Precision output for SphericaBesselY and

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123084] Re: Bad Precision output for SphericaBesselY and
  • From: Richard Fateman <fateman at cs.berkeley.edu>
  • Date: Wed, 23 Nov 2011 07:04:14 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <201111221036.FAA28073@smc.vnet.net> <jag4aa$6n$1@smc.vnet.net>

On 11/22/2011 4:24 AM, Oliver Ruebenkoenig wrote:
> On Tue, 22 Nov 2011, Antonio Alvaro Ranha Neves wrote:
>
>> Dear users,
>>
>> Recently I'm working with precision calculations of spherical functions. Example, let,
>>
>> n = 150
>> x = SetPrecision[120.3, 100]
>> BesselY[n + 1/2, x] // Precision
>> BesselJ[n+ 1/2, x] // Precision
>>
>>
>> Yields 67.2708 and 96.9297 respectively. The two questions are:
>> 1) Why does BesselY results in a worse than BesselJ?
>> 2) How to redefine, BesselY to automatically output a result with a desired pecision?
>>
>> Note: Simply using N[expr,90], does not yield a result of expr with 90 precision but maintains the same 67.2708.
>>
>> Thanks,
>> Antonio
>>
>>
>>
>
> Antonio,
>
> you could use exact arithmetic and only later derive the numeric
> quantities.
>
> n = 150
> x = 1203/10
> BesselY[n + 1/2, x] // Precision
> BesselJ[n + 1/2, x] // Precision
>
> N[BesselY[n + 1/2, x], 100] // Precision
> N[BesselJ[n + 1/2, x], 100] // Precision
>
> gives a precision of 100. for both.
>
> Oliver
>

First of all, you should realize that x is approximately
120.299999999999997157829056959599256515502929687500000000000000000000\
0000000000000000000000000000000

and perhaps you mean
z=SetPrecision[1203/10, 100]  which is
120.300000000000000000000000000000000000000000000000000000000000000000\
0000000000000000000000000000000

The way Mathematica works is that it assumes that all the digits beyond 
100 are garbage, instead of (say) filling with zero.

This means it sometimes operates as if it has insufficient information 
in the input to satisfy your demands for precision in the output.

If you want to find
100 digits in the answer, you could try using exact numbers until the 
last N operation:

N[BesselJ[150+1/2, 1203/10,  100]

Which provides 100 digits of precision.

RJF









  • Prev by Date: Re: How to get sub-list elements at certain position in a long list
  • Next by Date: Re: NIntegrate to compute LegendreP approximations to functions
  • Previous by thread: Re: Bad Precision output for SphericaBesselY and
  • Next by thread: Re: Bad Precision output for SphericaBesselY and BesselY