Assume your square matrix has hidden symmetries, which allow to blockdiagonalize it to several smaller matrices. Also assume that at the moment I don't want to fully diagonalize the resulting blocks (because that would give a pig of an eigenvector using JordanDecomposition[] naively - whereas symmetry-adapted blockdiagonalization uses just a few linear combinations from the character table of the symmetry group). Can I "automatize" that (instead designing a similarity transformation matrix from the character table by hand)?

EDIT: Maybe a simple example is in order. Eigenvalues[{{a,b,c},{c,a,b},{b,c,a}}] correctly splits into a+b+c and already somewhat messy, but it would be easier to view if recombining the pair of E symmetry to reals, and if it's an analog C3v symmetric matrix with a1,a2,b1,b2,c1,c2 the E symmetry eigenvalues are a horrible mess and the blocks are best left undiagonalized.

SON OF EDIT: Here is an example with very high symmetry (T) from knot theory. Observe that I have the three sets (J,H,X),(T,U,V),(Q,R,S,QQ,RR,SS) which are symmetric among themselves but not with the other sets. (V is not the V below, etc. !) Some linear dependent rows/columns added to underline symmetry - they of course can be deleted after blockdiagonalization again. Undiagonalized Blockdiagonalized by hand plus WolframAlpha using a repeated similarity block V (still have to double-check the result). Blockdiagonalized Note that in the end, you have to zero the determinant of the block matrices anyway, but it is far more efficient to block first than to factor later!

  • $\begingroup$ In your example m[a_,b_,c_]:={{a,b,c},{c,a,b},{b,c,a}} what if you compute the eigenvectors of a matrix with more symmetries such as B=Transpose[Eigenvectors[m[0,1,1]]] and use that as in Inverse[B].m[a,b,c].B? I have not really understood if you are interested in symbolic or numeric matrices. Also, m[a,b,c] has three distinct eigenvalues in general, and I am not sure if I understand in what sense it has a hidden symmetry, can you spell it out (not just words but formulas)? $\endgroup$
    – user293787
    Oct 8, 2022 at 17:07
  • $\begingroup$ Let p={{0,1,0},{0,0,1},{1,0,0}} (or some other permutation matrix). Then m.p=m holds (or was it p.m=m?) and, with r=(-1)^(2/3), Factor[CharacteristicPolynomial[m],Extension->{r,r^2}] will completely factor into linears. (This is the crucial property.) For the C3v example, it is fairly trivial to do by hand: Inverse[V].m.V, where V={{1,1,1},{-1,0,1},{0,-1,1}} splits off the A1 symmetry (eigenvalue a+b+c) and doesn't attempt to split the E pair a+r*b+r^2*c,a+r^2*b+r*c. (Disclaimer: At the moment I only have wolframalpha, not Mathematica. and didn't check the details.) $\endgroup$ Oct 9, 2022 at 7:33
  • $\begingroup$ I understand that all matrices of the form m[a,b,c] commute pairwise (your p is in that family) and can be simultaneously diagonalized (via a DFT) and therefore, as you point out, the eigenvalues are linear functionals of a,b,c. Could you clarify what you mean by "analog C3v symmetric matrix with a1,a2,b1,b2,c1,c2", and maybe include at least one explicit example that you consider non-trivial, so that the challenge that you are posing becomes clear. $\endgroup$
    – user293787
    Oct 9, 2022 at 9:31
  • $\begingroup$ Easy: Let ´m[{params_}]:={{a,b,c,g,h,i},{c,a,b,i,g,h},{b,c,a,h,i,g},{g,i,h,d,e,f},{h,g,i,f,d,e},{i,h,g,e,f,d}}]` (I surely got a swap error in there ruining the symmetry but I guess you know what I mean.) Now a complete diagonalization gives a horror of an eigenvalue. Instead, V={{1,1,1,0,0,0},{-1,0,1,0,0,0},{0,-1,1,0,0,0},{{0,0,0,1,1,1},{0,0,0,-1,0,1},{0,0,0,0,-1,1}} (two copies of the V above) is the best you can do to get a similar matrix that is still "readable". Thus in the ideal case Mathematica a) automatically identifies the maximum sensible symmetry (hard), [continued] $\endgroup$ Oct 10, 2022 at 7:18
  • 1
    $\begingroup$ In general, your problem does not have a solution besides using known symmetries. Imagine you fully diagonalize the matrix and then apply some arbitrary transformation to make it block-diagonal. That is clearly not what you want. But you can ask a simpler question: bring a matrix to a block-diagonal form using only permutations of rows and columns. This is mathematically better posed and has a solution. $\endgroup$
    – yarchik
    Oct 10, 2022 at 8:14

1 Answer 1


This isn't a direct answer, but it's a pointer to a solution to a very similar nontrivial problem that may yield a strategy for your problem.

In Reducing to Irreducible Representations I made some progress towards an arbitrary simultaneous block-diagonalizer.

Fortunately, if you know the symmetry group, you can use the SBD routine of Bischer, Döring, and Trautner, in the supplementary material for "Simultaneous block diagonalization of matrices of finite order" 2021 J. Phys. A: Math. Theor. 54 085203 doi.org/10.1088/1751-8121/abd979

I'm not sure if your problem can ultimately be phrased in their language, where the goal is to simultaneously block-diagonalize a set of unitary matrices.

What you need to do is

  1. Pick a set of generators for your group.
  2. Construct a matrix representation of those generators for each irrep (this is annoying).

Then their SBD routine solves the problem, providing a unitary matrix which block-diagonalizes the non-block-diagonalized generators you provide.

  • $\begingroup$ Even if not a direct answer, this is very helpful. $\endgroup$ Oct 15, 2022 at 7:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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