Many matrix variables

88 views
Skip to first unread message

bahu....@gmail.com

unread,
Jun 26, 2014, 1:26:46 PM6/26/14
to manopt...@googlegroups.com
I want to minimize a real valued function of n matrices V_i (each N x d with d<N) under orthogonality constraints V_i'*V_i=Id(d) for all i. How is this possible with Manopt?

BM

unread,
Jun 26, 2014, 1:42:22 PM6/26/14
to manopt...@googlegroups.com
Hello,

You can use the powermanifold tool, details in http://manopt.org/tutorial.html#tools

For your specific case, you can follow the following steps.

M = stiefelfactory(N, d); % For each V_i
Mn = powermanifold(M, n); % n times repetition of M

An element of Mn is represented as a cell of length n.

Regards,
BM

bahu....@gmail.com

unread,
Jun 27, 2014, 2:06:22 AM6/27/14
to manopt...@googlegroups.com
Thanks!

Nicolas Boumal

unread,
Jun 27, 2014, 7:55:08 AM6/27/14
to manopt...@googlegroups.com
A more efficient way is to use the stiefelfactory, like so:

manifold = stiefelfactory(N, d, n);

Your points will be represented as 3D arrays (3D matrices) of size N x d x n, each slice being orthonormal. Tangent vectors are also represented as 3D matrices of the same size.

Cheers,
Nicolas

bahu....@gmail.com

unread,
Jul 5, 2014, 3:27:37 AM7/5/14
to manopt...@googlegroups.com
Thanks! Thus if n=2, then this might be a typical cost function:
problem.cost = @(X) -trace(X(:,:,1)'*A1*X(:,:,1)+X(:,:,2)'*A2*X(:,:,2));
How would the gradient and the Hessian look like?

BM

unread,
Jul 5, 2014, 7:45:11 AM7/5/14
to manopt...@googlegroups.com
Hello,

A point to note here is that there is symmetry in your cost function. For example, the transformation X(:, :, 1) -----> X(:, :, 1)*Q does not change the cost function for all orthogonal matrices of d-by-d, Q'*Q = Q*Q' = I.  Similarly for X(:, :, 2). Therefore, the optimization should be on the product of the Grassmann manifolds and not on the product of the Stiefel manifolds.

Attached is the code for your cost function.

Regards,
BM

Test_grassmann_samyak.html

bahu....@gmail.com

unread,
Jul 5, 2014, 9:23:15 AM7/5/14
to manopt...@googlegroups.com
This is great! The code will be of help not only to me. Thanks!
Reply all
Reply to author
Forward
0 new messages