next up previous contents index
Next: What to Modify Up: Modifying the Templates Previous: Subroutine Dependencies   Contents   Index

Under the Hood

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 the manifold.

The sg_min routine parses the arguments and sets the defaults. Finally, it calls sg_newton, sg_dog,sg_frcg, or sg_prcg.

The pseudocode for sg_newton and sg_frcg (as examples) are given in the boxes below.

\fbox{
\par
\begin{minipage}{4 in}
\par
\footnotesize{
\begin{tabbing}
\hspace{2...
...
\> {\bf end}\\
\> fn = f;\\
\> Yn = Y;\\
\end{tabbing}}
\par
\end{minipage}}

\fbox{
\par
\begin{minipage}{4 in}
\par
\footnotesize{
\begin{tabbing}
\hspace{2...
...; \\
\> {\bf end}\\
\> fn = f;\\
\> Yn = Y;\\
\end{tabbing}}
\end{minipage}}

These are fairly generic routines for optimization. At this level of description, one would not necessarily be able to tell them from unconstrained routines (see [170,192,368,338]). What places them on the Stiefel manifold are the definitions of grad, dgrad, ip (the dot product), and move, which have been made in such a way that the constraints of the Stiefel manifold are respected. Likewise, sg_dog and sg_prcg have been similarly transported.


next up previous contents index
Next: What to Modify Up: Modifying the Templates Previous: Subroutine Dependencies   Contents   Index
Susan Blackford 2000-11-20