Normal matrices, diagonalizable matrices, orthogonal matrices, unitary matrices… the classes of matrices used in math, computer science and other areas can be quite complex and difficult to grasp sometimes. To get an overview of the different classes of complex n-by-n matrices, I made the following diagram:

Taxonomy of n-by-n matrices (PDF version) **– with hyperlinks to Wikipedia articles and legend**

This diagram is released as cc-by-sa. That means you can use and modify it, as long as you acknowledge me (just link to this page), and publish any modifications also under cc-by-sa.

In this diagram, each rectangle represents one set of complex n-by-n matrices. Arrows represent subset relations. There is lots of information in there, and every arrow tells a story. For instance, all rotation matrices have determinant 1, explaining the arrow from “Rotation matrices” to “Real unit-determinant matrices”. I also colored the classes which are closed under matrix multiplication in blue. Also, I noted down the corresponding multiplicative group, for instance SO(n) with rotation matrices.

There are likely errors in there: I tried to be as diligent as possible, but with the large amount of information compressed into a single diagram, there are bound to be errors. Please comment if you find one! Also, I did not include lesser-known classes of matrices (such as unistochastic or co-positive matrices), matrices whose definition makes use of the ordering of row and column indices (such as triangular or tridiagonal matrices) and classes that are not closed under the transpose operation (such as left and right stochastic matrices).

A few other observations:

- The identity matrix is everything except skew-symmetric or skew-Hermitian.
- The top of the hierarchy are diagonalizable and invertible matrices.
- Are doubly stochastic matrices a subset of any other class?
- What are the name of the groups generated by multiplication of double stochastic matrices?
- There is a one-to-one correspondence between several complex and real classes. This is however not systematic. For instance, real symmetric matrices can be generalized to complex symmetric matrices, and also to Hermitian matrices.
- Many classes have alternate names. For instance, Hermitian matrices are called self-adjoint, and rotation matrices are called special orthogonal.

UPDATE

**The PDF version now contains hyperlinks to the Wikipedia articles about the matrix classes and groups.****Added symplectic and unimodular matrices**

**Added a legend****Added cc-by-sa license**

cool.

1) woulda been better to say it in terms of tranformations rather than matrices. specific coords are necessary.

2) left out projections.

*Un*-nessecary. I meant.

Why won’t you say that all white boxes are classes closed under addition? One could even be more precise and say that all of them are closed under convex combinations and some allow arbitrary linear combinations.

I would also include nilpotent and idempotent matrices (projections) as well as three other classes closed under addition: (real/complex) triangular matrices, (real) triangulizable matrices.

Oh, sorry. Have not seen, why you’re not including triagonal. But real triangulizable matrices are closed under simultaneous row&column reordering.

Thanks for your comments

* About transformation vs matrices: This is a good idea. Actually, I’m wondering whether the classes would be exactly the same, or if there would be some slight differences? Maybe I should do a “Taxonomy of transformations” to go with it.

* Projections: They are definitely missing. They are a subset of “Real positive-semidefinite”, correct?

* White boxes are closed under addition: I totally missed that one. What’s interesting here is that the non-white boxes are *not* closed under addition, exception “Diagonal” and “Real diagonal”. Also agree about convex and linear combinations.

* Nilpotent matrices: I’ll have to think where they fit in…Can you give me a hint?

* Idempotent matrices: Are they equivalent to projection matrices, or are they a larger class? Any other inclusions with them?

* Triangular matrices: I left them out in order for all classes to be invariant under simultaneous permutation of rows and columns. Maybe I should do an extended version including them

* Triangulizable matrices: Hadn’t heard of them before. (Thought the Schur decomposition makes sure all real matrices can be written as QRQ’ with Q orthogonal and R triangular. I don’t know for complex matrices.)

* Projections: They are definitely missing. They are a subset of “Real positive-semidefinite”, correct?

Yes. Additionally, they are real diagonalizable.

Doubly stochastic matrices are also positive-semidefinite, due to Birkhoff-von Neumann theorem.

* White boxes are closed under addition: I totally missed that one.

You mention that colored boxes are closed under certain operations and don’t mention, that white boxes are closes under certain other operations. It’s a pity.

* Idempotent matrices: Are they equivalent to projection matrices

Yes, they are.

* Triangulizable matrices

In the complex case, all square matrices are triangularisable, in the real case it’s not true. Real triangulizable matrices are precisely the matrices with real eigenvalues. They just form a large class of square real matrices, that includes diagonalizable matrices. Example of matrices that are not triangualizable are the rotation matrices: they have imaginary eigenvalues.

Oh, special linear groups exist only at even orders, so it should be SL(2n, RR) and SL(2n, CC), what’s also definitely missing is SL(2n,ZZ).

thanks for the overview. It helped me a lot.

However, I found one mistake: Symmetric and Skewsymmetric Matrices in C are not necessariliy normal in C, not even necessariliy diagonalisable in C. I guess, there is nothing more to say about them, then that they are square matrices.

Interesting work. Have you also tried/intend to describe these matrices by developing an ontology?

Hi Dim

thanks for your comment; what kind of ontology are you thinking of?

Cheers

Jérôme

Hi Jerome,

I was wondering if you plan to add semantics to your taxonomy, by the use of RDFS,OWL or WSML for example.