Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

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

Search the Archive

Re: Bad Precision output for SphericaBesselY and BesselY

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123178] Re: Bad Precision output for SphericaBesselY and BesselY
  • From: Peter Falloon <pfalloon at gmail.com>
  • Date: Fri, 25 Nov 2011 04:57:24 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jafud8$rrr$1@smc.vnet.net> <jalcav$snk$1@smc.vnet.net>

On Nov 24, 11:12 pm, Antonio Alvaro Ranha Neves <ane... at gmail.com>
wrote:
> 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:

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

Cheers,
Peter.



  • 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