# How can I get my ListPlot to go from {x,-10,10} on x?

• Mathematica
I have some code that is basically taking a range of energies, putting them into some recurrence equations and solving, and then I want to plot the results.

Code:
\[HBar] = 1;
m = 1;

Do[Energy[z] = 0.5 + 5 z, {z, 0, 14}]
Table[Energy[z], {z, 0, 14}];
Do[Entot[n, o] = Energy[o] - \[HBar]*\[Omega]*n, {n, -10, 10}, {o, 0,
14}]
Do[k[n, o] = 2*m*(Entot[n, o])^(1/2), {n, -10, 10}, {o, 0, 14}]
\[Omega] = 1;
s = 10;
k0 = 10;
\[Alpha] = 10;
t0 = 1;
t[-11] = 0.01;
t = 0.01;
r[-11] = 0.01;
r = 0.01;
ClearAll[plot1]
Do[eqn[n, o] = -t[n] +
KroneckerDelta[n,
1] + (s*m/(2*\[HBar]^2*I*k[n, o]))*(t[n - 1] +
t[n + 1]), {n, -10, 10}, {o, 0, 14}];
tab1 = Table[eqn[n, o], {o, 0, 14}, {n, -10, 10}];
tab2 = Table[t[n], {n, -10, 10}];

Do[plot1[p] = NSolve[tab1[[p]] == 0, tab2], {p, 1, 15}]
Do[f[n, o] = t[n] /. plot1[o], {n, -10, 10}, {o, 1, 15}]
ListPlot[Abs[
Table[Flatten[Table[f[n, o], {n, -10, 10}]], {o, 1, 15}]],
PlotRange -> {0, 1.5}, PlotLegends -> Automatic]
At the moment, the ListPlot at the bottom takes the index of the list, so it goes from 0 to 21. But really, this should go from -10 to 10, following the iteration of n. I have tried everything it seems, from making my table go like [{n,f[n,o]},{n,-10,10}] but this doesn't work. I've tried making a separate list of n's and then transpose this with the f's, but as f is going over o as well, I think the length discontinuity is causing issues.

Any help would be much appreciated, and apologies if my code's a mess, I'm very much a rookie.

Thanks!

Related MATLAB, Maple, Mathematica, LaTeX News on Phys.org
jedishrfu
Mentor
Can you create list pairs? The examples I saw of listplot adjusted the x axis when list pairs were used.

Can you create list pairs? The examples I saw of listplot adjusted the x axis when list pairs were used.

I tried that but due to my list being effectively a list with 21 elements, with 15 in each element, it can't be done simply it seems, I think I need some tricky syntax

Dale
Mentor
I have tried everything it seems, from making my table go like [{n,f[n,o]},{n,-10,10}]
This is the right way to do it. What error did you get when you tried this?

Try just one fixed value of o first.

This is the right way to do it. What error did you get when you tried this?

Try just one fixed value of o first.
It doesn't get an error per say, but the graph it spits out is wrong, if I look at just one o I get a 2 sets of data plotted (or so it seems) one that's a straight line going from -10 to 10 in y (no idea why) and then roughly the right shape of the graph for f, but x now goes from 0 to 42.

jedishrfu
Mentor
List pairs are:

(-3,9), (-2,4), (-1,1),(0,0), (1,1),(2,4),(3,9)...

ListPlot will then adjust the X-axis to match the axes to range of x values and the range of y values which in this case is
x: -3 to 3 and y:0 to 9

List pairs are:

(-3,9), (-2,4), (-1,1),(0,0), (1,1),(2,4),(3,9)...

ListPlot will then adjust the X-axis to match the axes to range of x values and the range of y values which in this case is
x: -3 to 3 and y:0 to 9
I've been trying to do this but I think the issue is my code isn't quite {x1,y1},{x2,y2} etc, I have several values for each x

Dale
Mentor
It doesn't get an error per say, but the graph it spits out is wrong, if I look at just one o I get a 2 sets of data plotted (or so it seems) one that's a straight line going from -10 to 10 in y (no idea why) and then roughly the right shape of the graph for f, but x now goes from 0 to 42.