NUMAL Section 5.2.1.1.2.1.A

BEGIN SECTION : 5.2.1.1.2.1.A (February, 1979)
PROCEDURE : RK2.

AUTHOR: J.A.ZONNEVELD.

CONTRIBUTORS: M.BAKKER AND I.BRINK.

INSTITUTE: MATHEMATICAL CENTRE.

RECEIVED: 730715.

BRIEF DESCRIPTION:

    RK2 INTEGRATES THE SCALAR INITIAL VALUE PROBLEM
    (D/DX) (D/DX) Y  = F(X, Y, (D/DX)Y), A<= X <=B OR B <= X <= A,
    Y(A) AND (D/DX) Y(A) PRESCRIBED.

KEYWORDS:

    INITIAL VALUE PROBLEM,
    SECOND ORDER DIFFERENTIAL EQUATION.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS:
    "PROCEDURE" RK2(X, A, B, Y, YA, Z, ZA, FXYZ, E, D, FI);
    "VALUE" B, FI; "REAL" X, A, B, Y, YA, Z, ZA, FXYZ;
    "BOOLEAN" FI; "ARRAY" E, D;
    "CODE" 33012;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    X:  <VARIABLE>;
        THE INDEPENDENT VARIABLE;
    A:  <ARITHMETIC EXPRESSION>;
        THE INITIAL VALUE OF X;
    B:  <ARITHMETIC EXPRESSION>;
        THE END VALUE OF X, (B <= A IS ALLOWED);
    Y:  <VARIABLE>;
        THE DEPENDENT VARIABLE;
        EXIT :  THE VALUE OF Y(X) AT X = B;
    YA:  <ARITHMETIC EXPRESSION>;
        ENTRY : THE INITIAL VALUE OF Y AT X = A,
    Z:  <VARIABLE>;
        THE DERIVATIVE DY / DX;
        EXIT : THE VALUE OF Z(X) AT X = B;
    ZA:  <ARITHMETIC EXPRESSION>;
        ENTRY : THE INITIAL VALUE OF (D/DX) Y AT X = A;
    FXYZ:  <ARITHMETIC EXPRESSION>;
        THE RIGHT HAND SIDE OF THE DIFFERENTIAL EQUATION;
        FXYZ DEPENDS ON X, Y, Z, GIVING THE VALUE OF (D/DX) (D/DX) Y;
    E:  <ARRAY IDENTIFIER>;
        "ARRAY" E[1 : 4];
        E[1] AND E[3] ARE USED AS RELATIVE , E[2] AND E[4] ARE USED
        AS ABSOLUTE TOLERANCES FOR Y AND DY / DX, RESPECTIVELY;
    D:  <ARRAY IDENTIFIER>;
        "ARRAY" D[1 : 5];
        EXIT:
            ENTIER(D[1] + .5)     =    THE NUMBER OF STEPS SKIPPED,
                   D[2]           =    THE LAST STEP LENGTH USED,
                   D[3]           =    B,
                   D[4]           =    Y(B),
                   D[5]           =    (D/DX) Y, FOR X = B;
    FI:  <BOOLEAN EXPRESSION>;
        IF FI = "TRUE" THEN THE INTEGRATION STARTS AT X=A  WITH A TRIAL
        STEP B - A ; IF FI = "FALSE" THEN THE INTEGRATION IS CONTINUED
        WITH,AS INITIAL CONDITIONS, X = D[3], Y = D[4], Z = D[5], AND
        A, YA AND ZA ARE IGNORED.

PROCEDURES USED: NONE.

METHOD AND PERFORMANCE :
    THE PROCEDURE, WHICH IS PROVIDED WITH STEPLENGTH AND ERROR CONTROL,
    IS BASED ON A 5-TH ORDER RUNGE-KUTTA METHOD.
    A COMPLETE DESCRIPTION IS GIVEN IN [1].

REFERENCES:

    [1]. J.A.ZONNEVELD.
    AUTOMATIC NUMERICAL INTEGRATION.
    MATH. CENTRE TRACT 8 (1970).

EXAMPLE OF USE:

    THE VAN DER POL EQUATION

        (D/DX) (D/DX) Y = 10*(1-Y**2)*(DY/DX) - Y, X >= 0,
        Y = 2, DY/DX = 0                , X=0

    CAN BE INTEGRATED BY THE PROCEDURE RK2; AT THE POINTS
    X = 9.32386578, 18.86305405, 28.40224162, 37.94142918
    THE DERIVATIVE DY / DX VANISHES; THE PROGRAM WHICH SOLVES THE VAN
    DER POL EQUATION READS AS FOLLOWS (WITH E[I] = "-8, I = 1,...,4):

    "BEGIN" "COMMENT" VAN DER POL;
        "REAL" X,Y,Z,B; "BOOLEAN" FI; "ARRAY" E[1:4],D[1:5];
        E[1]:=E[2]:=E[3]:=E[4]:="-8;
        "FOR" B:=9.32386578,18.86305405,28.40224162,37.94142918 "DO"
        "BEGIN" FI:= B<10;
            RK2(X,0.0,B,Y,2.0,Z,0.0,10*(1-Y**2)*Z-Y,E,D,FI);
            OUTPUT(61,"("//10B"("X=")"2D.10D,10B"("Y=")"+2D.10D   ,
            10B"("DY/DX =")",+.5D"-D")",X,Y,Z)
        "END"
    "END"

    RESULTS:

      X=09.3238657800      Y=-02.0142853609      DY/DX=+.00000"00

      X=18.8630540500      Y=+02.0142853609      DY/DX=-.00001"00

      X=28.4022416200      Y=-02.0142853609      DY/DX=+.00001"00

      X=37.9414291800      Y=+02.0142853608      DY/DX=-.00002"00

SOURCE TEXT(S):
"CODE" 33012;