NUMAL Section 5.2.1.1.1.1.A

BEGIN SECTION : 5.2.1.1.1.1.A (February, 1979)

PROCEDURE : RK1

AUTHOR:J.A.ZONNEVELD.

CONTRIBUTORS: M.BAKKER AND I.BRINK.

INSTITUTE: MATHEMATICAL CENTRE.

RECEIVED: 730715.

BRIEF DESCRIPTION:

    RK1 SOLVES AN INITIAL VALUE PROBLEM FOR A SINGLE FIRST ORDER
    ORDINARY DIFFERENTIAL EQUATION    DY / DX  = F(X,Y).
    THE EQUATION IS SUPPOSED TO BE NON-STIFF.

KEYWORDS:

    INITIAL VALUE PROBLEM.
    SINGLE FIRST ORDER ORDINARY DIFFERENTIAL EQUATIONS.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS:
    "PROCEDURE" RK1(X,A,B,Y,YA,FXY,E,D,FI);
    "VALUE" B,FI;
    "REAL" X,A,B,Y,YA,FXY;
    "BOOLEAN" FI;
    "ARRAY" E,D;
    "CODE" 33010;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    X:    <VARIABLE>;
          THE INDEPENDENT VARIABLE.
          UPON COMPLETION OF A CALL
          X IS EQUAL TO B;
    A:    <ARITHMETIC EXPRESSION>;
          ENTRY: THE INITIAL VALUE OF X;
    B:    <ARITHMETIC EXPRESSION>;
          ENTRY: A VALUE PARAMETER,GIVING THE END VALUE OF X;
    Y:    <VARIABLE>;
          THE DEPENDENT VARIABLE;

    YA:   <ARITHMETIC EXPRESSION>;
          ENTRY :  THE VALUE OF Y AT X=A;
    FXY:  <ARITHMETIC EXPRESSION>;
          AN EXPRESSION,DEPENDING ON X AND Y,GIVING THE VALUE OF DY/DX;
    E:    <ARRAY IDENTIFIER>;
          "ARRAY" E[1:2];
          ENTRY:
          E[1] : A RELATIVE TOLERANCE,
          E[2] : AN ABSOLUTE TOLERANCE ;
    D:    <ARRAY IDENTIFIER>;
          "ARRAY" D[1:4];
          EXIT:
          ENTIER(D[1]+.5) GIVES THE NUMBER OF STEPS SKIPPED;
          D[2] : EQUALS THE STEP LENGTH;
          D[3] : IS EQUAL TO B;
          D[4] : IS EQUAL TO Y(B);
    FI:   <BOOLEAN EXPRESSION>;
         IF FI="TRUE" RK1 INTEGRATES FROM X=A TO X=B WITH INITIAL VALUE
         VALUE Y(A)=YA AND TRIAL STEP B-A. IF FI="FALSE" RK1 INTEGRATES
          FROM X=D[3] TO X=B WITH INITIAL VALUE Y(D[3])=D[4]  AND FIRST
          STEP H=D[2]*SIGN(B-D[3]), WHILE A AND YA ARE IGNORED.

PROCEDURES USED: NONE.

REQUIRED CENTRAL MEMORY : NEGLIGIBLE SMALL.

METHOD AND PERFORMANCE:
RK1 IS BASED ON AN EXPLICIT, 5-TH ORDER RUNGE-KUTTA METHOD AND
IS PROVIDED WITH STEPLENGTH AND ERRORCONTROL. THE ERRORCONTROL
IS BASED ON THE LAST TERM OF THE TAYLOR SERIES WICH IS TAKEN INTO
ACCOUNT. A STEP IS REJECTED IF THE ABSOLUTE VALUE OF THIS LAST TERM
GREATER THAN  (ABS(FXY)*E[1]+E[2])*ABS(H)/INT, WHERE
INT = ABS( B-( "IF" FI "THEN" A "ELSE" D[3])) DENOTES THE LENGTH
OF THE INTEGRATION INTERVAL, OTHERWISE, A STEP IS ACCEPTED.
RK1 USES AS ITS MINIMAL ABBSOLUTE STEPLENGTH  HMIN = E[1]*INT+E[2].
IF A STEP OF LENGTH ABS(H) = HMIN  IS REJECTED,  THE STEP IS SKIPPED.
FOR FURTHER DETAILS SEE [1].

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

EXAMPLE OF USE:

    THE SOLUTION OF THE DIFFERENTIAL EQUATION DY/DX=-Y
    WITH INITIAL CONDITION Y(0)=1 AT X=1 IS COMPUTED
    BY MEANS OF THE FOLLOWING PROGRAM:

    "BEGIN"
    "REAL" X,Y;
    "BOOLEAN" FI,FIRST;
    "REAL" "ARRAY" E[1:2],D[1:4];

    E[1]:=+"-4;E[2]:=+"-4;FIRST:="TRUE";
    RK1(X,0.0,1,Y,1.0,-Y,E,D,FIRST);
    OUTPUT(61,"("//10B"("X=")".12D"2D,//10B"("Y=")".12D"2D,
    10B"("YEXACT=")".12D"2D")",X,Y,EXP(-X));
    "END"

    IT DELIVERS WITH E[1]=E[2]="-4:
          X=.100000000000"01

          Y=.367876846355"00          YEXACT=.367879441171"00

SOURCE TEXT(S):
"CODE" 33010;