I've come up with the following piece of Python code (using the library Sympy):

def double_diagonalize(m1, m2):
    V, _ = (m1.T * m2).diagonalize()
    U, _ = (m1 * m2.T).diagonalize()
    return U, V

What I've found is that given many (but not all) random pairs of $ n \times n$ matrices $M_+$ and $M_-$, it produces $U$ and $V$ such that both $U^{-1} M_+ V^{-T}$ and $U^T M_- V$ evaluate to diagonal matrices.

My question is, is this result known? And by what name? It looks similar to Generalised Schur Decomposition except that the matrices $U$ and $V$ are not necessarily unitary, and the (pair of) "normal forms" $U^{-1} M_+ V^{-T}$ and $U^T M_- V$ are usually fully diagonal instead of merely upper triangular.

It might be related to this as well: https://en.wikipedia.org/wiki/Eigendecomposition_of_a_matrix#Generalized_eigenvalue_problem


It's the solution of the product eigenvalue problem $M_1^T M_2$, once you transpose the second relation.

  • $\begingroup$ I'm reading the paper you linked to $\endgroup$ – ogogmad Sep 18 '20 at 8:30
  • $\begingroup$ I'm not sure you will find that exact decomposition there (since it does not always exist, and orthogonal decompositions are preferred in computational practice), but that is the framework under which your problem falls in today's research terms in computational linear algebra. $\endgroup$ – Federico Poloni Sep 18 '20 at 8:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.