NUMAL Section 4.2.1.B
BEGIN SECTION : 4.2.1.B (July, 1974)
AUTHOR: H.N.GLORIE.
CONTRIBUTOR: H.FIOLET.
INSTITUTE: MATHEMATICAL CENTRE.
RECEIVED: 730606.
BRIEF DESCRIPTION:
INTEGRAL CALCULATES THE DEFINITE INTEGRAL OF A FUNCTION OF ONE
VARIABLE, OVER A FINITE OR INFINITE INTERVAL OR OVER A NUMBER OF
CONSECUTIVE INTERVALS.
KEYWORDS:
DEFINITE INTEGRAL,
INFINITE INTERVAL,
SIMPSON RULE,
RICHARDSON CORRECTION.
CALLING SEQUENCE:
THE HEADING OF THE PROCEDURE READS:
"REAL" "PROCEDURE" INTEGRAL(X,A,B,FX,E,UA,UB);
"VALUE" A,B;"REAL" X,A,B,FX;"ARRAY" E;"BOOLEAN" UA,UB;
"CODE" 32051;
INTEGRAL:
DELIVERS THE COMPUTED VALUE OF THE DEFINITE INTEGRAL OF THE
FUNCTION FROM A TO B; AFTER SUCCESSIVE CALLS OF THE PROCEDURE,
THE INTEGRAL OVER THE TOTAL INTERVAL IS DELIVERED, I.E. THE
VALUE OF A IN THE LAST CALL WITH UA="TRUE" IS THE
STARTING POINT OF THE INTERVAL.
THE MEANING OF THE FORMAL PARAMETERS IS:
X: <VARIABLE>;
INTEGRATION VARIABLE; X IS USED AS JENSEN-PARAMETER
FOR FX.
A,B: <ARITHMETIC EXPRESSION>;
THE INTERVAL OF INTEGRATION IS EITHER (A,B) OR
(A,INFINITY) (SEE PARAMETER UB); B<A IS ALLOWED;
FX: <ARITHMETIC EXPRESSION>;
THE INTEGRAND F(X);
E: <ARRAY IDENTIFIER>;
"ARRAY" E[1:6];
ENTRY : E[1]:THE RELATIVE ACCURACY REQUIRED;
E[2]:THE ABSOLUTE ACCURACY REQUIRED;
E[5]:ALTERNATIVE STARTING POINT (SEE PAR. UA);
EXIT: E[3]:THE NUMBER OF SKIPPED INTEGRATION STEPS;
E[4]:THE VALUE OF THE INTEGRAL FROM A TO B;
E[5]:"IF" UB "THEN" B "ELSE" 0;
E[6]:"IF" UB "THEN" F(B) "ELSE" 0;
UA: <BOOLEAN EXPRESSION>;
DETERMINES THE STARTING POINT OF THE INTEGRATION;
STARTING POINT:="IF" UA "THEN" A "ELSE" E[5];
UB: <BOOLEAN EXPRESSION>;
DETERMINES THE FINAL POINT OF THE INTEGRATION;
FINAL POINT:="IF" UB "THEN" B "ELSE"
"IF" B>A "THEN" +INFINITY "ELSE" -INFINITY;
IN THE CASE UB="FALSE" , THE VALUE OF B IS STILL RELEVANT
(SEE METHOD AND PERFORMANCE).
PROCEDURES USED: NONE.
REQUIRED CENTRAL MEMORY:
EXECUTION FIELD LENGTH: CIRCA 16 + 5 * RECURSION LEVEL.
RUNNING TIME: DEPENDS STRONGLY UPON THE INTEGRAL TO BE COMPUTED.
LANGUAGE: ALGOL 60.
METHOD AND PERFORMANCE:
INTEGRAL USES THE SUBPROCEDURE QAD FOR THE CALCULATION OF THE
DEFINITE INTEGRAL OVER A FINITE INTERVAL. THIS IS DONE BY MEANS OF
SIMPSON 'S RULE WITH RICHARDSON CORRECTION.IF THE FOURTH DERIVATIVE
IS TOO LARGE (AND THUS THE CORRECTION TERM) , THE TOTAL INTERVAL IS
SPLIT INTO TWO EQUAL PARTS AND THE INTEGRATION PROCESS IS INVOKED
RECURSIVELY. THIS IS DONE IN SUCH A WAY THAT THE TOTAL AMOUNT OF
RICHARDSON CORRECTIONS IS SLIGHTLY SMALLER THAN OR EQUAL TO
E[1] * ABS ( THE INTEGRAL FROM A TO B OF (FX) ) + E[2].
THE INTEGRATION OVER AN INFINITE INTERVAL REQUIRES TWO CALLS OF THE
PROCEDURE QAD. IN THE FIRST CALL QAD COMPUTES THE DEFINITE INTEGRAL
FROM A TO B . IN THE INTERVAL FROM B TO + OR - INFINITY
THE INTEGRAND IS TRANSFORMED BY MEANS OF THE SUBSTITUTION
Z=1/(X+1-B) TO THE DEFINITE INTEGRAL OF F(B-1+1/Z)/Z**2 FROM 0 TO
1. FOR THE INTEGRATION OF A DEFINITE INTEGRAL OVER A FINITE
INTERVAL THE USE OF QADRAT IS RECOMMENDED ,ESPECIALLY WHEN HIGH
ACCURACY IS REQUIRED.
REFERENCES:
[1] T.J.DEKKER AND C.J.ROOTHART.
INTRODUCTION TO NUMERICAL ANALYSIS.(DUTCH)
MATH.CENTR. REPORT CR 24/71, AMSTERDAM.
[2] C.J.ROOTHART AND H.FIOLET.
QUADRATURE PROCEDURES.
MATH.CENTR. REPORT MR 137/72, AMSTERDAM.
EXAMPLE OF USE:
"BEGIN"
"ARRAY" E[1:6];"REAL" A,B,X;"BOOLEAN" UA,UB;
UA:="TRUE";E[1]:=E[2]:="-14;
"FOR" B:=2,4,20,100 "DO"
"BEGIN" UB:=B<50;
A:=INTEGRAL(X,-1,-B,10/X**2,E,UA,UB);
OUTPUT(61,"("N,B+DDB,N,2(B+DDDB),/")",
A,E[3],E[4],E[5],E[6]);
UA:="FALSE"
"END"
"END"
DELIVERS:
-4.9999999999999"+000 +00 -4.9999999999999 -002 +003
-7.4999999999998"+000 +00 -7.4999999999998 -004 +001
-9.5000000000000"+000 +00 -9.5000000000000 -020 +000
-9.9999999999998"+000 +01 -9.9999999999998 +000 +000 .
SOURCE TEXT(S):
"CODE" 32051;