MathGroup Archive 2011

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

Search the Archive

Re: Bad Precision output for SphericaBesselY and BesselY

On Nov 24, 11:12 pm, Antonio Alvaro Ranha Neves <ane... at>
> Thank you Oleksander, Peter, Oliver, and Richard for the reply.
> @Oleksander
> Why is Rationalize[120.3] better than SetPrecision[120.3, Infinity]?
> Each command gives me a rational output,
> 1203/10
> And
> 8465359924572979/70368744177664
> Respectivaly.
> I used 120.3 as an example, but my actual number is an irrational number with a high precision (output of a findroot)
> @Peter
> I really liked the FindRoot solution to the problem. It inspired me to write,
> ListMap=ParallelTable[Replace[p,FindRoot[Precision[BesselY[n+1/2,SetPrecisi on[x,p]]]==90,{p,90},Evaluated->False]],{x,100},{n,100}];
> ListPlot3D[ListMap,Mesh->None,ColorFunction->"SouthwestColors"]
> Maybe this will shed some light on how the precision is affected by BesselY[n+1/2,x] algorithm. As one can see, when x is approximately n the required precision is maximum, and when x>n there are some =93instabilities=9 4.

FWIW, I think this loss of precision is an unavoidable feature of
these functions -- and not just an artifact of the calculation method.
It comes about because the function is a (finite) sum of terms with
alternating signs and a large range of magnitudes, such that the final
result is much smaller than its largest terms.

The following gives a feel for this:

n = 150;
besselYTerms[x_] = List @@ Expand @ BesselY[n + 1/2, x]
ListPlot[Sign[#]Log[Abs[#]] & /@ besselYTerms[120.3`100]]


  • Prev by Date: Re: Bad Precision output for SphericaBesselY and BesselY
  • Next by Date: Re: Root finding needs higher accuracy
  • Previous by thread: Re: Bad Precision output for SphericaBesselY and BesselY
  • Next by thread: How to get sub-list elements at certain position in a long list