Suppose that one wishes to optimize a real-valued function
over
such that
, where
is either
transpose or Hermitian transpose as appropriate. Our
template is designed as a means to optimize such an
.
One simple case is optimization over square orthogonal (or unitary)
matrices such as the least squares simultaneous
diagonalization of symmetric matrices
(also known as INDSCAL [107])
problem described later.
Another simple case is optimization over the unit sphere, as in
symmetric Rayleigh quotient minimization. In between, we have rectangular (
) matrices
with orthonormal columns such as
the orthogonal Procrustes problem.
Furthermore, some functions may have the symmetry property
for all orthogonal (unitary)
with a specified
block-diagonal structure, which causes some search directions to have no
effect on the value of
. For example, if
is a symmetric
matrix,
, and
, then
for all
orthogonal
. More generally, some functions
have the property that
, where
is
orthogonal (unitary) with the block-diagonal form
This chapter is organized as follows. §9.4.2 discusses the basics of calling the template code. §9.4.3 discusses the objective functions and their derivatives for the example problems explored in this chapter. §9.4.4 contains sample runs of instances of the example problems. §9.4.5 explains the code structure and the places where a user may wish to make modifications. §9.4.6 will cover some of the basic mathematics concerning the geometry of the Stiefel manifold.