# The Chart of Matrix Eigenvalues : Energy Levels

There is the possibility that this question may have been asked previously, but as we are unfamiliar with the nature of the chart below, we hope to seek a response to this query.

Consider a matrix as follows:

matrix = {{0.1 j, 0, 0, 0.2 j, 0}, {0, 0.1 j, 0, 0.2 j, 0}, {0, 0.1 j,
0, 0, 0.2 j}, {0.1 j, 0, 0, 0, 0.2 j}, {0, 0, 0.1 j, 0.2 j, 0}};


In any choice of j which must be chosen in the range of [1,2,3,4], there is a set of eigenvalues (for this matrix we expect 5 eigenvalues for each j separately), we are going to draw a chart similar to

in which the vertical axes shows eigenvalues magnitude (from the lowest one to the largest for various j's). (however the real eigenvalues are not 1, 2, 3 for j=1 for the above defined matrix the plot is just a schematic picture of what we wish to have). Also (for j=1 and j=2) for instance there is a condition in which degeneracy is governed or the different between continuous eigenvalues for a special j is less than 10^-3, with a command same as:

Union[Eigenvalues[matrix] // N, SameTest -> (Abs[#1 - #2] < 10^-3 &)]


How we can draw this wish and with the last condition?

Clear[Hma];

n = 5;

Hma[j_Integer] = {{0.1*j, 0, 0, 0.2*j, 0}, {0, 0.1*j, 0, 0.2*j, 0}, {0, 0.1*j,
0, 0, 0.2*j}, {0.1*j, 0, 0, 0, 0.2*j}, {0, 0, 0.1*j, 0.2*j, 0}};

Eigenvalues[Hma[j]]}],
{j, n}], 1] // Chop;


data2 = Flatten[Table[Thread[{j,
Union[Eigenvalues[Hma[j]], SameTest -> (Abs[#1 - #2] < 10^-3 &)]}],
{j, n}], 1] // Chop;


There are no eigenvalues eliminated by your condition

Length[data1] == Length[data2]


True

ListPlot[data, Frame -> True,
FrameLabel -> {Style["J No.", Medium, Bold], Style["Values", Medium, Bold]}]


• @mr.0093, this is very easy to find in the documentation.... Commented Aug 15, 2015 at 21:00

I am not too clear about your last condition, however the following code could yield an output CLOSE to what you have in mind:

Hma[j_] = {{0.1*j, 0, 0, 0.2*j, 0}, {0, 0.1*j, 0, 0.2*j, 0}, {0,
0.1*j, 0, 0, 0.2*j}, {0.1*j, 0, 0, 0, 0.2*j},
{0, 0, 0.1*j, 0.2*j, 0}};

ListPlot[Table[Evaluate[Eigenvalues[Hma[j]]], {j, 1, 5, 1}],
Frame -> True, FrameLabel -> {Style["J No.", Large, Bold],
Style["Values", Large, Bold], Style["", Large, Bold]},
Ticks -> Automatic, LabelStyle -> Directive[Black, Bold, Large]]


Each colour denotes a distinct J. There is one eigenvalue for each J that seem very close to zero, so the last dot signifies these small values.

• Are you sure the defrerences of eigenvalues (for example for j=1) is same! the EigenValues@Hma/.j->1= {0.3, -0.273205, 0.1, 0.0732051, 3.93535*10^-17}, but there is no minus eigenvalues for j=1! Commented Aug 15, 2015 at 11:56
• Don't know what u mean.....the blue dot signifies J=1, and does go below zero in the plot.. Moreover you could modify the code. Commented Aug 15, 2015 at 12:05
• Besides, thanks for your try but I think there is a misunderstanding. Above j=1 must be put pertinent eigenvalues (eigenvalues related to j=1 in the matrix)! Commented Aug 15, 2015 at 12:16
• these numbers {0.3, -0.273205, 0.1, 0.0732051, 3.93535*10^-17} must be put above the j=1, Commented Aug 15, 2015 at 12:22
• Whati is "pertinent: eigenvalue? If you are after the magnitude, use "Abs" Commented Aug 15, 2015 at 12:23