I am calculating, numerically, the zeros of a determinant. a1 and a2 are constants, q is a parameter. I would like to vary q and find the roots w as a function of q and plot roots w vs. q. All roots w associated with a q should be plotted "above/below" that q in the plot. For this determinant, I have eight roots w corresponding to each value of q. Thus, my final plot should consist of 8 dots placed above and/or below the corresponding q-value. The q-value should be on the horizontal axis.
ClearAll["Global`*"]
(*constants*)
a1 = 2; a2 = 3;
(*determinant*)
det[q_, w_] := (1 - q/w^2 (1 + Exp[-2 a1 q ] 1/(2 w^2 - 1))) (1 -
q/w^2 (1 + Exp[-2 q] 1/(2 w^2 - 1))) -
q^2/w^4 (Exp[-q Abs[a1 - a2]] +
Exp[-q (a1 + a2)] 1/(2 w^2 - 1)) (Exp[-q Abs[a2 - a1]] +
Exp[-q (a2 + a1)] 1/(2 w^2 - 1));
(*numerical solve*)
sol = NSolve[det[q, w] == 0, w];
(*build table for {q,{w1,w2,w3,w4,w5,w6,w7,w8}} pairs*)
MF = Table[{q, sol[[All, 1, 2]]}, {q, 0, 2, 0.5}] // MatrixForm;
(*this should be plotted on the horizontal axis*)
xvar = Table[MF[[1, ii]][[1]], {ii, 1, 5}];
(*this should be plotted on the vertical axis*)
yvar = Table[MF[[1, ii]][[2]], {ii, 1, 5}];
(*my listplot*)
Show[ListPlot[{xvar, #}] & /@ yvar]
the problem with the plot (below) is that xvar-s are also plotted against the vertical axis (blue dots) yvar-s (orange dots) are plotted at x=1, x=2 etc. instead of the corresponding q-values, which, in this case, are 0, 0.5, 1, 1.5 etc.
(I have two questions: 1. How can I get the plot I want? 2. Is there a better way of doing this?)