NUMAL Section 6.10.4

BEGIN SECTION : 6.10.4 (October, 1975)

AUTHOR : P.W.HEMKER.

CONTRIBUTOR : F.GROEN.

INSTITUTE : MATHEMATICAL CENTRE.

RECEIVED : 740620.

BRIEF DESCRIPTION :

    THIS SECTION CONTAINS TWO PROCEDURES FOR THE EVALUATION OF  AIRY
    FUNCTIONS AND COMPUTING THEIR ZEROS. FOR THE DEFINITION OF THESE
    FUNCTIONS SEE REF[1].

    AIRY EVALUATES THE AIRY FUNCTIONS AI(Z) AND BI(Z) AND
    THEIR DERIVATIVES.

    AIRYZEROS COMPUTES THE ZEROS AND ASSOCIATED VALUES
    OF THE AIRY FUNCTIONS AI(Z) AND BI(Z) AND THEIR DERIVATIVES.

KEYWORDS :

    AIRY FUNCTION,
    DERIVATIVE AIRY FUNCTION,
    ZERO OF AIRY FUNCTION.


SUBSECTION : AIRY.

CALLING SEQUENCE :

    THE HEADING OF THE PROCEDURE READS :

    "PROCEDURE" AIRY(X,AI,AID,BI,BID,EXPON,FIRST);
    "VALUE" X,FIRST; "BOOLEAN" FIRST;
    "REAL" X,AI,AID,BI,BID,EXPON;
    "CODE" 35140;

    THE MEANING OF THE FORMAL PARAMETERS IS :
    X:          <ARITHMETIC EXPRESSION>;
                ENTRY : THE REAL ARGUMENT OF THE AIRY FUNCTIONS.
    AI:         <VARIABLE>;
                EXIT :  THE  VALUE  OF  THE AIRY
                        FUNCTION AI IS GIVEN BY : EXP( -EXPON ) * AI.
                        NOTE :  IF X < 9 THEN EXPON = 0.
    AID:         <VARIABLE>;
                EXIT :  THE  VALUE  OF  THE  DERIVATIVE OF  THE AIRY
                        FUNCTION AI IS GIVEN BY : EXP( -EXPON ) * AID.
                        NOTE :  IF X < 9 THEN EXPON = 0.
    BI:         <VARIABLE>;
                EXIT :  THE  VALUE  OF  THE AIRY
                        FUNCTION BI IS GIVEN BY : EXP( EXPON ) * BI.
                        NOTE :  IF X < 9 THEN EXPON = 0.
    BID:         <VARIABLE>;
                EXIT :  THE  VALUE  OF  THE  DERIVATIVE OF  THE AIRY
                        FUNCTION BI IS GIVEN BY : EXP( EXPON ) * BID.
                        NOTE :  IF X < 9 THEN EXPON = 0.
    EXPON:      <VARIABLE>;
                EXIT : IF X < 9 THEN 0 ELSE 2/3 * X ** (3/2).
    FIRST:      <BOOLEAN EXPRESSION>;
                FIRST SHOULD BE "FALSE" UNLESS THE PROCEDURE IS CALLED
                FOR  THE  FIRST  TIME. IF FIRST IS "TRUE" THEN TWO OWN
                ARRAYS OF COEFFICIENTS ARE BUILT UP.

PROCEDURES USED : NONE.

REQUIRED CENTRAL MEMORY : TWO OWN ARRAYS OF ORDER 10 ARE DECLARED.

RUNNING TIME : IF 2.5 <= X <= 8 THEN ABOUT 8"-3 SEC., ELSE BETWEEN
    3"-3 AND 4"-3 SEC. ON THE CYBER 73/28.

LANGUAGE : ALGOL 60.

METHOD AND PERFORMANCE :

    SEE REF[2] OF THE SUBSECTION AIRYZEROS (THIS SECTION).

REFERENCES :

    SEE REFERENCES OF THE SUBSECTION AIRYZEROS (THIS SECTION).

EXAMPLE OF USE :

    "BEGIN" "REAL" A,B,C,D,E;
        AIRY(9.654894,A,B,C,D,E,"TRUE");
        OUTPUT(61,"("/,"("AI (9.654894) = ")",N")",A*EXP(-E));
        OUTPUT(61,"("/,"("AID(9.654894) = ")",N")",B*EXP(-E));
        OUTPUT(61,"("/,"("BI (9.654894) = ")",N")",C*EXP( E));
        OUTPUT(61,"("/,"("BID(9.654894) = ")",N")",D*EXP( E));
    "END"

    RESULTS :

    AI (9.654894) = +3.2873525549165"-010
    AID(9.654894) = -1.0297999323482"-009
    BI (9.654894) = +1.5583887049670"+008
    BID(9.654894) = +4.8010374682654"+008


