Anonymous user
Numerical integration: Difference between revisions
→{{header|REXX}}: optimized the ƒ function (it's about 4% faster).
m (→{{header|REXX}}: optimized two subroutines.) |
(→{{header|REXX}}: optimized the ƒ function (it's about 4% faster).) |
||
Line 4,286:
=={{header|REXX}}==
Note: there was virtually no difference in accuracy between '''numeric digits 9''' (the default) and '''numeric digits 20'''.
<lang rexx>/*REXX pgm performs numerical integration using
numeric digits 20 /*use twenty decimal digits precision. */
Line 4,295:
if test==4 then do; L= 0; H= 6000; i= 6000000; end
say center('test' test, 79, "═") /*display a header for the test suite. */
say ' left rectangular('L", "H', 'i") ──► "
say ' midpoint rectangular('L", "H', 'i") ──► "
say ' right rectangular('L", "H', 'i") ──► "
say ' Simpson('L", "H', 'i") ──► "
say ' trapezium('L", "H', 'i") ──► "
end /*test*/
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
f:
/*──────────────────────────────────────────────────────────────────────────────────────*/
left_rect: procedure expose test; parse arg a,b,n; $= 0; h= (b-a)/n
do x=a by h for n;
return $*h/1
/*──────────────────────────────────────────────────────────────────────────────────────*/
do x=a+h/2 by h for n;
return $*h/1
/*──────────────────────────────────────────────────────────────────────────────────────*/
right_rect: procedure expose test; parse arg a,b,n; $= 0; h= (b-a)/n
do x=a+h by h for n;
return $*h/1
/*──────────────────────────────────────────────────────────────────────────────────────*/
Simpson: procedure expose test; parse arg a,b,n; h= (b-a)/n; hh= h/2
@= 0;
return h
/*──────────────────────────────────────────────────────────────────────────────────────*/
trapezium: procedure expose test; parse arg a,b,n; $= 0; h= (b-a) / n
do x=a by h for n;
return $*h/2</lang>
{{out|output|text= when using the default inputs:}}
<pre>
|