sg_min is built from a couple of fairly elementary optimization
codes which have been put through a geometrization that allows them to
be situated on the Stiefel manifold. The basic elements of a
geometrization are the rules for how to take inner products, how to
turn unconstrained differentials into constrained gradients, how to
differentiate gradient fields covariantly, and how to move about on
sg_min routine parses the arguments and sets the defaults.
Finally, it calls
The pseudocode for
sg_frcg (as examples)
are given in the boxes below.
These are fairly generic routines for optimization. At this level of
description, one would not necessarily be able to tell them from
What places them on the Stiefel manifold are
the definitions of
ip (the dot
move, which have been made in such a way that
the constraints of the Stiefel manifold are respected. Likewise,
sg_prcg have been similarly transported.