# How to graph a series of coupled oscillators and watch the wave move along them

Here are the differential equations that set's up the 11 coupled oscillators.

new = Join[
Table[x[i]''[t] == - x[i][t] +
0.1*(x[i + 1][t] - 2*x[i][t] + x[i - 1][t]), {i, 1,
9}], {x''[t] == -x[t], x''[t] == x[t], x == 1,
x' == 1, x' == 0, x == 0},
Table[x[i] == 0, {i, 2, 10}], Table[x[i]' == 0, {i, 2, 10}]]


Here are the solutions.

Solt = NDSolve[new, Table[x[i], {i, 0, 10}], {t, 25}]


Here are the individual plots.

Table[Plot[Evaluate[x[i][t] /. Solt], {t, 0, 25},
PlotRange -> All], {i, 0, 10}]


I am trying to figure out how to make a graph so along the x-axis are my i's from 0 to 10, and I can watch the wave move along each oscillator as time moves on. I keep getting errors in which it floods my notebook and doesn't stop unless I close the kernel.

This is what I have so far, and I'm not sure how to incorporate time into this.

Plot[Evaluate[x[i][t] /. Solt], {i, 0, 10}]


EDIT Coupled in a circle

Stew = Join[
Table[x[i]''[t] == - x[i][t] +
0.1*(x[i + 1][t] - 2*x[i][t] + x[i - 1][t]), {i, 1,
9}], {x''[t] == - x[t] +
0.1*(x[t] - 2*x[t] + x[t]),
x''[t] == - x[t] +
0.1*(x[t] - 2*x[t] + x[t])}, {x == 0,
x' == 0, x == 1, x' == 0.5},
Table[x[i] == 0, {i, 2, 10}], Table[x[i]' == 0, {i, 2, 10}]];


The Dsolve

Loin = NDSolve[Stew, Table[x[i], {i, 0, 10}], {t, 6.28}]


The individual graphs

Table[Plot[Evaluate[x[i][t] /. Loin], {t, 0, 6.28},
PlotRange -> All], {i, 0, 10}]


How would I go about putting the i=0 to 10 around in a circle?

After edit

I think oscillation directions should be parallel.

g[t_] = Table[{Cos[i*2 Pi/11], Sin[i*2 Pi/11], x[i][t]} /. Loin[], {i, 0, 10}];

Animate[
Show[
ListPointPlot3D[g[t], PlotRange -> 1.5, BoxRatios -> 1, Filling -> Axis,
PlotStyle -> Directive@AbsolutePointSize@7, Boxed -> False],
ParametricPlot3D[{Cos@t, Sin@t, 0}, {t, 0, 2 Pi}, PlotStyle -> {Dashed, Black}]
,
ImageSize -> 500, ViewVector -> {{Cos[t/15], Sin[t/15], 1} 11, {0, 0, 0}},
AxesOrigin -> {0, 0, 0}, Ticks -> None, Axes -> True, AxesStyle -> {Red, Green, Blue},
SphericalRegion -> True],
{t, 0, 50}] Before edit

f[t_] = Table[{i, x[i][t]} /. Solt[], {i, 0, 10}];

Animate[
ListPlot[f[t], PlotRange -> {{0, 11}, {-1.5, 1.5}},
Joined -> True, PlotMarkers -> Automatic]
, {t, 0, 25}
]


Good to notice: In f[t] definition := is intentionally replaced by =. • wow that's fantastic!!!! – Slightly Jun 13 '13 at 21:21
• I may be making another question where I couple the last point to the first point. I would then want to make the same type if thing, but take the i's and put them around in a circle. so that the 10 is equal to the 0. I already have all the individual plots of this, I would just need some guidance to how to put them in a circle instead of a line. – Slightly Jun 13 '13 at 21:22
• @James Edit this question. Put new code and questions here. I think there is no need to make another. May be You could also analyze this solution and answer Your own question. Tip: Table[{Cos[i*2Pi/11],Sin[i*2Pi/11],x[i][t]},{i,0,10}] – Kuba Jun 13 '13 at 21:30
• Hmm. let me see if I can come up with something – Slightly Jun 13 '13 at 21:38
• Would I have to use a parametric plot? – Slightly Jun 13 '13 at 21:45

Solution by @Kuba can be easily extended to put the oscillators on a circle.

Loin = NDSolve[Stew, Table[x[i], {i, 0, 10}], {t, 50}];

fr[t_] = Transpose@{Most@Range[0, 2 Pi, 2 Pi/11], x[#][t]&/@Range[0, 10]} /. First@Loin;

r0 = 3;
Animate[
ListPlot[
Function[{th, r}, {(r0 + r) Cos[th], (r0 + r) Sin[th]}] @@@ fr[t],
PlotRange -> {{-5, 5}, {-5, 5}}, AspectRatio -> 1,
Prolog -> {Gray, Circle[{0, 0}, 3]}, Axes -> False,
PlotMarkers -> Automatic],
{t, 0, 50}] • That isn't working for me. And I wanted the 2nd edited part of the equation to be in a circle because they are all connected. – Slightly Jun 13 '13 at 22:20
• So replace the Solt with Loin. – mmal Jun 13 '13 at 22:24
• I got it. Thank you so much. – Slightly Jun 13 '13 at 22:25