In this section we discuss some of the practical issues for constructing visualizations. These issues fall between “theory” and “implementation.”
We define the set of tensors of separation rank at most by
The set is not a subspace, but is star shaped. Thus
is connected and simply connected, and the global
geometric and topological properties are simple. In order to study
more interesting geometric and topological properties of
,
we will consider tensors that are positive scalar multiples of one
another to be equivalent, and then ask about the geometry and topology
of this reduced set.
A visualization may be initialized by one of
In random entry mode, the initial parameters for the visualization are:
With these parameters we can randomly generate ,
, and (in the real case)
and start the
visualization. To minimize distortions in the visualization, we
normalize so
.
In manual entry mode, the initial parameters for the visualization are:
The tensors ,
, and (in the real case)
must have
consistent dimension
and resolutions
, but may have different ranks.
If ,
,
,
,
, or
change then we must start the
visualization over.
Although we talk of plotting points, we actually plot small discs of
some radius . As noted earlier, we plot dark discs over
light discs since the dark ones are more interesting. We may then have
the case where many light discs are used, but are covered by dark
discs and thus invisible. They then serve only to slow down the
software and so we wish to discard them. Determining if one disc is
covered by a set of discs is a fairly hard computational problem, so
we instead use an easy heuristic. We first sort all points by their
angle from small to large and initialize an empty list of kept points.
Looping through the points we check to see if the point is within
of any point in the kept list. If it is then we discard
this point and if it is not then we put it in the kept list.
We may also end up with points too distant from the ,
to be meaningful. In this case we discard
points outside of a user-defined rectangle.
If the rank of is less than or equal to
, then
and so it can be added to the visualization as a
black point.
If the sum of the ranks of and
is is less than
or equal to
, then all tensors on the line connecting
and
are in
, and can be colored
black in the visualization. In the real case the software then makes
available the option to include the points on these lines. In the
complex case this line is the entire visualization, so it is not
interesting, but can be used for testing and debugging.
In the real case, if the sum of the ranks of ,
,
and
is is less than or equal to
,
then
the entire plane should be black. This case is not interesting, but
can be used for testing and debugging.
The first strategy for generating points is to generate tensors in
and plot them using the projection technique to determine
the appropriate location and angle/color of the plotted point. The
strength of this approach is that we can rapidly generate many points.
The weakness of this approach is that many of these points are light
colored and so not very meaningful.
One technique is to simply generate elements of randomly.
A second technique is to start with a tensor that is in
and on the line/plane, and perform a random walk. Under the assumption that
, we can start with one of our
. By
randomly perturbing entries in its component vectors
, we
can generate a nearby point in
. We could simply allow the
random walk to continue, in which case we expect to drift away from
the line/plane. Alternatively, we could reject moves that result in angles
above some threshold and thereby restrict the walk to stay near the
line/plane.
A third technique is to use a homotopy to smoothly morph one point in
and on the line/plane to another such point. Calling the
component vectors
and
, we can generate new
component vectors
for
(or a larger interval). The intermediate points are in
and we can hope stay near the line/plane.
A fourth technique is to start with a tensor in but not on
the line/plane, and do a random walk with descent. Any move that increases
the angle is rejected
Note: These techniques have been tested but are not in the current software implementation.
The main alternative strategy is to generate tensors on the line/plane
and then test them for membership in . As noted earlier
this test is imperfect, and we also wish to include tensors in
that are near the line/plane in the visualization. We use
the following procedure:
When the ALS algorithm produces with
very
small then we can be confident that
(or is a limit of
elements in
). However, if
is large it may
just indicate that the algorithm failed. False negatives may be
identified when a light-colored point is surrounded by darker points.
With repeated application, false negatives may also become covered by
darker points.
The initial version of the ALS routine used here operates as follows.
On certain tests when it was know that the entire plotting plane was in
, and thus we should get solid black, intead this routine
achieved only yellow without even scattered black points (see A note on ALS failure). An improved
version of the ALS routine was then implemented that operates as follows.
In the test cases where the initial ALS failed to find black, the improved ALS succeeded in at least finding dark blue. It was notably slower than the original, perhaps indicating that the original was getting stuck in local minima and terminating early.
As noted earlier, in the real case is at
and
is in the direction
at location
. To ease the cognitive burden on the user,
coordinates that the user enters are scaled so that
corresponds to
. Similarly, in the complex case we
normalize so that
corresponds to
.