I have a large matrix, say En En, as a function of two variables x and y which has En eigenvalues. I want to use ContourPlot to show specific eigenvalue, say (En/2)+1 with respect to x and y. For small En this can be done but it did not work for large En. For example, with En=8 it gives the desired result, but for larger En not working.
M1={{0, I Sin[x] + Sin[y], 3 - Cos[x] - Cos[y], -1}, {-I Sin[x] + Sin[y],
0, -1, 3 - Cos[x] - Cos[y]}, {3 - Cos[x] - Cos[y], -1,
0, -I Sin[x] - Sin[y]}, {-1, 3 - Cos[x] - Cos[y], I Sin[x] - Sin[y],
0}};
tc={{0, 0, 0, 0}, {0, 0, 0, 0}, {-1, 0, 0, 0}, {0, -1, 0, 0}};
Mn[n_] :=
SparseArray[{Band[{1, 1}, {4 n, 4 n}] -> {M1},
Band[{1, 5}, {4 n, 4 n}] -> {tc},
Band[{5, 1}, {4 n, 4 n}] -> {ConjugateTranspose[tc]}}]
w = 2; En = 4 w;(*w must be >1*)
ContourPlot[
Evaluate[Eigenvalues[N@Mn[w]][[En/2 + 1]] == 0.4], {x, -2,
2}, {y, -2, 2}, ContourShading -> None, ContourStyle -> Blue]
this is the result with w=2 (i.e En=8) How can I do the same for w=40 (En=160)?
I try w=3 and got this error "Eigenvalues::eival: Unable to find all roots of the characteristic polynomial." and this is the final output:




w=40? (Does it give a blank graph, an error message,...) – mikado Mar 30 '20 at 13:51