SUBSECTION : AIRYZEROS.

CALLING SEQUENCE :

    THE HEADING OF THE PROCEDURE READS :

    "REAL" "PROCEDURE" AIRYZEROS(N,D,ZAI,VAI);
    "VALUE" N,D; "INTEGER" N,D; "ARRAY" ZAI,VAI;
    "CODE" 35145;

    AIRYZEROS := THE N-TH ZERO OF THE SELECTED AIRY-FUNCTION.

    THE MEANING OF THE FORMAL PARAMETERS IS :
    N :         <ARITHMETIC EXPRESSION>;
                ENTRY : THE NUMBER OF ZEROS TO BE CALCULATED;
    D :         <ARITHMETIC EXPRESSION>;
                ENTRY : AN  INTEGER  WHICH  SELECTS THE  REQUIRED AIRY
                        FUNCTION. D = 0, 1, 2 OR 3.
    ZAI :       <ARRAY IDENTIFIER>;
                "ARRAY" ZAI[1 : N];
                EXIT : ZAI[J] CONTAINS THE J-TH ZERO OF THE SELECTED
                       AIRY-FUNCTION :
                           IF D = 0 THEN AI(Z),
                           IF D = 1 THEN (D/DX) AI(X),
                           IF D = 2 THEN BI(X),
                           IF D = 3 THEN (D/DX) BI(X);
    VAI :       <ARRAY IDENTIFIER>;
                "ARRAY" VAI[1 : N];
                EXIT: VAI[J] CONTAINS THE VALUE AT X = ZAI[J] OF THE
                      FOLLOWING FUNCTION :
                          IF D = 0 THEN (D/DX) AI(X),
                          IF D = 1 THEN AI(X),
                          IF D = 2 THEN (D/DX) BI(X),
                          IF D = 3 THEN BI(X);

PROCEDURES USED :

    AIRY  = CP35140;

REQUIRED CENTRAL MEMORY : NO AUXILIARY ARRAYS ARE DECLARED.

RUNNING TIME : DEPENDENT ON THE VALUES OF N AND D. IN MOST CASES THE
    RUNNING TIME IS LESS  THAN  N * 0.01 SEC. ON THE CYBER 73/28.

LANGUAGE : ALGOL 60.

METHOD AND PERFORMANCE :

    A FIRST APPROXIMATION OF THE ZEROS OF THE SELECTED AIRY-FUNCTION IS
    CALCULATED BY MEANS OF THE ASYMPTOTIC EXPANSION ( SEE THE FORMULAS
    10.4.94 - 10.4.105 OF REF[1] ); THIS VALUE IS CORRECTED BY THE
    (REPEATED) USE OF A QUADRATIC INTERPOLATION RULE.
    THE  COMPUTED  ZEROS  WILL  SATISFY AT  LEAST ONE OF THE  FOLLOWING
    CONDITIONS :
    1: THE  ABSOLUTE  VALUE OF THE SELECTED AIRY-FUNCTION AT A COMPUTED
       ZERO IS LESS THAN "-12. NOTE: THE VALUES OF THE AIRY-FUNCTIONS
       ARE CALCULATED BY MEANS OF THE PROCEDURE AIRY (THIS SECTION).
    2: THE RELATIVE PRECISION OF THE COMPUTED  ZERO IS "-14.
    THE ASSOCIATED VALUES ( DELIVERED IN THE ARRAY VAI ) ARE ALSO
    CALCULATED BY MEANS OF THE PROCEDURE AIRY (THIS SECTION).

REFERENCES :

    [1] : M.ABRAMOWITZ AND I.A.STEGUN,
          HANDBOOK OF MATHMATICAL FUNCTIONS,
          DOVER PUBLICATIONS, INC. NEW YORK, 1965.

    [2] : R.G.GORDON,
          EVALUATION OF AIRY FUNCTIONS,
          THE JOURNAL OF CHEMICAL PHYSICS, VOLUME 51, 1969, PP. 23-24.

EXAMPLE OF USE :

    "BEGIN" "ARRAY" ZBI,VBID[1 : 3];
    OUTPUT(61,"("/"("THE THIRD ZERO OF BI(X) IS")"/,N,
                 /"("THE VALUE OF (D/DX)BI(X) IN THIS POINT IS")"/,N")"
                 ,AIRYZEROS(3,2,ZBI,VBID),VBID[3])
    "END"

    RESULTS :

    THE THIRD ZERO OF BI(X) IS
    -4.8307378416626"+000
    THE VALUE OF (D/DX)BI(X) IN THIS POINT IS
    +8.3699101261986"-001

SOURCE TEXT(S):

"CODE" 35140;
"CODE" 35145;