%
define main % This module is a trapezoidal rule integration program. % For any supplied function f(X:double_real), it takes % double real inputs defining endpoints of the interval % to be integrated over, a double real tolerance, and an % integer count of sub-intervals to divide the interval % into. It returns an array of double_real values of the % numerical value of the definite integral over the interval, % the number of refinement iterations made, the number of % subintervals actually used to arrive at the final result, % and the total number of subinterval area calculations made. type One_Dim_D = array [ double_real ]; type Two_Dim_D = array [ One_Dim_D ]; % INSERT FUNCTION F HERE % %=============================================================== function f( x : double_real returns double_real ) 15.0d0 * x * x * x - 6.375d0 * x * x + 11.9d0 * x - 33.999d0 end function %% f %=============================================================== function trap_area( left_end, right_end : double_real returns double_real ) % Calculates the area of a trapezoid let h := right_end - left_end; f_avg := ( f(left_end) + f(right_end) )/2.0d0 in h * f_avg end let end function %% trap_area %=============================================================== function main( a, b : double_real; % Endpoints of integration % interval epsilon : double_real; % tolerance initial_n : integer; % Initial number of % subintervals returns One_Dim_D, % values of approximation % of definite integral integer, % iteration counter integer ) % number of subintervals % finally used for initial N := initial_n; Total_N := N; Cnt := 1; H := (b - a) / double_real(N); Area := for i in 1, N ai := a + double_real(i-1) * h; bi := ai + h; returns value of sum trap_area( ai, bi ) end for repeat N := old N * 2; Total_N := old Total_N + N; Cnt := old Cnt + 1; H := old H / 2.0d0; Area := for i in 1, N ai := a + double_real(i-1) * h; bi := ai + h; returns value of sum trap_area( ai, bi ) end for until abs( area - old area ) < epsilon | Cnt > 12 returns array of Area value of Cnt value of N value of Total_N end for end function %% main %%