At each stage in the globally adaptive algorithm a selected subregion
must be subdivided. A simple natural subdivision method is to cut at the midpoint
of each edge, but this produces
pieces.
Another problem with this subdivision is that it is not as
adaptive as the method we use because this subdivision is done without any
analysis of the integrand, even though the error for the integral over a
selected subregion is often due to irregularity of the integrand in only a
small number of directions. Our subdivision strategy, which uses a division of
the largest error subregion into at most four new pieces, and which takes
account of differences in integrand behavior in different directions, allows
the algorithm to proceed from one stage to the next in a controlled manner.
The subdivision procedure that we use, is a modified version of a procedures
first described in [17] and further developed (for
= 2 only) in
[14]. Once a subregion has been selected for subdivision, the
globally adaptive algorithm used by CUBPACK will recommend a subdivision into
at most 2, 3 or 4 pieces, depending on the current progress of the integration.
Our subdivision procedure then divides the subregion by cutting one, two or
three edges of the selected subregion to produce a 2-division, 3-division or
4-division of the selected subregion, respectively.
An
-simplex has
edge directions, and our algorithm chooses subdivision directions from these
directions.
In order for the algorithm to be efficient, a method is needed for selecting
good edges for subdivision, and therefore some measure of integrand
irregularity is needed. A popular measure of integrand irregularity
that has been successfully used with adaptive algorithms for hyper-rectangles
is a fourth difference of the integrand. We follow this approach, using
modifications of the methods described in [17] and [14].
Our simplex algorithm uses
fourth differences centered at the centroid of the selected simplex.
Let
be the vertices
of the current largest error simplex subregion
, and let the edge
directions be given by
, for
.
Now define
, with
(the centroid of
).
Then a fourth difference operator for the
direction is given by
The edges for subdivision are edges
where
is large.
Let
. If a 2-division has been recommended,
then let
. Two new subregions are
produced from
that have the same vertices as
except that the
and
vertices are respectively replaced by
. For a
3- or 4-subdivision let
.
If a 4-division has been recommended, and
(the
two edges with largest
values have similar
values), then our algorithm
first divides
into two pieces using the algorithm for a 2-division and
then halves each of the two new pieces by bisection of the
edge for
each piece. If either a 3-division has been recommended, or a 4-division is
recommended but
, then our algorithm considers
two possible 3-divisions. Let vertex index
be defined by
.
The vertices indexed by
,
and
define a triangle. Now order
these vertices, by exchanging
and
if necessary, so that
. If
(the largest
value edge has
significantly larger than the other
's), then the edge
is
trisected, producing three new equal volume subregions of
.
Otherwise, the edge
is cut at the point
, and two subregions
of
are produced. The subregion that has the original edge
is
then divided into two pieces by cutting that edge at the midpoint. The final
result is three new equal volume subregions of
.
The heuristic factors
and
used at steps 2 and 2c in our procedure
were selected after extensive testing of the algorithm (see the next section).
The cost of determining the subdivision of
is
values. The actual cost per new subregion is at most approximately
values, and this is small compared to the cost
of computing the local rules when the local rule has degree at least seven.