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.