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;