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;