0

There are some functions implemented in the Wolfram Language related to Airy functions. For example, AiryAi, AiryAiZero or AiryAiPrime, etc.

How do I implement the AiryAiPrimeZero and AiryBiPrimeZero functions?

I've only found this website related to the problem. This question is kind of related to my previous question.

user153012
  • 501
  • 4
  • 10

1 Answers1

2

Using the expressions derived in this paper, we have the following:

SetAttributes[aiPrimeZero, Listable]; 
aiPrimeZero[s_Integer, prec_: MachinePrecision] := With[{t = N[3 π (4 s - 3)/8, prec]}, 
  FixedPoint[# - AiryAiPrime[#]/(# AiryAi[#]) &,
             -t^(2/3) Fold[#1/t^2 + #2 &,
                           {18683371/1244160, -181223/207360, 35/288, -7/48, 1}]]]

SetAttributes[biPrimeZero, Listable]; 
biPrimeZero[s_Integer, prec_: MachinePrecision] := With[{t = N[3 π (4 s - 1)/8, prec]}, 
  FixedPoint[# - AiryBiPrime[#]/(# AiryBi[#]) &,
             -t^(2/3) Fold[#1/t^2 + #2 &,
                           {18683371/1244160, -181223/207360, 35/288, -7/48, 1}]]]

Using biPrimeZero[] as an example,

biPrimeZero[Range[10], 20]
   {-2.2944396826141232466, -4.0731550890718282156, -5.5123957296635994963,
    -6.7812944459903053900, -7.9401786891685789267, -9.0195833587942390674,
    -10.0376963349085458018, -11.0064626677122899404, -11.934261645014844663,
    -12.827258309177217640}

With aiPrimeZero[], aiPrimeZero[1] unfortunately does not return a result close to the actual first root of AiryAiPrime[]; the other roots, however, do well:

aiPrimeZero[Range[2, 10], 20]
   {-3.2481975821798365379, -4.8200992111787356394, -6.1633073556394865476,
    -7.3721772550477701771, -8.4884867340197221329, -9.5354490524335474707,
    -10.5276603969574072820, -11.4750566334802452949, -12.384788371845747325}
J. M.'s missing motivation
  • 124,525
  • 11
  • 401
  • 574