MatrixEquations.jl icon indicating copy to clipboard operation
MatrixEquations.jl copied to clipboard

Orthogonal transformation between commuting matrices

Open blegat opened this issue 2 years ago • 4 comments

In SumOfSquares, we have pairs of commuting matrices A, B and need to compute an orthogonal transformation X such that X * A = B * X. This is implemented in orthogonal_transformation_to. It basically calls schur(A) and schur(B) but then it's a bit subtle since the schur decomposition is not unique so we need to canonicalize in a similar way for both. It looks a bit like some of the equations of this package so I was wondering if it could fit into one of them.

blegat avatar Sep 25 '23 18:09 blegat

Could you provide a link to orthogonal_transformation_to? What mathematical condition guarantees the existence of an orthogonal solution?

andreasvarga avatar Sep 27 '23 14:09 andreasvarga

It's there https://github.com/jump-dev/SumOfSquares.jl/blob/6ad333b54524aa15ca47be20572bf9d82bfa56c4/src/Certificate/Symmetry/block_diag.jl#L3-L179 I'm not sure what is the condition actually. I just assume that there must exist one

blegat avatar Sep 27 '23 15:09 blegat

The fact that A and B are commuting (i.e., AB = BA) does guarantee the existence of an orthogonal solution? I was not able to find such a result in the literature.

andreasvarga avatar Sep 27 '23 15:09 andreasvarga

Thanks for the literature search. Indeed, I don't think the commuting property is the right one. Actually there are pairs of matrices that do not commute for which I can find such orthogonal matrix.

blegat avatar Sep 27 '23 19:09 blegat