Dear Joeseph,
the thing is that if you put it in a for loop it calculates but does not display everything. You can generate a list of all the results and append the images to that like so:
m1 = 1;
m2 = 1;
k2 = 1000;
eom1 = m1 x1''[t] + k1 (x1[t] - x2[t]) == 0;
eom2 = m2 x2''[t] + k1 (x2[t] - x1[t]) == 0; results = {}; For[
k1 = 1000, k1 <= 1500, k1 = k1 + 100,
sol = NDSolve[{eom1, eom2, x1[0] == 0, x2[0] == 0, x1'[0] == 1,
x2'[0] == 0}, {x1[t], x1'[t], x2[t], x2'[t]}, {t, 0, 5}];
AppendTo[results, Plot[Evaluate[x1'[t] /. sol], {t, 0, 5}, PlotPoints -> 100]]]
If you then evaluate "results" you obtain he same image as above. This is not elegant though. Have you thought about using the powerful ParametricNDSolve function?
m1 = 1;
m2 = 1;
k2 = 1000;
eom1 = m1 x1''[t] + k1 (x1[t] - x2[t]) == 0;
eom2 = m2 x2''[t] + k1 (x2[t] - x1[t]) == 0; results = {}; sol =
ParametricNDSolve[{eom1, eom2, x1[0] == 0, x2[0] == 0, x1'[0] == 1,
x2'[0] == 0}, {x1[t], x1'[t], x2[t], x2'[t]}, {t, 0, 5}, {k1}];
Manipulate[Plot[Evaluate[x1'[t][k1] /. sol], {t, 0, 5}, PlotPoints -> 100], {k1,1000, 1500}]
This gives a dynamics interface:
This here for example would give you the list of graphics in steps of 100:
Table[Plot[Evaluate[x1'[t][k1] /. sol], {t, 0, 5}, PlotPoints -> 100], {k1, 1000, 1500, 100}]
Best wishes,
Marco