Implementation of Youla Decomposition for a square skew-symmetric matrix

I am looking for a publicly-available software package (preferably in Python, but I'll take what I can get) capable of performing a decomposition of a real $n\times n$ skew-symmetric (sometimes called anti-symmetric) matrix $\textbf{A} = - \textbf{A}^T$. I have seen this decomposition referred to as the Youla decomposition, for example, in this Wikipedia article. I don't want to assume that this terminology is well-known, so I will describe the decomposition here.

The decomposition consists in finding an orthogonal matrix $\textbf{Q}$ such that $$\textbf{A} = \textbf{Q} \Sigma \textbf{Q}^T \,,$$

and $\Sigma$ is of the form: $$\Sigma = \begin{bmatrix} \begin{matrix} 0 & \lambda_1\\ -\lambda_1 & 0\end{matrix} & 0 & \cdots & 0 \\ 0 & \begin{matrix}0 & \lambda_2\\ -\lambda_2 & 0\end{matrix} & & 0 \\ \vdots & & \ddots & \vdots \\ 0 & 0 & \cdots & \begin{matrix}0 & \lambda_r\\ -\lambda_r & 0\end{matrix} \\ & & & & \begin{matrix}0 \\ & \ddots \\ & & 0 \end{matrix} \end{bmatrix} \,.$$ for real $\lambda_k$.

• If nothing else, you can get this decomposition by leveraging software that does spectral decompositions or singular value decompositions – Omnomnomnom Jul 13 '18 at 17:17
• Can you be more specific please? Would this software give me this decomposition directly, or would it give me an intermediate result which I could then use to easily get the decomposition? – Surgical Commander Jul 13 '18 at 17:44
• It would give you an intermediate result which you could use to easily get the decomposition – Omnomnomnom Jul 13 '18 at 17:46
• It seems like simply applying Schur's algorithm (e.g. in Julia or Mathematica) gives this decomposition automatically. I'm a bit surprised, because the general form of the Schur decomposition returns an upper triangular matrix, not on of this form above. – Surgical Commander Jul 17 '18 at 16:07
• Interesting idea. Perhaps the Julia/Mathematica Schur decomposition algorithm is set to give a Real Schur decomposition in certain cases. Because $A$ is normal, any unitary block upper-triangularization will yield a block diagonalization. – Omnomnomnom Jul 17 '18 at 16:15